/search
或?search
时,没有任何反应。还有什么我需要强调的吗?我尝试按Enter键,然后发生这种情况:$ set -o vi
$ ls|grep f
$ /gr
-bash: /gr: No such file or directory
$
#1 楼
在bash / readline中肯定有Vim样式搜索。实际上,您的命令行实质上是Vim编辑器的缩小版本,具有大量可用的Normal模式命令。在几秒钟内,但首先进行搜索。您需要的关键信息是,当您盯着命令行上闪烁的光标时,您将处于Vim的插入模式下。那么,如何进入普通模式?通过点击Esc,当然。从此处打/,输入搜索词,然后按Enter。现在,您可以使用n和N在结果之间来回移动。 (默认情况下,您将使用
n
有效地向后搜索...从头开始向前搜索不会得到任何结果,因为将来没有历史记录!)要以命令的形式执行当前结果,请再次按Enter。不要忘了您处于普通模式,因此,如果您找不到要查找的内容并想回到在插入模式下输入文本,请执行在Vim中通常执行的操作。例如,击中我就可以做到。或者,您可以使用Vim命令
C
,它将删除光标后的所有文本并进入“插入”模式,这很方便。 (如果将光标移到第一列之前,可以在0
之前添加。)或使用A
,a
,R
,s
,s
,I
,Ctrl-C
...您会得到图片。您可以使用
b
,B
,e
,E
,w
,W
,0
,$
等导航进入进入插入模式的各种命令。Yank/ delete / put也在那里,您可以在动作中使用它们导航命令,例如yB
,c2e
,d$
等1。最后,u
ndo也可以工作!继续尝试自己尝试其他一些东西。 哦,如果您迷路了,或者像我偶尔遇到的那样,换行有些时髦,扰乱了您的c / l,您可以丢下假装,然后按一下
v
。这会将命令行的内容拖入Vim的实际实例中,因此您可以使用Fully Armed and Operational Text Editor进行编辑。完成后,请:wq
将您拥有的内容提交给shell以执行。但是,@ EdNeville在下面的评论中有一个指向一些readline设置的链接,这些设置似乎会添加那里的每个op-motion命令以及许多其他命令。通过将它们添加到您的.inputrc文件中,您可以真正完善基于命令行的Vim体验。您可以使用任何可用的readline命令。我相信caw
即使在Vim模式下也应该可用,但如果没有,您可以尝试将其放入您的dis
...像这样的命令set editing-mode vi
"\C-r": reverse-search-history
"\C-s": forward-search-history
这样,一旦您从历史记录中选择了一个命令(例如,通过Vim搜索),请按
yap
而不是set -o vi
,Bash将运行该命令并插入历史记录中的下一条命令,即可运行。有关完整列表,请参见Bash手册页中的“ Readline命令名称”部分。
(您也可以在命令行中使用
set -o emacs
命令,但是我已经在这里太远了。)评论
真好一个学习的时刻。
–格伦·杰克曼
18年5月31日在0:51
@niklas,这是您的答案
–格伦·杰克曼
18年5月31日在0:51
@glennjackman我大量使用了此功能。对我真的有用。
– B层
18年5月31日在0:53
@NiklasRosencrantz是的,我了解。我们尝试编写通常有用的答案,而不仅仅是关注发问者,因此我添加了有关混合来自不同模式的命令的额外信息。
– B层
18年5月31日,2:12
如果您修改.inputrc,也可以添加ciw之类的内容:usenix.org.uk/content/bash.html#input
– Ed Neville
20 Mar 5 '20 at 18:21
#2 楼
@ B-Layer提到的内容在bash中和在zsh中都非常有效。neovim
中的默认终端。 然后,您可以使用vim命令导航端子的输出,以及导航终端命令的历史记录。
参考文献
http://vimcasts.org/episodes/neovim-terminal/
https://neovim.io/doc/user/nvim_terminal_emulator.html
https://github.com/ vim / vim / blob / master / runtime / doc / terminal.txt
评论
@ D.BenKnoble是的,但是我认为