我正在寻找一个命令,希望能够打开当前用户最喜欢的文本编辑器,因为我正在博客中用命令写出一些说明。我期待着像这样的命令edit
,然后我发现了editor
。对我来说,它在终端中启动了 vim,这很接近我想要的;我使用 vim-gtk。我开始寻找一种让编辑器使用 vim-gtk 的方法并发现这解释环境变量的问题$EDITOR
,但我不确定这是否与命令有关editor
。我尝试过man editor
,但这只是拉出了 vim 手册页。
我如何editor
使用我选择的文本编辑器,或者我应该使用不同的命令?
答案1
这是 Debian 主义(因此出现在 Ubuntu、Mint 等中)。他们设置了一个名为 的链接editor
。您可以按如下方式追溯:
$ which editor
/usr/bin/editor
$ ls -l /usr/bin/editor
lrwxrwxrwx 1 root root 24 Nov 24 19:10 /usr/bin/editor -> /etc/alternatives/editor
$ ls -l /etc/alternatives/editor
lrwxrwxrwx 1 root root 18 Nov 24 19:46 /etc/alternatives/editor -> /usr/bin/vim.gnome
$ ls -l /usr/bin/vim.gnome
-rwxr-xr-x 1 root root 2403392 Oct 26 2012 /usr/bin/vim.gnome
所以您可以看到这editor
只是可执行文件的 Unix 链接vim.gnome
。
使用editor
?
我认为我不会朝着editor
为用户提供任何有意义的方式进行设置的方向,因为这不是我认为的标准。
此外,您可以将$EDITOR
环境变量设置为指向您想要的任何内容,vim
,gedit
,emacs
等。但是此变量只能保证由其他工具使用,例如sudo
,git
, 以及subversion
专门设计用于与使用该变量绑定的工具$EDITOR
。
实施思路
我只会设置您自己选择的别名,并指示用户可以通过其$HOME/.bashrc
文件作为别名 X 来使用它,或者将其设置为文件中的系统配置/etc/profile.d/our_aliases.sh
(作为别名 X)。
或者你可以直接告诉用户系统提供了gedit
、、、、等等gvim
,然后去掉vim
糖衣emacs
,立即教他们这些东西。
或者您可以提供一个文本文件,/etc/help.txt
他们可以通过 shell 中的命令help
( alias help="less /etc/help.txt"
) 运行该文件,该文件将提供基本命令以及如何执行各种任务。这种方法允许您随着时间的推移使用新功能或提示自定义帮助,并且它提供的不仅仅是editor
便利命令。
答案2
当您告诉某些程序编辑文件时,它们会调用编辑器程序。您必须自己设置环境变量。
如果您使用 csh 或 tcsh,则在 shell 提示符处:
setenv EDITOR vim
如果您使用 bash 或 ksh,则输入:
EDITOR=vim; export EDITOR
(将“vim”替换为您要使用的编辑器。)
EDITOR
默认情况下,某些应用程序调用编辑器需要该变量。还有另一个变量,VISUAL
用于指定面向屏幕的编辑器。通常,您需要将其设置为与EDITOR
变量相同的值。最初EDITOR
将设置为 ed(基于行的编辑器),并VISUAL
设置为 vi(基于屏幕的编辑器)。
VISUAL="vim"; export VISUAL
VISUAL="$EDITOR"; export VISUAL #even better
完成此操作后,大多数使用文本编辑器的 Unix 程序将使用您设置的编辑器。通过执行上述命令,您将仅为当前计算会话设置默认编辑器。要使这些更改永久生效,您需要将上述适当的命令放入您的.login
或.cshrc
文件(对于 csh 或 tcsh 用户)或您的.profile
文件(如果您使用 bash 或 ksh)。
如果您假装使用 Emacs,还有另一个环境变量。它是ALTERNATE_EDITOR
, , 具有相同的效果,但是当使用 option 调用 Emacs 时使用它--alternate-editor
。
来自GNU Emacs 手册:
在脚本中运行时该选项
--alternate-editor=command
很有用 。它指定在 无法联系 Emacsemacsclient
时运行的命令。emacsclient
例如,以下环境变量设置EDITOR
将始终提供编辑器,即使 Emacs 未运行:EDITOR="emacsclient --alternate-editor vi +%d %s"
答案3
您必须editor
在环境变量中指定EDITOR
。在您的中添加以下命令.profile
:
export EDITOR=editor
如果你想vim
作为默认编辑器,你可以添加
export EDITOR=vim
个人喜好:我在环境变量中使用编辑器的绝对路径名。例如,
export EDITOR=/usr/bin/vim
答案4
这就是我在脚本中使用的内容:
# Find a suitable text editor
editor="$VISUAL"
[ -z "$editor" ] && editor="$EDITOR"
[ -z "$editor" ] && which editor >/dev/null && editor=editor
[ -z "$editor" ] && which nano >/dev/null && editor=nano
[ -z "$editor" ] && which vi >/dev/null && editor=vi
[ -z "$editor" ] && editor=no_editor_found
# Use the editor we found
$editor "$filename"
我没有在最终调用中加上引号,以$editor
确保上面的 emacsclient 示例能够正常工作。
因此,我认为始终为 设定一些值很重要editor
,否则最后一行可能会无意中执行 $文件名。就我而言,我选择了no_editor_found
,但你同样可以使用pico
ored
那里。