4

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

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

有没有一种方法可以像在 shell 中那样通过键入来跳回一个单词Esc b

4

4 回答 4

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

于 2012-09-07T09:52:34.930 回答
2

一个不错的 vim 功能是ctrl-f. 从命令行模式键入(或选项^f中指定的任何键,默认为)与从正常模式键入具有相同的效果;它将您的整个命令历史记录拉到一个窗口中,并让您将其作为缓冲区进行编辑。尝试了解更多详情。ceditctrl-fq::help cmdwin

于 2012-09-07T17:29:21.360 回答
2

对于输入和编辑复杂的命令,您可能喜欢直接在使用普通模式命令访问的命令行窗口中工作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

于 2012-09-07T20:28:30.683 回答
0

在 vim 的命令模式下,我只使用 ctrl-left 和 ctrl-right 箭头。同样适用于 bash - 我不知道那里的 esc-b 方法。

在我的 Ubuntu 和 Debian 系统上不需要编辑 .vimrc 文件,但在其他系统上不需要编辑 YMMV。它可能基于为操作系统打包的标准配置

于 2015-08-10T16:41:20.623 回答