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

Jus*_*mas 3 vim command-line vimrc

我试图弄清楚如何在命令模式下删除整行。我看到很多 .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>
Run Code Online (Sandbox Code Playgroud)

所有这些都按预期工作,但<M-d>. 我希望确实删除整个单词,但它只是跳到末尾并删除单个字符。有一个<Delete Word>或 吗<Delete Line>

rom*_*inl 5

在命令行中(如插入模式),向后删除整个单词的命令是<C-w>,删除整行直到光标的命令是<C-u>。它们并不难输入,所以我认为您根本不应该重新映射它们。无论如何\xe2\x80\xa6

\n\n
"delete word, backward\ncnoremap <M-d> <C-w>\n\n"delete word, forward\ncnoremap <M-d> <S-Right><C-w>\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,如果您在命令行上进行大量编辑,则应该查看命令行窗口:按<C-f>编辑当前命令或q:直接打开命令行窗口。

\n\n
:help cmdline-widow\n:help cmdline-editing\n
Run Code Online (Sandbox Code Playgroud)\n