Vim EasyMotion: вставить режим после движения?

Я переназначил команды EasyMotion ,,w и ,,b следующим образом:

imap ,w <ESC><leader><leader>w

imap ,b <ESC><leader><leader>b

Таким образом, я могу использовать EasyMotion в режиме вставки и быстро перемещаться, не переходя в обычный режим.

Хотя после перемещения Vim остается в обычном режиме (естественно). Как я могу указать, что после использования EasyMotion Vim должен перейти в режим вставки, чтобы продолжить печатать без задержки?

Спасибо!


person Manos Tsardoulias    schedule 25.09.2014    source источник
comment
Разве добавление a (или i) после сопоставления не работает для вас?   -  person Ingo Karkat    schedule 25.09.2014
comment
Неа. когда я нажимаю ,w, применяется EasyMotion (это цель сопоставления), но после перемещения (через EasyMotion) я возвращаюсь в обычный режим. Я предполагаю, что мне нужно манипулировать самим EasyMotion, но я не знаю, как это сделать.   -  person Manos Tsardoulias    schedule 25.09.2014
comment
Просто пришло в голову: возможно, использование i_CTRL-o (выполнить одну команду, вернуться в режим вставки) может быть полезным. Хотя я не уверен, что это правильный способ сделать это, с помощью :inoremap ,, :<C-o>:normal! fs<CR> вы можете переместить курсор к ближайшему s в режиме вставки, нажав ,, (я не знаком с easymotion, поэтому я заменил его движением с помощью f ).   -  person Yosh    schedule 25.09.2014
comment
Я чувствую, что это идет вразрез с Vim Way. Зачем избегать обычного режима? Я понимаю, что вы пытаетесь избежать нажатия клавиш, что является похвальной целью, но где останавливается это отображение? Собираетесь ли вы выполнять операции отмены/перемещения страниц/преобразования регистра/переходы/удаления/... в режиме вставки? Преимущество обычного режима заключается в том, что вы проводите в нем большую часть своего времени, и он предоставляет вам прекрасный язык для выполнения движений и операций над вашим текстом. Это может быть ключевым штрихом или около того, но я считаю, что отказ от обычного режима создаст некоторые вредные привычки и будет похож на плыть против течения.   -  person Peter Rincker    schedule 25.09.2014


Ответы (1)


Вы можете использовать <C-o> для выполнения одной команды нормального режима из режима вставки. Как только эта команда будет выполнена, вы вернетесь в режим вставки:

imap ,w <C-o><leader><leader>w
imap ,b <C-o><leader><leader>b
person Zach    schedule 25.09.2014
comment
В зависимости от приложения, возможно, стоит добавить <c-g>u, чтобы разбить блок отмены. например imap ,w <c-g>u<c-o><leader><leader>w. См. :h undo-blocks и :h i_ctrl-g_u для получения дополнительной информации. - person Peter Rincker; 25.09.2014
comment
очень кстати. Также для перехода в режим вставки после перемещения в обычном режиме: nmap <Leader>i i<C-o><Plug>(easymotion-overwin-f)i - person DZet; 16.05.2020