Art*_*s M 14 command-line command-history terminal command history-expansion
我不记得在不运行它的情况下可以获得最后一个命令的技巧:
假设我希望在按下向上箭头键并修改命令时能够访问命令 !1255。那么调用命令的技巧是什么,让它显示在命令行中但不执行,然后通过向上箭头键访问?
我试过放一个回声,但是我在命令之前有一个回声,我不记得如何正确地做到这一点。
Mic*_*ant 21
!1255:p
Run Code Online (Sandbox Code Playgroud)
会这样做
!
历史召回
1255
是行号
:p
打印但不执行
然后你可以使用向上箭头来获取之前的(未执行的)命令,你可以根据需要更改它。
我经常将它与hg
("History Grep") - 我最喜欢的别名结合起来。
$ alias hg # Maybe use hgr instead if you are a Mercurial CLI user.
alias hg='history | tail -200 | grep -i'
Run Code Online (Sandbox Code Playgroud)
这将搜索最近历史行上的文本,无论大小写,并以这种方式使用:
当我想搜索最近的 vi 命令来编辑某个文件,然后我想重新使用其中一个来编辑同一个文件但具有不同的文件扩展名时。
$ hg variables
6153 vi Variables/user-extensions.js
6176 vi Variables/user-extensions.js
6178 vi Variables/user-extensions.js
6190 vi Variables/user-extensions.js
6230 hg variables
$ # Notice the difference in case with V and v is ignored
$ !6190:p
vi Variables/user-extensions.js
$ ["up-arrow"]
$ vi Variables/user-extensions.[now change .js to .html]
Run Code Online (Sandbox Code Playgroud)
我还定义了hga
("History Grep All") 来搜索我的整个历史:
$ alias hga
alias hga='history | grep -i'
Run Code Online (Sandbox Code Playgroud)
但我很少使用它,因为我的历史记录(故意)非常大,而且我得到的输出太多,后来影响在我的终端中向后滚动页面。
该fc
命令执行您想要的操作
fc -l <number>
将列出该数字周围的命令历史记录
fc <number>
将在vim
(或我想的任何默认编辑器中)打开该命令行条目,以便您可以对其进行编辑,然后您可以:wq
使用向上箭头使用它。