我经常看到包含vim
或 的说明nano
,意思是在您选择的文本编辑器中打开该步骤中的文件。是否有不可知的命令,我可以在地方,将在用户在终端的文本编辑器默认打开输入特定的程序的使用,无论是vim
,nano
还是其他?
我editor
在类似问题侧栏中看到提到——这仍然仅限于基于 Debian 的发行版吗?还有其他选择吗?
您可以使用 $EDITOR
,前提是它已被定义:
$EDITOR filename.txt
Run Code Online (Sandbox Code Playgroud)
但我认为大多数文档都在使用,nano
因为如果有人盲目跟随,那么使用它是一个安全的赌注。如果用户决定他们实际上更喜欢另外一个编辑器,他们会知道足够的,取而代之的是vim
,emacs
等自己。
edit
可能在基于 Debian 的系统上运行良好,但在其他系统上它会调用ex
,这是不推荐的。
VISUAL
如果设置了环境变量,请使用它。
EDITOR
否则,如果设置了环境变量,请使用它。
否则,Unix 传统默认为vi
. 这对用户来说一点也不友好 \xe2\x80\x94 使用 vi 的人知道如何设置他们的系统来调用它,你的应用程序应该对那些不这样做的用户友好。不幸的是,没有好的、可移植的方法来找到像样的编辑器。您可以尝试xdg-mime query default
,但即使该实用程序可用,它也并不总是有效。在 Debian 和类似 Debian 的系统上,调用sensible-editor
,它会为你完成所有这些工作 \xe2\x80\x94 但我不知道其他 Unix 变体上有类似的东西。
这会产生类似的代码
\n\n#!/bin/sh\nif [ -n "$VISUAL" ]; then\n exec $VISUAL "$@"\nelif [ -n "$EDITOR" ]; then\n exec $EDITOR "$@"\nelif type sensible-editor >/dev/null 2>/dev/null; then\n exec sensible-editor "$@"\nelif cmd=$(xdg-mime query default ) 2>/dev/null; [ -n "$cmd" ]; then\n exec "$cmd" "$@"\nelse\n editors=\'nano joe vi\'\n if [ -n "$DISPLAY" ]; then\n editors="gedit kate $editors"\n fi\n for x in $editors; do\n if type "$x" >/dev/null 2>/dev/null; then\n exec "$x" "$@"\n fi\n done\nfi\n
Run Code Online (Sandbox Code Playgroud)\n\n大多数程序都会在$VISUAL
和上进行空格分割$EDITOR
,但不是全部。
归档时间: |
|
查看次数: |
18274 次 |
最近记录: |