qua*_*ant 138 shell keyboard-shortcuts command-history
我知道我可以Up用来遍历以前的命令。运行最后一个命令只涉及Up+ Enter。但是,我在考虑购买Happy Hacking 键盘,因为我在vim.
这个键盘没有箭头键,我知道如何获得这种行为的唯一方法是按Ctrl+R并开始重复我之前的命令。
是否有一种简单的方法可以在没有箭头键的情况下在 UNIX 终端中模拟Up+ Enter?
Spa*_*awk 194
使用csh或任何外壳实现csh类似历史替换(tcsh, bash, zsh):
!!
Run Code Online (Sandbox Code Playgroud)
然后Enter。
或交替:
!-1
Run Code Online (Sandbox Code Playgroud)
然后Enter。
或Ctrl+ P,Enter
另外,请注意,!!并且!-1不会为您自动扩展,直到您执行它们(可能为时已晚)。
如果使用bash,就可以把bind Space:magic-space进入~/.bashrc,然后按Space该命令后,将内嵌自动扩展它们,让您在执行之前对其进行检查。这对于前一段时间运行的命令的历史扩展特别有用,例如!echo将拉取以echo. 使用魔法空间,您可以在运行之前预览命令。
这相当于执行bindkey ' ' magic-spaceintcsh或zsh。
Gil*_*il' 67
大多数具有命令行编辑功能的 shell 都支持 Emacs 键绑定。(一个很小的子集)
Up Ctrl+P
Down Ctrl+N
Left Ctrl+B
Right Ctrl+F
Home Ctrl+A
End Ctrl+E
Delete Ctrl+D
Run Code Online (Sandbox Code Playgroud)
或者,您可以通过添加set -o vi到您的 shell 启动文件(例如,~/.bashrc)来设置您的 shell 以使用 vi 命令编辑模式。然后,例如,您可以
!!)。减号键-也可用作“向上移动”命令。!-12)。vi命令模式,因此您将需要使用vi编辑命令(例如I,A, C, R, 或它们的小写对应项之一)从历史记录中实际添加到命令中。sudo !!。!-2:- !$。(不幸的是,它似乎不支持命名缓冲区。)dai*_*isy 35
我最喜欢的是CTRL+P然后CTRL+O
这默认工作,不需要额外的配置。^P 会让你切换到最后一个命令 ^O 会让你执行当前行
请注意,CTRL+O可以根据需要多次使用
Cel*_*ada 17
当然!既然你已经习惯了vi按键绑定,为什么不配置你的 shell 来响应它们呢?对于bash,把它放在你的~/.inputrc:
set editing-mode vi
Run Code Online (Sandbox Code Playgroud)
运行 bash 实例不会重新读取文件,因此注销并重新登录。
zsh甚至会为您检测到这一点:如果您的启动脚本都没有强制使用一种或另一种方式的编辑模式,bindkey 并且如果$EDITOR检测到您的环境变量包含vi,那么它将自动启用vi键绑定。如果你需要强制它,把它放在你的~/.zshrc:
bindkey -v
Run Code Online (Sandbox Code Playgroud)
此后,使用ESC照常进入命令行和k及j向向上和向下移动。
另外:大多数 shell 中的默认 shell 绑定是 emacs 绑定,因此实际上Crtl-P并且Ctrl-N应该已经可以工作而无需更改任何内容。
fed*_*qui 12
对于任何实现用户可移植性选项(包括ksh、zsh、bash、yash)的POSIX shell ,您还可以使用以下fc命令:
fc -e : -1
Run Code Online (Sandbox Code Playgroud)
看一个例子:
$ echo "hello"
hello
$ fc -e : -1
echo "hello"
hello
Run Code Online (Sandbox Code Playgroud)
乔纳森·莱夫勒 (Jonathan Leffler) 的历史回答中的执行一系列命令中的更多信息。
小智 7
我发现我需要经常以超级用户的身份重做命令,所以
sudo !!
Run Code Online (Sandbox Code Playgroud)
重做之前的命令,就好像我记得首先要输入一样sudo。
shellksh有一个默认别名r,它会重复最近的命令。它必然是fc -s:
alias r='fc -s'
Run Code Online (Sandbox Code Playgroud)
有趣的是,内置bash的文档fc(help fc以及手册本身)甚至提到了这一点,但它不是该 shell 中的默认别名:
与此一起使用的一个有用的别名是
r='fc -s',因此键入r cc运行以 开头的最后一个命令cc,并且键入r重新执行最后一个命令。
在中bash,即使您关闭了历史扩展,这也将起作用set +H。
在zshshell 中,有一个r内置函数被记录为与fc -e -.
该fc实用程序是POSIX 标准实用程序。
| 归档时间: |
|
| 查看次数: |
197082 次 |
| 最近记录: |