0%

Mac OSX terminal下进行光标移动 (不用方向键)

最近折腾HHKB键盘,缺少了方向键之后在terminal里移动光标不是很习惯,用fn组合键要移动手腕而且容易造成小拇指疲劳。所以这里记录下terminal的组合键光标移动小技巧以及助记方法。高频使用的会标明,请重点练习!

阅读提示

  • 仅在OSX下测试过,linux待验证。
  • 下面介绍的均不用额外配置。进阶玩家可以修改~/.inputrc来达到目的。
  • 如果能适应在普通命令行下也用vim mode的话,可以略过下文,直接在~/.zshrc中添加set -o vi进入vim模式!
  • 最后,花半小时练习这些快捷键可能会让你的工作效率变高,老板会在你身后偷笑。

上下移动 (常用)

在terminal中我们用上下箭头来翻看command history。没有了方向键的我们手足失措,只能借用带ctrl的快捷键啦,多练习几下就习惯了。

ctrl+P 相当于 ,P就是previous的意思。
ctrl+N 相当于 ,N就是next的意思。

左右移动 (常用)

有时候编辑command命令需要左右移动光标,自然而然地会去用左右箭头。下面是替代方案:

ctrl+F 相当于 ,F就是forward的意思。
ctrl+B 相当于 ,B就是back的意思。

如果觉得单个character移动太慢,想要by word快速移动,就要用到一个mind-blowing的操作:

esc+F,F就是forward的意思。
esc+B,B就是back的意思。

说实话这是我第一次接触到这个搭配,先按一下esc再按一下相应按键。

首尾移动 (常用)

下面两个快捷键能把光标快速定位到command的首部和尾部。

ctrl+A,A的意思我想不到,可能因为是第一个字母吧。
ctrl+E,E就是end的意思。

ctrl+A这个组合不禁让我想到screen。但我在服务器上只用tmux并且保持了默认的ctrl+B,所以在这里就不讨论如何解决和screen的按键冲突了。

剪切粘贴

在命令行中,delete和cut的操作往往是相同的,也就是说你会把cut当delete用。被剪切的部分会被储存到buffer中,所以我们可以执行粘贴操作。

粘贴操作:
ctrl+Y,Y就是yank的意思,vim党肯定知道。

剪切操作:
ctrl+U,剪切光标前所有字符。
ctrl+K,剪切从光标至末尾的部分。
ctrl+D,剪切光标处的字符。
ctrl+H,和backspace一个作用,剪切光标之前的一个字符。
ctrl+W,从光标向前剪切一个word。
esc+D,从光标向后剪切一个word。

BONUS (超级好用)

上下翻看command只适合比较邻近的操作。在你进行了一系列文件夹跳转的操作后,你往上翻往往全是cd和ls。之前的我总是傻傻地用history去grep。实际上我们有更方便的操作:
ctrl+R,R就是reverse search。

执行之后你可以在交互行中输入你要搜索的字符串。一旦找到符合的历史命令,你就可以按enter执行;如果你想要在这条历史命令基础上修改些内容,也可以在找到命令后连续按两次esc退出搜索。这条命令会留在terminal中,现在你就可以用本文上述的操作去移动光标修改命令了。

当然,如果没有满意的搜索结果,可以直接按ctrl+c退出。


以上光标移动的操作在mac OSX下的大部分输入框中都有效。我就是用这套操作在leetcode上刷题的,毕竟网页上没办法用hjkl进行编辑。