如何在Vim命令行中移动?


69

如果您在Vim中键入命令(我是说您已经开始使用:并且正在屏幕底部的栏中工作),除了点击箭头键之外,还有其他方法可以移动光标吗?特别是,您可以将其移动到开头,结尾,后n个字符或后一个单词吗?

Answers:


63

类型

:h cmdline-editing

有关详细信息。我列出了一些有趣的非箭头命令,它们执行的操作与您想要的类似。

  • ctrl- B:光标到命令行开头
  • ctrl- E:光标移至命令行末尾
  • ctrl- W:删除光标之前的单词
  • ctrl- U:删除光标位置和行首之间的所有字符

谢谢,太好了。我搜索了该帮助文档,但没有找到一种可以逐字移动的方法。你知道那有空吗?
伊桑(Ethan)2010年

1
该文档说,使用shift + left和shift + right可以前后移动一个单词。它还有一个示例如何<Esc>b在命令行模式下绑定到shift + left(等等)::cnoremap <Esc>b <S-Left>
Alok Singhal 2010年

1
那个键映射看起来非常像Emacs :)
Jeffrey Jose 2010年

1
如果您希望Vim命令行编辑更像Emacs或Bash,请参阅重新映射:help emacs-keys
2014年

97

在命令行模式下(紧接在),点击Ctrl+ 。在那里,您将获得命令行窗口,可以将其作为常规vim窗口(hjkl等)进行编辑和导航。F:

有关:h cmdline-window详细信息,请参见。


14
哇,这对我来说简直就是一生。
BimoZX

8
Ctrl-C退出。
沃尔夫

2
这是一颗宝石。 :q似乎也让您摆脱困境。
sudo make install

8
现在为什么很难找到此信息?我想给你一个拥抱的人。
jojo

7
搜索线也一样!太棒了!
architectonic

26

要添加到马克西姆·金的答案中,

Normal Mode..

q: ->命令的cmdline窗口

q/ -> cmdline窗口向前搜索

q? -> cmdline窗口向后搜索

Ctrl-C<CR>将您带出cmdline窗口


5
有时,我的一只手无意中击败了另一只手,而我无意间最终输入q:而不是:q。我花了很长时间才弄清楚我键入的内容最终出现在奇怪的命令窗口中(至少很直观地知道如何退出该窗口)。
安德鲁·马歇尔

q:cmdline之后会打开命令窗口。您可以滚动浏览命令(hjkl),<CR>然后执行您当前所在的命令。<Ctrl-C>可用于编辑您当前所在的命令。您还可以通过进入“插入”模式(在cmdline窗口中按i),编辑命令,然后按<CR>
Ambareesh

16
  • ctrl+ left arrow:后退一个字
  • ctrl+ right arrow-向前移动一个字
  • ctrl+ b-返回到行的开头
  • ctrl+ e-转到行尾
  • ctrl+ w-删除光标前的一个单词
  • ctrl+ u-删除行
  • ctrl+ f-如果需要更多编辑能力,请使用ctrl+,f然后您将在正常模式下编辑命令。例如,如果要向左移动5个字符,请使用ctrl+ f,然后使用5h

1
在Mac上,Ctrl + left arrow移动整个桌面。我禁用了它,但是Ctrl + left arrow将光标移到了该行的左侧。
Vitaly Zdanevich

ctrl+shift+left/right arrow使用iterm2在macOS上为我工作。
apostl3pol

3

nnoremap q; q:方便打字。usr_20.txt和cmdline.txt包含所有有用的信息。


之后q;完成相同:然后<C-f>
qeatzy

2

您实际上可以添加自己的移动键。例如,我在.vimrc中使用以下命令以hjkl方式(滥用ctrl键)以手指友好的方式在命令模式下移动:

 " moving aroung in command mode
 cnoremap <c-h> <left>
 cnoremap <c-j> <down>
 cnoremap <c-k> <up>
 cnoremap <c-l> <right>
 cnoremap ^     <home>
 cnoremap $     <end>

其中^$实际上分别是<ctrl- ^>和<ctrl- $>,在.vimrc中键入为<cv> <c- ^>和<cv> <c- $>(出于某些原因<c- ^ >和<c- $>至少在我的设置中不起作用,但是前者可以)


0

在Mac OS上,

  • Shift+left arrow:后退一个字
  • Shift+ right arrow:向前移动一个字
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.