VISUAL
和EDITOR
环境变量都设置为相同的东西,但是有什么区别?我为什么要对它们进行不同的设置?开发应用程序时,为什么我应该选择先看VISUAL
还是反之?#1 楼
EDITOR
编辑器应该能够在不使用“高级”终端功能的情况下工作(例如ed
的旧ex
或vi
模式)。 VISUAL
编辑器可以是全屏编辑器,例如vi
或emacs
。例如如果您通过bash调用编辑器(使用
C-x C-e
),则bash将首先尝试VISUAL
编辑器,然后,如果VISUAL
失败(因为终端不支持全屏编辑器),它将尝试EDITOR
。现在,您可以不设置
EDITOR
或将其设置为vi -e
。#2 楼
可以接受的答案可能是一个不错的简短处理,但这是在VISUAL和EDITOR之间的区分仍然很重要时(基于Adam Katz的答案)的尝试。POSIX规范仍然区分可视模式编辑器和行编辑器。在光标很难通过串行连接定位时(尤其是由于串行连接的速度),这确实很重要。关于vi的维基百科文章提供了一些关于vi(可视模式编辑器)和ex(行编辑器)之间区别的有用背景。如果您对研究进行了足够深入的研究,则会发现“ ex”规范的“ RATIONALE”部分,这给出了区分仍在规范中的原因:可以认识到,如果不是
不可能,vi的部分将很难在块模式终端或没有任何形式的游标寻址的
/>强制性要求此类功能应在所有终端上均起作用。 。
自从放弃了300波特的调制解调器以来,我就不需要这个了,但是我可以想象,那些使用慢速串行线路连接到嵌入式系统的人(和/或真正的骗子)连接)可能仍然会喜欢能够有一个喜欢的行模式编辑器,而不是像vi这样的“可视”编辑器。在有限的应用程序中,通过有损耗,缓慢,狭窄的连接上的VT100样式的终端代码可能会“膨胀”。成为您的首选编辑”。对于本地/图形编辑器(例如Sublime或gvim)与终端窗口编辑器(例如vi或emacs),可以采用这种区别可能是可以的,但是可能有很多传统的原因导致该编辑器无法按预期工作。
#3 楼
我得出的结论是$VISUAL
是图形的,而$EDITOR
是命令行的。如果未定义,则寻求$VISUAL
的任何内容都应尝试下一个$EDITOR
。 >目前,我的~/.bashrc
和~/.zshrc
中有这样的内容:EDITOR="$(command -v vim)" # we have gvim, not in an SSH term, and the X11 display number is under 10 if command -v gvim >/dev/null 2>&1 \ && [ "$SSH_TTY$DISPLAY" = "${DISPLAY#*:[1-9][0-9]}" ]; then export VISUAL="$(command -v gvim) -f" SUDO_EDITOR="$VISUAL" else SUDO_EDITOR="$EDITOR" fi 的gvim
不适用于希望对您的编辑起作用的程序。绝对包括-f
(sudoeditor
)。
如果vim路径中有空格,则可能会中断。如果存在问题,请正确安装或考虑使用sudo -e
之类的符号链接评论
是否使用$ VISUAL取决于您是否具有能够进行光标定位的终端,而不取决于您是否具有可用的窗口系统。
–拉登·罗斯伯勒(Radon Rosborough)
18年3月13日在23:01
啊,太好了!您可以为此提供明确的参考链接吗?我认为我的代码仍然安全,因为我还在检查$ DISPLAY,但这很高兴。
–亚当·卡兹(Adam Katz)
18年3月14日在14:24
没关系,在robla的答案中似乎存在这样的引用,甚至提到了我的答案。
–亚当·卡兹(Adam Katz)
18年3月14日在14:43
回到我撰写2016年答案的时候,我没有足够的声誉来发表评论(我会这样做)。感谢您的提示,@AdamKatz!
–robla
20年4月1日,下午2:36
#4 楼
一些工具仅接受EDITOR,例如内置的fc shell:-e ENAME select which editor to use. Default is FCEDIT, then EDITOR, then vi
#5 楼
由于似乎在vi或类似环境中不会出现任何环境失败,因此我将VISUAL设置为需要X DISPLAY的内容,而将EDITOR设置为ex。在某些程序不使用VISUAL时导致我出现问题。
评论
大多数应用程序将$ VISUAL视为一个shell片段,并在该片段后附加(用引号引起来的)文件名,但是一些应用程序将其视为可执行文件的名称,它们可能会或可能不会在$ PATH中进行搜索。因此,最好将VISUAL(和EDITOR)设置为可执行文件的完整路径(如果需要,可以使用包装脚本)。
–吉尔斯'所以-不再是邪恶的'
2010-12-15 18:27
在现代,ed和类似语言不是很流行,因此我相信可以忽略VISUAL并使用EDITOR。
– PavelŠimerda
2014年3月30日17:35
感谢您提供有关bash中C-x C-e的技巧。非常便利。
–mndrix
15年3月25日在19:22
@PavelŠimerda,仅设置EDITOR是不够的,例如在Ubuntu 12.04上安装git。如果没有设置VISUAL,git会忽略EDITOR,而只使用nano(我猜是默认编译)。
–maxschlepzig
15年4月25日在10:24
@PavelŠimerda没有意义,但这是约定。 EDITOR曾经是ed等基于指令的编辑器。当出现具有GUI的编辑器时-通过GUI,我的意思是CLI GUI(vim,emacs等-认为ncurses),而不是桌面环境GUI-编辑过程发生了巨大变化,因此出现了另一个变量的需求。在这种情况下,CLI GUI和桌面环境GUI编辑器大致相同,因此您可以将VISUAL设置为;但是,EDITOR用于根本不同的工作流程。当然,这都是历史。这些天没有人使用ed。
–辛尼泽
16-09-17在22:34