O que é o comando 'editor' no bash?

6

Eu estava procurando por um comando que esperasse abrir o editor de texto favorito do usuário atual, porque estou escrevendo algumas instruções com comandos em um blog. Eu estava esperando um comando como edit e achei editor . Para mim, começou o vim no terminal, que está perto do que eu queria; Eu uso o vim-gtk. Comecei a procurar uma maneira de fazer o editor usar o vim-gtk e encontrar este pergunta que explica uma variável de ambiente $EDITOR , mas não tenho certeza se isso está relacionado ao comando editor . Eu tentei man editor , mas isso só puxou a página do man vim.

Como posso fazer com que editor use um editor de texto de minha escolha, ou devo usar um comando diferente?

    
por Dan Ross 25.05.2013 / 22:20

5 respostas

5

Este é um Debian-ismo (e, portanto, aparece no Ubuntu, Mint, etc.). Eles configuraram um link chamado editor . Você pode rastreá-lo da seguinte maneira:

$ 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

Então você pode ver que editor é apenas um link Unix para o executável vim.gnome .

Usando editor ?

Eu não acho que eu vá nessa direção de configurar editor de qualquer maneira significativa para os usuários, dado que não é o que eu consideraria padrão.

Além disso, você pode definir a variável de ambiente $EDITOR para apontar para o que quiser, vim , gedit , emacs , etc. Mas essa variável só é garantidamente usada por outras ferramentas, como sudo , git e subversion especificamente projetados para serem vinculados ao uso da variável $EDITOR .

Ideias de implementação

Eu apenas configuraria um alias de sua escolha e instruiria os usuários que eles estão disponíveis para eles por meio do arquivo $HOME/.bashrc como alias X ou configurá-los como uma configuração do sistema no arquivo /etc/profile.d/our_aliases.sh , como alias X.

Ou você pode apenas dizer aos usuários que os sistemas fornecem gedit , gvim , vim , emacs , etc. e cortam o revestimento de açúcar e os ensinam sobre essas coisas logo de cara. / p>

Ou você poderia fornecer um arquivo de texto chamado /etc/help.txt , que poderia ser executado por meio de um comando help ( alias help="less /etc/help.txt" ) em um shell que forneceria comandos básicos e como executar várias tarefas. Essa abordagem permite que você personalize a ajuda à medida que o tempo passa com novos recursos ou dicas e isso fornece mais do que apenas o comando editor convenience.

    
por 25.05.2013 / 22:26
5

O programa editor chamado por alguns programas quando você diz para editar um arquivo. Você precisa definir a variável de ambiente você mesmo.

Se você usa csh ou tcsh, no prompt do shell:

setenv EDITOR vim

Se você usar bash ou ksh, digite:

EDITOR=vim; export EDITOR

(Substitua "vim" pelo editor que você deseja usar.)

A variável EDITOR é a que você precisa por padrão para que alguns aplicativos invoquem o editor. Há outra variável chamada VISUAL usada para especificar o editor orientado à tela. Geralmente, você desejará configurá-lo para o mesmo valor que a variável EDITOR . Originalmente EDITOR teria sido definido como ed (um editor baseado em linha) e VISUAL teria sido definido como vi (um editor baseado em tela).

VISUAL="vim"; export VISUAL
VISUAL="$EDITOR"; export VISUAL  #even better

Quando você fizer isso, a maioria dos programas Unix que usam editores de texto usarão o editor que você definiu. Seguindo os comandos acima, você irá definir o editor padrão somente para a sessão de computação atual. Para tornar essas alterações permanentes, você precisará colocar os comandos apropriados descritos acima em seus arquivos .login ou .cshrc (para usuários csh ou tcsh) ou seu arquivo .profile (se você usar bash ou ksh).

Existe também outra variável de ambiente, se você pretende usar o Emacs. É ALTERNATE_EDITOR e tem o mesmo efeito, mas é usado quando o Emacs é invocado com a opção --alternate-editor .

Do Manual do GNU Emacs :

The option --alternate-editor=command is useful when running emacsclient in a script. It specifies a command to run if emacsclient fails to contact Emacs. For example, the following setting for the EDITOR environment variable will always give an editor, even if Emacs is not running:

EDITOR="emacsclient --alternate-editor vi +%d %s"
    
por 25.05.2013 / 22:42
3

Você terá que especificar o editor na variável de ambiente EDITOR . Adicione o seguinte comando no seu .profile :

export EDITOR=editor

Se você quiser vim como editor padrão, adicione

export EDITOR=vim

Preferência pessoal: Eu uso o nome do caminho absoluto do editor na variável de ambiente. Por exemplo,

export EDITOR=/usr/bin/vim

    
por 25.05.2013 / 22:24
2

O comando editor é específico do Ubuntu. Não é portátil ou mesmo comum (fora do Ubuntu). O comando também é definido em todo o sistema, e não por usuário. A maneira como funciona é que /usr/bin/editor é apenas um link simbólico para um editor no sistema. Como tal, é o mesmo para todos os usuários.

A variável de ambiente $EDITOR é bastante padrão. É usado por muitos programas que precisam que o usuário edite algo. Como tal, é essa variável que você deve usar quando quiser invocar o editor do usuário.

    
por 25.05.2013 / 22:28
0

Isso é o que estou usando no meu script:

# 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"

Eu não coloquei aspas ao redor da chamada final para $editor para garantir que o exemplo do emacsclient acima funcione.

Por causa disso, eu acho que é importante sempre definir algum valor para editor , caso contrário a última linha poderia involuntariamente executar $ filename . No meu caso, escolhi no_editor_found , mas você pode usar igualmente pico ou ed .

    
por 25.02.2016 / 09:01