假设我正在使用vim命令模式复制文件,而我的光标位于该行的末尾。
:!cp path/to/original/file path/to/new/file
有没有办法可以通过输入Esc b
来跳回shell中的单词?
答案 0 :(得分:5)
你不能使用“Esc b”,因为很明显,这会丢弃你输入的命令。但是你可以绑定一些键来移动。
这里已经回答了这个问题:Navigating in Vim's Command Mode
简单的方法就是添加:
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>
在你的.vimrc
中答案 1 :(得分:1)
一个不错的vim功能是ctrl-f
。在命令行模式下键入^f
(或cedit
选项中指定的任何键,默认为ctrl-f
)与从正常模式键入q:
具有相同的效果;它将您的整个命令历史记录拉入窗口,并允许您将其编辑为缓冲区。请尝试:help cmdwin
了解详情。
答案 2 :(得分:1)
要输入和编辑复杂命令,您可能希望直接在使用普通模式命令q:
访问的命令行窗口中工作。请参阅:h 20.5
和:h q:
。或者,如果您已处于命令模式,则可以使用C-f
访问命令行窗口。
q:
进入命令行窗口。 (或从命令行模式键入C-f
。enter
这个命令行窗口。光标所在的行将作为B1中的命令执行
打开命令行窗口之前的窗口。要考虑的另一个选择是从另一个缓冲区编辑/抽取命令。您可以通过输入所需的文本并通过键入C-R n
在命令模式下粘贴它来执行此操作,其中n
是您拉到的注册表。
BTW:我喜欢@rks提供的映射。但是,如果您没有这些映射,则可以使用开箱即用的命令。查看:h c_<S-Left>
和:h c_<S-Right>
以及:h 20.1
。
答案 3 :(得分:0)
在vim的命令模式下,我只使用ctrl-left和ctrl-right箭头。同样在bash中工作 - 我不知道那里的esc-b方法。
在我的Ubuntu和Debian系统上不需要编辑.vimrc文件,而在其他系统上不需要编辑YMMV。它可能基于为操作系统打包的标准配置