Vim 是否有类似的东西在插入模式下删除一个 Word?

Vim 是否有类似的东西在插入模式下删除一个 Word?

word在插入模式下,如果按下(control + w) ,Vim 将删除 a <C-w>。是否有类似的命令可以删除 a Word

(例如,删除全部http://www.example.com而不是仅删除com部分。)

如果没有,我正在考虑使用映射<C-BS>(control + backspace)来执行此操作。

答案1

不,没有这样的内置命令,但是以下命令可以解决问题:

: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",返回一个 WORD B,并删除该部分文本。

编辑:修复了行尾的光标

答案2

如果我理解正确的话,您在插入模式下的文件上,光标位于“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-> 替换所有 Word 并进入插入模式

答案3

在插入模式下,Ctrl+O然后dB

相关内容