我正在尝试弄清楚如何在命令模式下删除整行。我看到很多示例 .vimrc 都包含以下内容:
cnoremap <C-a> <Home>
cnoremap <C-b> <Left>
cnoremap <C-f> <Right>
cnoremap <C-d> <Delete>
cnoremap <M-b> <S-Left>
cnoremap <M-f> <S-Right>
" This doesn't delete a word as I'd expect
cnoremap <M-d> <S-Right><Delete>
除 之外,所有这些都按预期工作<M-d>
。我期望 删除整个单词,但它只是跳到末尾并删除一个字符。有<Delete Word>
或 吗<Delete Line>
?
答案1
在命令行中(例如在插入模式下),向后删除整个单词的命令是<C-w>
,删除光标所在行之前的命令是<C-u>
。它们并不难输入,所以我认为你根本不应该重新映射它们。无论如何……
"delete word, backward
cnoremap <M-d> <C-w>
"delete word, forward
cnoremap <M-d> <S-Right><C-w>
但是,如果您在命令行上进行大量编辑,则应该查看命令行窗口:按下<C-f>
即可编辑当前命令或q:
直接打开命令行窗口。
:help cmdline-widow
:help cmdline-editing