Bash 命令行调用 vim 模式

19 Apr 2022 - Gaomou XU

Tags: bash, vim

2022-10.24 update

这玩意除了瞎折腾压根没用,还会影响一些肌肉记忆的快捷键,已删

对于非专业码农(至少是我)来说,远程服务器操作一直有一个很蛋疼的点: 文本编辑主要用 vim 及其相应语法,但 bash 中命令输入的操作模式调用的是 emacs 快捷键。

背两套快捷键当然是背不下来的,况且背下来也容易记混, 这时候如果能在 bash 中调用 vim 语法就会非常的方便。

Linux 系统中,所有命令行的输入都会调用 ReadLine 库,该库默认支持 emacs 模式以及 vim模式, 因此可以通过修改相应配置文件:~/.inputrc(类似~/.bashrc 之于 bash)实现各种功能, 配置也会作用于其他 shell,例如 python 的 shell。

set editing-mode vi # 设置默认模式为 vim
set show-mode-in-prompt on # 调用 PS1 显示当前 vim 模式
set vi-ins-mode-string "\1\e[32m\2[-ins]\1\e[0m\2" # 使用 PS1 语法自定义模式显示
set vi-cmd-mode-string "\1\e[34m\2[-cmd]\1\e[0m\2"

set keymap vi-insert # 自定义 vim 映射
"jk": vi-movement-mode

配置完成后 reload 一下 bash,就可以搭出好看且好用的 vim 模式了

bash vim-mode

需要注意的是,在 PS1 设置时,颜色定义部分一定要用 \1 \2 包起来,并且每个颜色定义都要分别包起来,不然会出现各种错位