Мне интересно, есть ли способ идти слово за словом, используя Ctrl + ->
как в остальных редакторах.
2 ответа
Попробуйте использовать w для перемещения слово за словом. Словесные движения быстрее в Vim. Команды w, b, e и ge позволяют нам двигаться вперед или назад к началу или концу слова. смотрите :help word
в vim для получения дополнительной информации.
Вот ссылка на отличный ответ о неправильном использовании vim:
Посмотрев на это на нескольких компьютерах ...
В Linux с использованием Gnome Terminal эта функция работает сразу после установки. (именно поэтому romainl спрашивает, пытались ли вы это сделать)
В Mac OS 10.8 (Mountain Lion)
Control + Arrow Key попадает под контроль миссии и меняет пространство или перемещает экран. Чтобы отключить это, перейдите в «Системные настройки» -> «Клавиатура» -> «Сочетания клавиш» -> «Управление полетом» и снимите флажки со всеми, у которых есть ctrl + стрелка (элемент управления обозначен ^
)
После того, как это сделано. Ctrl + Arrow работает в iTerm2 без возни с vim.
Однако он не работает сразу в VIM в терминале. Почему-то управляющая стрелка соответствует удалению до конца строки. (Что похоже на то же поведение, что и в bash).
Чтобы это исправить, вам нужно изменить то, что Terminal отправляет в виде строки символов при отправке Control Left и Control Right.
В Терминале зайдите в Настройки -> Настройки -> (Используемый профиль) -> Клавиатура
Измените курсор управления влево на \033[1;5D
и измените курсор управления вправо на \033[1;5D
. (Примечание: \033 вводится нажатием ESC)
После внесения этих изменений вы сможете использовать Control Left и Control Right для перемещения вперед или назад по словам.
Кроме того, в то время как Control Left и Control Right есть эквивалентные однобуквенные команды, чтобы сделать то же самое в обычном режиме. (<C-Left>
- Control + Left, а <S-Left>
- Shift + Left)
<C-Left> == B <S-Left> == b
<C-Right> == W <S-Right> == w
Посмотрите на :h b
и :h w
(Примечание: <S-Left>
и <S-Right>
могут не работать в Termianl, если вы не измените то, что отправляет терминал)