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