5

В режиме вставки Vim удалит word назад, если вы нажмете <C-w> (control + w). Есть ли подобная команда, которая удаляет обратно Word?

(Например, удалите все http://www.example.com вместо только com части.)

Если нет, я подумываю о сопоставлении <C-BS> (control + backspace) для этого.

3 ответа3

2

Нет, такой встроенной команды нет, но вот что нужно сделать:

:inoremap <silent> <expr> <C-S-BS>
\   col('.') == 1 ?
\       '<C-w>' :
\       col('.') >= col('$') ?
\           '<C-o>:normal! Bd$<CR>' :
\           '<C-o>:normal! m"Bdg`"<CR>'

Когда в начале строки он просто выполняет команду <C-w> чтобы присоединиться к предыдущей строке. В конце строки он возвращается на WORD и удаляет остальное. В противном случае он устанавливает временную метку m" , возвращает одно слово B и удаляет эту часть текста.

Редактировать: исправлено для курсора в конце строки

1

Если я понял, вы находитесь в файле в режиме вставки с курсором на символе где-то на «com», и вы нажимаете <c-w> чтобы удалить http://www.example.com и оставаться в режиме вставки?

blabla ffd http://www.example.com fds fsdf dsfd

эта ключевая карта делает свое дело :imap <C-w> <ESC>lciW

<ESC> -> иди в нормальном

l -> Перейти вправо (потому что, когда нажмите ESC, он идет влево)

ciW -> заменить все слова и перейти в режим вставки

-1

в режиме вставки Ctrl+O затем dB

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