4

Я знаю, что в режиме вставки я мог перемещаться по документу с помощью клавиш со стрелками или с помощью Ctrl-o, чтобы временно выйти из режима вставки. Мой вопрос: есть ли другой способ навигации по документам вместо использования этих клавиш или временного выхода?

Спасибо.

Хорошо, ребята, только что нашел решение для моего собственного вопроса, в котором я использую imap для сопоставления ключей в Vim в режиме вставки.

 imap <C-n> <Down>
 imap <C-p> <Up>
 imap <C-@> <C-Space>

4 ответа4

4

Еще одно возражение за комментарий @ garyjohn, здесь.

Следуя по этому пути, вы, безусловно, стреляете себе в ногу. Я вижу по крайней мере две большие ошибки в вашем подходе.

  • Как писал @garyjohn, вы "боретесь" против самого важного аспекта Vim. Модальность лежит в основе всего, что делает его потрясающим текстовым редактором. Если вы подумаете о его крутой кривой обучения, активное противодействие его дизайну не поможет вам продвинуться вперед.

  • Как и многие другие, вы сосредотачиваете свои усилия на "тупой Vim" на движениях вроде « <up> , « <down> и друзей. В Vim есть гораздо лучшие способы перемещения между буферами и между ними: wWeEbB/?tTfF{}[] и так далее. Все эти движения дают вам суперсилы. Все эти движения так или иначе зависят от модальности.

    Отказ от этих невероятно полезных инструментов сам по себе является очень серьезной ошибкой. Переотображать их было бы очень сложно и совершенно бесполезно.

    К вашему сведению, когда я запустил Vim, я потратил месяцы, пытаясь превратить его в клон TextMate. Попытка создать сопоставления в режиме вставки для всего была, вероятно, одной из самых разочаровывающих попыток за всю мою карьеру. Я узнал две вещи в процессе:

    1. мой любимый TextMate был сильно ослаблен по сравнению с Vim, так что не имело никакого смысла гнить Vim, и…

    2. режимы офигенного правила.

Примите философию Вима, а не отвергайте ее. Или отклоните его и используйте Sublime Text 2 вместо того, что нам важно.

3

Я согласен с @garyjohn - кроме того, Ctrl- n и Ctrl- p - это вещи, которые я использую для автозаполнения или автоматического завершения орфографии - я бы не привязывал их к чему-то другому. Тем не менее, Ctrl- w удалит одно слово перед курсором, а Ctrl- u удалит все перед курсором, так что, по крайней мере, вы можете использовать эти ярлыки (которые также работают в оболочке).

3

Просто чтобы забить этот дом: если вы долго находитесь в режиме вставки, вы делаете что-то не так. Шаблон в Vi(m): перемещаться в обычном режиме. Сделайте короткие вставки (слово здесь, предложение там). Или манипулируйте текстом с помощью Ex-команд, таких как :substitute . Повторение.

Попытайтесь научить себя выходить из режима вставки (через <Esc> , надеюсь, удобно доступный на клавиатуре), как только поток символов, исходящих из вашего мозга, начнет течь. Следующая вставка - просто i / a далеко.

0

Если вы хотите переместиться более чем на одну или две позиции ...

... лучший выбор - нажать ESC , переместиться и снова вернуться в режим вставки.

Нет смысла создавать сопоставления, такие как <C-h> чтобы двигаться влево, а затем начинать нажимать его слишком много раз ... как пользователь vim, вы не должны нажимать одну и ту же клавишу несколько раз для достижения разумного движения.

(Если клавиша ESC не находится рядом с вашими пальцами, было бы неплохо создать для нее сопоставление.)

Если вы хотите переместить ОДИН или ДВЕ позиции в режиме вставки ...

... хорошим выбором было бы определить некоторые движения с помощью клавиши <Leader> :

(Я использую , как клавишу <Leader> так как она чувствует себя близко и удобно для моих пальцев)

noremap! <Leader>h <left>   "move cursor left
noremap! <Leader>j <down>   "move cursor down
noremap! <Leader>k <up>     "move cursor up   
noremap! <Leader>l <right>  "move cursor right
noremap! <Leader>w <esc>wi  "move one word forward
noremap! <Leader>e <esc>ei  "move forward to the end of word
noremap! <Leader>b <esc>bi  "move one word backward

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .