Terminal中如何快速移动光标

本文所有命令调试环境

  1. 系统:mac 10.13
  2. terminal类型:原生terminal / iterm2

编辑器语法的简单介绍

终端中输入命令时,移动光标有两种方式,一个是 emacs,一个 vi,可以通过 set 命令来设置,默认的是 emacs 模式,也可以通过set -o emacs来显式设置

使用默认的emacs模式移动光标

搜罗了两个emacs比较好用的命令,如下:
1. 向前移动一个单词:ESC+f
2. 向后移动一个单词:ESC+b
3. 移动光标到行首:control+a
4. 移动光标到行尾:control+e

经作者实测,必须分开点击ESC和f/b才能实现向前/向后一个单词位,长按ESC+不停点击f/b并不能快速移动n个单词的光标位。
对此,原生terminal无能为力,只能ESC+f+ESC+f+ESC+f……循环。iTerm可以通过改变快捷键的方式进行优化:Preferences->Profiles->Keys中,设置左option键为Esc+即可达到联系移动的效果,如下图:
Terminal中如何快速移动光标

使用vi模式移动光标


  1. 切换到vi模式:set -o vi
  2. 退出vi的编辑模式:ESC
  3. 向前移动一个单词位:w
  4. 向后移动一个单词位:b
  5. 移动光标到行首:^
  6. 移动光标到行尾:$

开启vi 模式后,默认是 insert 模式,按下esc键进入命令模式,按下i进入insert模式。如果需要切换回emacs模式,执行set -o emacs即可。熟悉vi的可以*发挥,以上几个命令只是抛砖引玉。

设置terminal的默认执行方式


  1. 默认shell,在创建文件~/.bash_profile,写入set -o vi
  2. 作者使用了zsh,所以在~/.zshrc写入了set -o vi

具体根据个人使用的shell类型配置1/2即可

References:

iterm2使用(https://segmentfault.com/a/1190000009919714)