Як повторити відображення при натисканні клавіші


11

У моїх .vimrcпростих відображеннях легко змінити розмір розділених вікон:

noremap <Leader><UP>    <C-w>+
noremap <Leader><DOWN>  <C-w>-

Це працює досить добре, але, наприклад, коли я хочу змінити розмір вікна в 10 рядків, я повинен натиснути і відпустити Leader+ UP10 разів.

Як я можу повторити це відображення під час натискання клавіш? Що я хочу, це коли я натискаю Leader+ UPвідображення буде застосовано один раз, після короткої тривалості воно буде застосовано ще раз і так далі, утримуючи клавіші.

Примітка. Я знаю, що можливий префікс <C-w>+за допомогою підрахунку, і я міг би його жорстко зафіксувати у картографуванні або просто ввести підрахунок перед використанням карти, але це не так, як я хочу це зробити.

Примітка2: Я також знаю, що популярним відображенням розміру вікна є використання +та -клавіші, які простіше натиснути кілька разів, але я не хочу використовувати ці клавіші для цього.

Відповіді:


14

Ви можете спробувати введення ... Vim подрежим ! Для вашого випадку щось подібне:

call submode#enter_with('grow/shrink', 'n', '', '<leader><up>', '<C-w>+')
call submode#enter_with('grow/shrink', 'n', '', '<leader><down>', '<C-w>-')
call submode#map('grow/shrink', 'n', '', '<down>', '<C-w>-')
call submode#map('grow/shrink', 'n', '', '<up>', '<C-w>+')

Це означає, що ви входите в підмоду за допомогою ( Leader-Upабо Leader-Down(який також зросте / зменшить вікно один раз), а потім - вам доведеться лише натиснути Upабо Downнаростити / зменшити вікно, поки не вийдете з підмоду.

Дивіться також довідку щодо проблем із затримкою, але, щоб її відключити:

"disable submode timeouts:
let g:submode_timeout = 0

... це означає, що ви будете залишатися в цьому субмодері нескінченно, доки не натиснете клавішу, відмінну від Upабо Down, або поки не натиснете Esc.

Друга корисна порада, яку я рекомендую:

" don't consume submode-leaving key
let g:submode_keep_leaving_key = 1

... що дозволяє переходити безпосередньо до наступних команд, натискаючи іншу клавішу. Наприклад, натискання :як вийде з підмоду, так і відкриє командний рядок.


Я спробував вам рішення, але це, здається, не працює: Коли я натискаю на <kbd> Leader </kbd> + <kbd> UP </kbd>, у мене з'являється повідомлення, --submode: grow/shrink --і вікно змінюється на один рядок, але команда isn ' т повтор. Я спробував це за допомогою 4 комбінацій g:submode_keep_leaving_keyта g:submode_timeoutдо 0 або 1. Я не впевнений, чи зробив я щось не так чи ні. Я зазвичай використовую vim в терміналі, але поки що я можу протестувати лише з gVim на windows, але я не впевнений, що це щось змінить.
statox

2
Команда автоматично не повторюється, ви повинні вдарити Upабо Downсебе стільки разів , скільки потрібно (але без печатки Leaderпершої)
VanLaser

О, я краще розумію код! Це чудово працює завдяки!
statox

2
Ідеальна відповідь та дивовижний плагін! (Примітка: перед тим, як додати вищевказані команди до свого плагіна, ви повинні встановити плагін vim-~/.vimrc
submode

1

За допомогою winresizer , натисніть Ctrl- eі змініть розмір!

Ви будете використовувати звичайні клавіші hjkl (а може бути і клавіші зі стрілками).

Ви можете "прийняти" розмір або "скасувати" його.

Існує також режим переміщення, де ви обмінюєте вікна навколо, і режим фокусування, коли ви перемикаєте вікно, в якому ви активні.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.