在 zsh 中从 Vi 命令行编辑模式调用外部编辑器

在 zsh 中从 Vi 命令行编辑模式调用外部编辑器

由于某种原因,在使用 iTerm 时,我无法获得调用 Vim(我的编辑器)来使用Esc+ 的键绑定。v zsh

我又回到了极简.zshrc文件,以确保这不是插件问题:

# If you come from bash you might have to change your $PATH.
export PATH=$HOME/bin:/usr/local/bin:/Users/user/go/bin:$PATH

export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/kubebuilder/bin

export EDITOR="/usr/bin/vi"

# Path to your oh-my-zsh installation.
export ZSH="/Users/user/.oh-my-zsh"

ZSH_THEME="gnzh"

source $ZSH/oh-my-zsh.sh

set -o vi

但是在命令行上时,我似乎无法使用Esc+v打开编辑器,我不知道为什么。

如果我将外壳更改为bash,它工作正常,所以这似乎是一个问题zsh

也尝试过bindkey -v没有效果。

答案1

直接从联机帮助页复制粘贴zshcontrib(1)(或info zsh edit-command-line):

autoload edit-command-line
zle -N edit-command-line
bindkey -M vicmd v edit-command-line

答案2

我似乎无法使用Esc+v打开编辑器,我不知道为什么。

这是因为 GNU Readlineedit-and-execute-command函数是 Bourne Again shell 的东西,而不是 Z shell 的东西。 ZLE没有这样的东西。 (FreeBSD 上的 Almquist shell 使用的 editline 库有一些相似但不相同的东西。它是vi-histedit。FreeBSD '93 Korn shell 也是如此。Watanabe shell 及其 也是如此vi-edit-and-accept,这又略有不同。但是 FreeBSD PD Korn shell 没有任何这样的东西,相比之下,Debian Almquist shell 也没有。)

你错误地认为存在于一个外壳中的东西是普遍的。它不是。这是一个因外壳而异的区域。在命令行编辑方面,ZLE、GNU Readline、Editline、Watanabe shell 和 '93 Korn shell 都是不同的。

相关内容