Я наконец решил отказаться от клавиш со стрелками для навигации в пользу hjkl
. Я использовал Vim hardmode
плагин для отключения клавиш со стрелками.
Я довольно быстро привык к навигации, но оказывается, что навигация в режиме вставки внезапно невозможна.
Есть ли решение для этого? (существующий режим вставки не является решением).
insert-mode
navigation
STDCALL
источник
источник
Ответы:
Есть много вариантов у вас есть. Один из вариантов, и IMO самый разумный и простой - это просто прекратить отключать клавиши со стрелками. Я понимаю, почему многие хардкорные виммеры говорят такие вещи, как
(Очевидно, я шучу) Однако, есть цель для клавиш со стрелками. Они чрезвычайно полезны для навигации:
В режиме вставки
В командной строке
Обычно, когда люди говорят вам не использовать клавиши со стрелками, это потому, что они хотят, чтобы вы переучивали навигацию более похожим на vim способом. Если вам удобно
hjkl
, и вы в основном используете клавиши со стрелками в режиме вставки, нет веской причины заставлять себя не использовать их.Вариант № 2 - переназначить,
ctrl-hjkl
чтобы действовать как клавиши курсора. Это хорошо, потому что вы можете оставаться на родине, и это хорошо сочетается с мышечной памятью, которую вы уже освоилиhjkl
в обычном режиме. На самом деле, это то, что я делаю . Основным недостатком этого подхода является то, что в терминале vim может возникнуть проблема с настройкой, поскольку он<C-j>
создаетNUL
байт. Я обхожу это с помощью Gvim. Я не знаю, есть ли простое решение для консоли VIM или нет.Вариант № 3 - использовать
<C-o>
для небольших движений в нормальном режиме. Например, если вы печатаетеи вы понимаете, что забыли запятую, вместо того, чтобы делать leftleftleftleftleftleft, вы можете просто сделать
<C-o>b<C-o>h
или<C-o>2Fo
, или любую другую комбинацию движений в нормальном режиме, которая вам нравится.Конечно, еще один вариант, который мне очень нравится, - это просто Escсделать несколько небольших движений, прежде чем вернуться в обычный режим. Вы упомянули, что не хотите этого делать, но иногда это действительно самый эффективный способ.
Возможно, есть и другие подходы, но мне они понравились.
источник
<c-o>gk
и<c-o>gj
вместо<Up>
и<Down>
. Это почему?gk
иgj
визуально идти вверх и вниз по линии, даже если строка обернута.noremap <Up> <NOP>
...) , В обычном режиме вы проводите достаточно времени, чтобы выучить HJKL, но они там, когда вам это нужно. Или, по крайней мере, я считаю, что это удобная середина между тем, чтобы оставлять их всегда выключенными или всегда включенными, и это не требует переназначения других клавиш (многим людям нравится Ctrl-HJKL для перемещения между панелями).Мне нравится использовать клавишу Control, чтобы превратить
hjkl
клавиши управления в «универсальные» клавиши управления движением. Вот соответствующая часть моего.vimrc
:В
inoremap
местозаполнителях в режиме вставки, в то время какcnoremap
те , применяются в командном режиме. (Я использовал это отображение так долго, что забыл, есть ли способ перемещаться по истории командного режима без него.)(Изменить: я вижу, что другой ответ уже упоминал эту возможность. Тем не менее, может быть полезно увидеть фактические команды отображения.)
источник
Нажмите, escзатем используйте hjklи wWbBи любые другие навигации, которые вы хотели бы сделать. Весь смысл сложного режима состоит в том, чтобы научить вас перемещаться с помощью более сложных движений vim. Сделайте небольшие правки, затем перейдите в новое место, используя обычный режим.
Если вы не хотите учиться перемещаться быстрее при включенном жестком режиме, посмотрите мой ответ на другой вопрос на ту же тему.
источник
Если вы хотите переместиться более чем на одну или две позиции ...
... лучший выбор - нажать
ESC
, переместиться и снова вернуться в режим вставки.Нет смысла создавать сопоставления, например,
<C-h>
перемещаться влево, а затем начинать нажимать его слишком много раз ... как пользователь vim, вы не должны нажимать одну и ту же клавишу несколько раз для достижения разумного движения.(Если
ESC
ключ не находится рядом с вашими пальцами, было бы неплохо создать для него сопоставление.)Если вы хотите переместить ОДИН или ДВЕ позиции в режиме вставки ...
... хорошим выбором было бы определить некоторые движения, используя ваш
<Leader>
ключ:(Я использую в
,
качестве<Leader>
ключа, так как он чувствует себя близко и удобно для моих пальцев)источник
Если вам просто нужно изменить небольшое количество текста или слова, вы можете использовать
<Ctrl-O>h/j/k/l
.<Ctrl-O>
возвращает вас в обычный режим только для этой команды, а затем переводит обратно в режим вставки, так что он экономит некоторое количество нажатий клавиш, если вам нужно перейти в обычный режим для небольшого движения.Ссылка: 1. http://vim.wikia.com/wiki/Use_Ctrl-O_instead_of_Esc_in_insert_mode_mappings
источник