在Docker容器的 bash 中,默认使用的是 emacs
可以用bind -V | grep keymap
查看,用 set -o vi 临时修改为 vi 模式
虽然可以在 bash 设置为永久 vi 模式,但是如果每个容器都这样去设置,那也太麻烦了,应该可以用 dockerfile 配置吧,具体还没研究过
默认emacs模式下的快捷键
将光标移动到行首:control + a将光标移动到行尾:control + e单词为单位移动:option + 方向键搜索以前使用命令:control + r快速使用历史命令: 方向键上下清除当前行:control + u清除屏幕:control + l清除至当前行尾:control + k使用vim模式移动光标
切换到vi模式:set -o vi
退出vi的编辑模式:ESC
向前移动一个单词位:w
向后移动一个单词位:b
移动光标到行首:^
移动光标到行尾:$ 或 0
上下选择历史命令: j k
左右移动光标: h l
开启vi 模式后,默认是 insert 模式,按下esc键进入命令模式,按下i进入insert模式
若需要切换回emacs模式,执行set -o emacs即可。
开启 Mac 终端时bash默认vim模式
在实际使用中我发现仅设置set -o vi 只能保证当前是vim模式,若重启终端又会回到Emacs模式,解决方法如下
在 bashrc 中添加set -o vi
,然后再配置.inputrc
文件(在服务器上的 bash 也是这么设置 vim 模式的)
设置方法
在终端输入
$ vim ~/.inputrc
在这个文件里输入以下代码
set editing-mode vi$if mode=viset keymap vi-command"gg": beginning-of-history"G": end-of-history"L": end-of-lineset keymap vi-insert"jj": vi-movement-mode
设置完后,重启终端,这样就可以默认打开vim,同时可以使用我最习惯的jj来替代esc
iterm2中zsh命令行用jk映射到esc的方法
终端输入vim ~/.zshrc
,添加如下代码,然后source ~/.zshrc
即可
bindkey -M viins 'jk' vi-cmd-mode
How to switch comfortably to vi command mode on the zsh command line?
更新:zsh 的 vim 模式配置
打开.zshrc
bindkey -v # 开启 vi-mode 模式# 后面命令的描述参考:http://bolyai.cs.elte.hu/zsh-manual/zsh_14.htmlbindkey -M vicmd "H" vi-beginning-of-linebindkey -M vicmd "L" vi-end-of-linebindkey -M vicmd "e" down-line-or-search
文档:http://bolyai.cs.elte.hu/zsh-manual/zsh_14.html
参考:TheCW:用Vim快捷键编辑你的命令:Zsh Vi-Mode
zsh vi-mode yy 复制到剪贴板
在 zshrc 中添加如下代码:
# Yank to the system clipboardfunction vi-yank-xclip {zle vi-yankecho "$CUTBUFFER" | pbcopy -i}zle -N vi-yank-xclipbindkey -M vicmd 'y' vi-yank-xclip
/questions/61466461/yank-in-visual-vim-mode-in-zsh-does-not-copy-to-clipboard-in-ordert-to-paste-w
如果觉得《Mac终端terminal光标快速移动方法 emacs/vim模式 | bash vim zsh vim模式》对你有帮助,请点赞、收藏,并留下你的观点哦!