我开始学习 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。所以我尝试改变我定义$EDITOR
and 的方式$VISUAL
,例如使用完整路径,如我的alias emacs=...
with the -nw
flag 而不是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 中,我就可以使用v
in 。但是,我less
$EDITOR
$VISUAL
想改变这些,这就是我的困境所在。这可能是一个微不足道的问题,但我将非常感谢任何建议或见解。
PS-在尝试解决此问题时,我遇到了emacsclient
并且可以使用该命令,但我不明白为什么我应该使用它而不是我的enw
.
答案1
别名仅在当前 shell 会话中“活动”。less
将无法通过$EDITOR
or调用别名$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'
.