Мне интересно, есть ли способ идти слово за словом, используя Ctrl + -> как в остальных редакторах.

2 ответа2

6

Попробуйте использовать w для перемещения слово за словом. Словесные движения быстрее в Vim. Команды w, b, e и ge позволяют нам двигаться вперед или назад к началу или концу слова. смотрите :help word в vim для получения дополнительной информации.

Вот ссылка на отличный ответ о неправильном использовании vim:

https://stackoverflow.com/a/1737259/975114

1

Посмотрев на это на нескольких компьютерах ...

В 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, если вы не измените то, что отправляет терминал)

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