如何以vi方式使用命令行模式?


10

在始终保持原始位置的情况下,是否可以与命令行模式进行交互?

特别地,以下两个操作很麻烦,需要将手指移至箭头键,有时更糟的是鼠标。

  1. 四处走动:是否有一种方法可以在命令行模式下在往常位置上来回移动?
  2. 如何在命令行上复制和粘贴?我的意思是将两者都从命令行本身的一部分复制到另一部分,或者从文本甚至剪贴板复制。

1
两者都可以通过在命令行窗口中使用:q; 来解决。这将打开一个新的“类似缓冲区”窗口,您可以在其中hjkl用于移动,y
拉动

1
@Carpetsmoker(您的意思是q:吧?)我过去曾经不小心到达那里,但并未真正考虑使用它。不过,它似乎不起作用/(搜索)。
Shahbaz

糟糕,是的,我是说q:...我从没用过太多,所以我无法给您完整/正确的答案...
Martin Tournoij 2015年

Answers:


17

命令行(您知道),有命令行窗口(命令行位于特殊缓冲区中,您可以像其他任何缓冲区一样进行编辑)。你进入这个或者通过<C-f>在命令行(也可用于/通过专用正常模式搜索等),当你觉得需要更多的“编辑力”,或直接q:q/等命令。

在上阅读有关此内容的更多信息:help command-line-window


4
<C-f>了解这一点非常有用,因为它已经在您完成命令的一半之后起作用了。
Shahbaz

1
我同意; 在:谈到几乎是自动的我,所以这是很好的可以不用回到正常模式进行切换。
Ingo Karkat 2015年

11

除了提供命令行窗口外,Vim还提供了一些有限的功能,使您可以在命令行模式下(无需使用箭头键)与命令行交互。

运动

  • <ctrl-b> 将光标移动到命令行的开头
  • <ctrl-e> 将光标移到命令行末尾

编辑中

  • <ctrl-h> 删除光标前的字符(如退格键)
  • <ctrl-w> 删除光标之前的单词
  • <ctrl-u> 从游标一直删除到命令行开头

当然,您可以添加命令行映射:cnoremap以模拟某些其他程序的导航键。或安装Tim Pope的RSI插件以使用事实上的标准Readline绑定。

贴上

您可以通过按任意<ctrl-r>后跟指定寄存器的字符,将任何寄存器的内容粘贴到命令行中光标所在的位置。例如<ctrl-r>+将剪贴板的内容插入命令行;<ctrl-r>"将插入“未命名”寄存器的内容(即您上次删除或删除的内容)。

有关:help cmdline.txt上述所有内容的更多详细信息,请参见。


1
太棒了!<ctrl-r>会特别有用。
Shahbaz 2015年

是的,我什至用过^R宏。它使我可以通过在宏过程中拉动文件的一部分来执行文本的超级棘手操作,然后在宏期间,也可以在长Ex模式命令中使用^R。:)
2015年
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.