假设我正在使用vim命令模式复制文件,并且我的光标位于行末。
:!cp path/to/original/file path/to/new/file
我可以像在shell中输入 Esc b
一样跳回一个单词吗?
你不能使用“Esc b”,因为那会丢弃你正在输入的命令。但是你可以绑定一些按键来移动。
问题已经在这里得到了回答:在Vim命令模式下导航
简单的方法就是添加:
cnoremap <C-a> <Home>
cnoremap <C-e> <End>
cnoremap <C-p> <Up>
cnoremap <C-n> <Down>
cnoremap <C-b> <Left>
cnoremap <C-f> <Right>
cnoremap <M-b> <S-Left>
cnoremap <M-f> <S-Right>
一个很好的vim功能是ctrl-f
。在命令行模式下输入^f
(或者使用cedit
选项指定的任何键,其中ctrl-f
是默认值)与从正常模式下输入q:
具有相同的效果;它会将您的整个命令历史记录拉到一个窗口中,并让您将其作为缓冲区进行编辑。请尝试:help cmdwin
了解更多详细信息。
q:
,而不是:q
--那可能是一个错误! - echristopherson如果您需要输入和编辑复杂命令,您可能会喜欢直接在命令行窗口中工作,该窗口可以通过正常模式命令q:
访问。请参阅:h 20.5
和:h q:
。或者,如果您已经处于命令模式,可以使用C-f
访问命令行窗口。
q:
以进入命令行窗口(或从命令行模式键入C-f
)。enter
。光标所在行将作为命令在打开命令行窗口之前的窗口中执行。另一个要考虑的选择是从另一个缓冲区编辑/复制命令。您可以通过复制所需文本并在命令模式下键入C-R n
来将其粘贴到命令模式中,其中n
是您复制到的寄存器。
顺便说一下:我喜欢@rks提供的映射。但是,如果您没有这些映射,可以使用开箱即用的命令。查看:h c_<S-Left>
、:h c_<S-Right>
和:h 20.1
。