fish 2.2.0 (July 12, 2015) 支持 vi 模式

随着 Mac 下终端的使用日益增多,系统默认的 bash 已经满足不了需求了,于是有了更为强劲的 fishzsh,以及它们各自的强心剂 Oh-My-FishOh-My-Zsh. 我的选择是 Fish 和 Oh-My-Fish。

到目前为止,最新的 fish 2.2.0 于 2015 年 7 月 12 日发布,Release notes 如下,其中显著改变有:

  • Abbreviations: the new abbr command allows for interactively-expanded abbreviations, allowing quick access to frequently-used commands (#731).
  • Vi mode: run fish_vi_mode to switch fish into the key bindings and prompt familiar to users of the Vi editor (#65).
  • New inline and interactive pager, which will be familiar to users of zsh (#291).
  • Underlying architectural changes: the fishd universal variable server has been removed as it was a source of many bugs and security problems. Notably, old fish sessions will not be able to communicate universal variable changes with new fish sessions. For best results, restart all running instances of fish.
  • The web-based configuration tool has been redesigned, featuring a prompt theme chooser and other improvements.
  • New German, Brazilian Portuguese, and Chinese translations.

我对第二点比较感兴趣,即增加了 vi 模式,在 fish 下运行 fish_vi_mode 命令,或者在 ~/.config/fish/ 中加上 fish_vi_mode 便自动进入 vi 模式。


我还没能在官方找到任何关于 fish 的 vi 模式的的说明文档,但作为一个 vi 的使用者,该自由发挥了。

如前方标识 [I] 为插入模式, [N] 为命令模式, [V] 为可视(Visual) 模式。

从 [I] 切换到 [N] 模式按 Esc 键

从 [N] 可以按 V 键切换到 [V] 模式

从 [N] 到 [I] 模式可以按  i/I, s/S, a/A

在 [N] 命令模式你可以无底线的去尝试所有的 vi 指令了,如

^ 跳到行首 (替代了默认的   ctrl + a)

$ 跳到行尾 (替代了默认的 ctrl + e)

其他移如  w/b 向后/向前移动一个字, x/dw/dd 删除当前字符,字,和行

yy 复制当前行,p 粘贴


附:fish 和 Oh My Fish 的安装(Mac OS X)

1. 安装 fish:

brew install fish --HEAD

2. 安装 Oh My Fish:

curl -L | fish

当前 Oh My Fish 与的构建也是插件方式,似乎与当前的 fish 2.2.0 存在兼容问题,所以我手动安装的是这个分支

git clone -b commits-ahead-scorphish git:// ~/.oh-my-fish
cp ~/.oh-my-fish/templates/ ~/.config/fish/

3. 设置 fish 为默认  shell:

echo "/usr/local/bin/fish" | sudo tee -a /etc/shells
chsh -s /usr/local/bin/fish

如果不想看到每次的欢迎信息在 ~/.config/fish/ 中加上

set --erase fish_greeting    #或 set fish_greeting ""

类别: Linux/Unix. 标签: , . 阅读(284). 订阅评论. TrackBack.

Inline Feedbacks
View all comments
Would love your thoughts, please comment.x