在命令模式下向前/向后移动一个单词?

时间:2012-09-07 09:41:49

标签: vim vi

假设我正在使用vim命令模式复制文件,而我的光标位于该行的末尾。

:!cp path/to/original/file path/to/new/file

有没有办法可以通过输入Esc b来跳回shell中的单词?

4 个答案:

答案 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。它可能基于为操作系统打包的标准配置