我做了什么以及事情发生变化时:

我做了什么以及事情发生变化时:

我开始学习 bash 和 emacs,并想将我的默认编辑器从 vi 更改为 emacs。在经历了不同 stackexchange 社区的许多重大问题之后,我还没有弄清楚,并且显然v在使用less.现在,当我v在读取文件时按less,而不是打开 vi (默认)或 emacs (我想要的),它什么也不做;即,less据我所知,它保留在 中,并且我无法编辑任何文本。幸运的是,我仍然可以退出使用q,并且我没有注意到任何其他情况。

我做了什么以及事情发生变化时:

我正在使用 mac osX 提供的终端模拟器,但我确实下载了 XQuartz。我使用 homebrew cask 安装了 emacs。

stackexchange 上的很多问题很好地解释了可以在我的 .bash_profile 中设置的$EDITOR和变量。$VISUAL由于我的 macbook 已经安装了旧版本的 emacs,因此我确保使用 homebrew 安装的当前版本的 emacs。

由于我刚刚开始学习所有这些东西,我无法确定设置所有内容的最佳方法。这是我目前在 .bash_profile 中的方式:

# changing emacs from the default osX version to the version obtained from homebrew                 
alias emacs="/usr/local/Cellar/emacs/25.2/Emacs.app/Contents/MacOS/Emacs"
alias enw="emacs -nw"

# setting emacs as the editor in term instead of vi                                                
EDITOR="enw";export EDITOR
VISUAL="enw";export VISUAL

将上述代码添加到我的 .bash_profile 后,没有任何重大变化(据我所知)。我用来echo验证$EDITOR$VISUAL变量是否已正确更改。

当我用来less读取文件时,我仍然可以输入v,但我的终端将使用 vi 来编辑文件,而不是所需的 emacs。所以我尝试改变我定义$EDITORand 的方式$VISUAL,例如使用完整路径,如我的alias emacs=...with the -nwflag 而不是enw。我还尝试删除引号。据我所知,这一切都没有带来任何不同。

不幸的是,由于我才刚刚开始,我没有任何具体的任务要做,我只是在摆弄基本的命令和文件,这就是我一直使用该less命令的原因。目前我不熟悉$EDITOR在终端中使用变量的任何其他方式。所以我不确定我的问题是否仅与 相关,v或者是否是$EDITOR.

最终我看到了一些与此相关的问题,建议添加ALTERNATE_EDITOR="";export ALTERNATE_EDITOR,所以我尝试了一下,但没有真正理解为什么。与v中的命令也没有明显的区别less

经过更多搜索后我发现问题,这似乎最接近我原来的计划(尽管我并没有尝试按照我的理解管道传输任何内容;不幸的是,我不明白“分页”是什么)。所以我改为$EDITOR="enw"$EDITOR="env TERM=xterm-256color enw"这大致是v在读取带有 .txt 文件时停止做任何事情的时候less

在添加最后一个代码之前,我检查了$TERM正常情况,这已经xterm-256color适合我了。现在我并不是说这就是我的v命令混乱的原因,这只是v在 . 中停止调用 vi 的时间线less。我将所有内容更改回我尝试过的第一个代码,但v仍然对我不起作用。

(抱歉,这太长了,只是想解释一下这个过程,以防有帮助!)现在,如果我注释掉我$EDITOR对 .bash_profile 的添加内容,一切都会恢复正常,我想这很好。因此,只要我不使用and在我的 .bash_profile 中,我就可以使用vin 。但是,我less$EDITOR$VISUAL改变这些,这就是我的困境所在。这可能是一个微不足道的问题,但我将非常感谢任何建议或见解。

PS-在尝试解决此问题时,我遇到了emacsclient并且可以使用该命令,但我不明白为什么我应该使用它而不是我的enw.

答案1

别名仅在当前 shell 会话中“活动”。less将无法通过$EDITORor调用别名$VISUAL(并且除了 shell 本身之外也没有其他进程可以调用别名)。

相反,将例如设置VISUAL

export VISUAL='/usr/local/Cellar/emacs/25.2/Emacs.app/Contents/MacOS/Emacs -nw'

或者安装emacs在可通过您的 访问的标准位置$PATH,可以自己编译,或者使用 HomeBrew、MacPorts 或 Fink 之类的东西,然后只需使用export VISUAL='emacs -nw'.

相关内容