vimscript 在命令模式下删除整行或单词(q:)

vimscript 在命令模式下删除整行或单词(q:)

我正在尝试弄清楚如何在命令模式下删除整行。我看到很多示例 .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

相关内容