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

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


移动:有没有办法在命令行模式下来回移动并保持原样?粘贴在命令行上?我的意思是将这两者都从命令行本身的一部分复制到另一部分,或者从文本甚至剪贴板复制。


评论

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

@Carpetsmoker(您的意思是q :,对吗?)真心知道!我过去曾经不小心到达那里,但并未真正考虑过使用它。它似乎不适用于/尽管(搜索)。

糟糕,是的,我的意思是q:...我从没用过它,所以我不能给您完整/正确的答案...

#1 楼

有命令行(您知道),有命令行窗口(命令行在特殊缓冲区中,您可以像其他任何缓冲区一样进行编辑)。当您感觉需要更多“编辑能力”时,可以通过命令行的<C-f>输入此内容(也可以进行/的搜索等),也可以通过正常的模式通过专用的q:q/等命令直接输入此内容。 >
请参阅:help command-line-window了解有关此内容的更多信息。

评论


很有用,因为它已经在您完成命令的一半之后才起作用。

– Shahbaz
2015年3月2日14:20在

我同意; :对我来说几乎是自动出现的,因此能够在不返回正常模式的情况下进行切换是很好的。

– Ingo Karkat
2015年3月2日,14:21

#2 楼

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

运动



<ctrl-b>将光标移至命令行的开头

<ctrl-e>将光标移至命令行的结尾

编辑



<ctrl-h>删除光标之前的字符(如退格键)

<ctrl-w>删除光标之前的单词

<ctrl-u>从光标一直删除到命令行开头。您当然可以使用:cnoremap添加命令行映射来模拟某些其他程序的导航键。或安装Tim Pope的RSI插件以使用事实上的标准Readline绑定。

粘贴

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

评论


太棒了! 将特别有用。

– Shahbaz
15年3月3日在15:57

是的,我什至使用^ R作为宏。它使我可以通过在宏过程中猛拉文件的一部分来执行文本的超级棘手操作,然后在宏期间,也可以在带有^ R的长Ex-mode命令中使用猛拉的部分。 :)

–通配符
2015年10月30日,下午2:39