1

На Mac я могу перейти к началу и концу строки в vi, когда не в режиме INSERT:

^ (начало строки)
$ (конец строки)

Это, например, объясняется здесь:как мне сделать «end», «home», «page up» и «page down» в моем терминале / редакторе VIM?

Но как мне перейти к началу и концу строки в vi, когда в режиме INSERT?

cmd+/ прокрутка между окнами
alt+ идет назад на одно слово
Ctrl+/ ничего не делает
shift+/ идет назад /вперед на одно слово
ctrl+cmd+/ переходит назад /вперед на одно слово
fn+left/ переходит в начало /конец буфера терминала

Резюме решения, предоставленного @romainl ниже:
Терминал> Настройки> Настройки> Клавиатура> +
Ключ: Домой, Модификатор: Нет, Действие: Отправить текст, \017 ^
Ключ: Конец, Модификатор: Нет, Действие: Отправить текст, \017 $

Я нашел это очень аккуратное решение, которое сохраняет нажатие клавиши: перейти в начало строки в режиме вставки.

ctrl+o, за которым следуют 0 (домой) или $ (конец) или ^ (первый символ, не являющийся пробелом)

И вот очень сложный ответ: обход текста в режиме вставки

2 ответа2

1

Во-первых, вы не должны перемещать курсор в режиме вставки.

Во-вторых, только некоторые клавиатуры Mac поставляются без клавиш <Home>/<End> . Вы должны были присмотреться, прежде чем отдать все эти деньги за компьютер, который так болезненно использовать.

В-третьих, вы можете использовать следующие сочетания клавиш, когда у вас нет физических клавиш <Home>/<End> :

  • fn+ для <Home>
  • fn+ для <End>

В-четвертых, Terminal.app в любом случае захватывает <Home>/<End> поэтому вам придется редактировать эти привязки в окне "предпочтений", если вы хотите, чтобы Vim получал <Home> и <End> .

Для <Home> нажмите Ctrl+o (вставляет \017), затем ^:

Главная

Для <End> нажмите Ctrl+o (вставляет \017), затем $:

Конец

0

Системный файл gvimrc, распространяемый с MacVim, имеет два набора отображений. Один включен по умолчанию, другой отключен. Любопытно, что ни одна из них не содержит команды для перехода к началу / концу строки в режиме вставки, но все же стоит взглянуть:

:e $VIM/gvimrc

Вы можете добавить что-то в ваш файл vimrc, например:

inoremap <D-Left> <Home>
inoremap <D-Right> <End>

Небольшой тест показывает, что это работает в графическом интерфейсе, но не в терминале, так что, возможно, это должно идти в вашем файле gvimrc. Как насчет

inoremap <C-V><S-Left> <Home>
inoremap <C-V><S-Right> <End>

Там, где вы НЕ вводите эти команды буквально: <C-V> - один символ, а <S-Left> - другой. На моей машине, используя Mac Terminal.app, я получаю тот же эффект, напечатанный буквально:

inoremap <Esc>OC <End>
inoremap <Esc>OD <Home>

При использовании графического интерфейса это может быть перезаписано настройками в системном файле gvimrc.

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