bash 中的“editor”命令是什么?

bash 中的“editor”命令是什么?

我正在寻找一个命令,希望能够打开当前用户最喜欢的文本编辑器,因为我正在博客中用命令写出一些说明。我期待着像这样的命令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环境变量设置为指向您想要的任何内容,vimgeditemacs等。但是此变量只能保证由其他工具使用,例如sudogit, 以及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,但你同样可以使用picoored那里。

相关内容