xen*_*ide 220 vi environment-variables ex
我通常将环境变量VISUAL和EDITOR环境变量都设置为相同的东西,但有什么区别呢?为什么我要以不同的方式设置它们?当开发应用程序,我为什么要选择看VISUAL之前EDITOR,反之亦然?
and*_*coz 181
该EDITOR编辑器应该能够在不使用“高级”功能的终端(如旧的工作ed或ex模式vi)。它用于电传终端。
一个VISUAL编辑器,可能是一个全屏幕编辑器vi或emacs。
例如,如果您通过 bash(使用C-x C-e)调用编辑器,bash 将尝试第一个VISUAL编辑器,然后,如果VISUAL失败(因为终端不支持全屏编辑器),它会尝试EDITOR.
如今,您可以不EDITOR设置或将其设置为vi -e.
rob*_*bla 45
接受的答案可能是一个很好的简短处理方法,但这将尝试更深入地了解何时 VISUAL 和 EDITOR 之间的区别可能仍然很重要(基于Adam Katz 的回答)。
POSIX 规范仍然区分可视模式编辑器和行编辑器。这在通过串行连接定位光标很困难的时代确实很重要(特别是因为串行连接的速度)。在维基百科的文章VI给出了VI之间的区别一些有用的背景(可视化模式编辑器)和EX(线编辑器)。如果你深入研究,你会发现“ex”规范的“RATIONALE”部分,这给出了仍然在规范中的区别的原因:
众所周知,即使不是不可能,也很难在块模式终端或没有任何形式的光标寻址的终端上令人满意地实现 vi 的某些部分,因此并不是强制要求此类功能应在所有终端上运行. 然而,vi 实现应该在能够支持它们的所有终端上提供全套能力。
自从放弃我的 300 波特调制解调器后,我就不再需要它了,但我可以想象使用慢速串行线路连接到嵌入式系统(和/或通过非常危险的连接)的人可能仍然喜欢能够拥有首选线路模式编辑器不同于像 vi 这样的“可视化”编辑器。在有限的应用程序中,VT100 式终端代码在有损、滞后、狭窄的连接上可能会“膨胀”。
对于我们其他人来说,“正确”的答案似乎是“将它们都设置为您首选的编辑器”。为本地/图形编辑器(例如 Sublime 或 gvim)与终端窗口编辑器(例如 vi 或 emacs)合并选择这种区别可能是可以的,但可能有大量遗留原因导致这可能无法按预期工作.
$VISUAL是比 更有能力和互动的偏好$EDITOR。如果未定义,则接下来$VISUAL 应该尝试任何寻求的内容$EDITOR。
有些人采用了现代惯例,表示$VISUAL图形终端和$EDITOR交互式终端。从历史上看,$VISUAL(如vi)指的是交互式终端显示,而$EDITOR(如ed)是无法处理(文本)光标移动的行编辑器。有关更多历史记录,请参阅 robla 的答案。
目前,我的~/.bashrcand中有这样的东西~/.zshrc:
# Prefer vim or else fail over to vi
EDITOR="$(command -v vim 2>/dev/null || command -v vi)"
# 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
Run Code Online (Sandbox Code Playgroud)
gvimwithout-f不适用于希望对您的编辑进行操作的程序。这其中肯定包括sudoeditor( sudo -e)。
如果 vim 路径中有空格,这可能会中断。如果这是一个问题,要么正确安装它,要么考虑像这样的符号链接/usr/local/bin/gvim
| 归档时间: |
|
| 查看次数: |
53705 次 |
| 最近记录: |