Eu estava procurando um comando que abra 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 encontrei editor. Para mim, ele iniciou o vim no terminal, que é quase o que Eu queria; eu uso vim-gtk. Comecei a pesquisar uma maneira de fazer o editor usar vim-gtk e encontrei esta pergunta que explica uma $EDITOR variável de ambiente, mas não tenho certeza se isso está relacionado ao comando editor. Tentei man editor , mas isso apenas abriu a página de manual do vim.
Como posso fazer editor usar um editor de texto de minha escolha ou devo usar um comando diferente?
Resposta
Este é um Debian-ismo (e, portanto, aparece no Ubuntu, Mint, etc.). Eles “foram configurados uma ligação de link ed 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
Assim, você pode ver que editor é apenas um link Unix para o executável vim.gnome.
Usando editor?
Eu não acho que ” d ir na direção de configurar editor de qualquer maneira significativa para os usuários, visto que não é o que eu consideraria padrão.
Além disso, você pode definir o $EDITOR variável de ambiente para apontar para o que você quiser, vim, gedit, emacs, etc. Mas essa variável só tem garantia de uso por outras ferramentas, como sudo, git e subversion que são especificamente projetados para serem vinculados ao uso da variável $EDITOR.
Ideias de implementação
Eu meramente configuraria um alias de sua escolha e instruiria os usuários que ele está disponível para eles por meio de seu $HOME/.bashrc arquivo como alias X ou configurá-lo 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 corte a cobertura de açúcar e ensine-os sobre essas coisas imediatamente.
Ou você pode fornecer um texto arquivo chamado /etc/help.txt que eles podem executar 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 com o passar do tempo com novos recursos ou dicas e oferece a eles mais do que apenas o editor comando de conveniência.
Comentários
Resposta
O programa editor chamado por alguns programas quando você lhes diz para editar um arquivo. Você deve definir a variável de ambiente sozinho.
Se você usar csh ou tcsh, no prompt do shell:
setenv EDITOR vim
Se você usar bash ou ksh e, em seguida, digite:
EDITOR=vim; export EDITOR
(Substitua “vim” pelo editor que deseja usar.)
O EDITOR variável é a que você precisa por padrão para alguns aplicativos para chamar o editor. Existe outra variável chamada VISUAL usada para especificar o editor orientado para a tela. Geralmente, você desejará defini-lo com o mesmo valor da variável EDITOR. Originalmente, EDITOR seria definido como ed (um editor baseado em linha) e VISUAL seria “definido como vi (uma tela editor baseado).
VISUAL="vim"; export VISUAL VISUAL="$EDITOR"; export VISUAL #even better
Quando você tiver feito isso, a maioria dos programas Unix que usam editores de texto usarão o editor que você configurou. Seguindo os comandos acima, você definirá o editor padrão apenas para a sessão de computação atual. Para tornar essas alterações permanentes, você precisará colocar os comandos apropriados descritos acima em .login ou .cshrc arquivos (para usuários csh ou tcsh) ou seu arquivo .profile (se você usar bash ou ksh).
Há também outra variável de ambiente, se você pretende usar Emacs. É “s ALTERNATE_EDITOR e tem o mesmo efeito, mas” é usado quando o Emacs é invocado com a opção --alternate-editor.
Do Manual GNU Emacs :
A opção
--alternate-editor=commandé útil ao executaremacsclientem um script. Ele especifica um comando a ser executado seemacsclientfalhar em contatar o Emacs. Por exemplo, a seguinte configuração para a variável de ambienteEDITORsempre fornecerá um editor, mesmo se o Emacs não estiver em execução:EDITOR="emacsclient --alternate-editor vi +%d %s"
Comentários
- Dizer
shdoesn ‘ não faz sentido.shé geralmente o shell do sistema ‘. Costumava ser o shell Thomson, depois o shell Bourne e hoje em dia na maioria dos sistemas, um shell ou outro implementando a especificação POSIXsh. A sintaxeexport EDITOR=vimé POSIX, mas não é Bourne nem Thomson. Oexport VISUAL=$EDITORfunciona embashe algumas implementações deksh. Você precisa deexport VISUAL="$EDITOR"na maioria dos outros shells.VISUAL=$EDITOR export VISUALfuncionará em todos os shells tipo Bourne, incluindo o shell Bourne. - É comum e aceito definir
EDITORpara um valor de várias palavras como esse? Nesse caso, não posso usar com segurançawhich "$EDITOR"ouwhich $EDITORpara verificar se ele está presente.
Resposta
Você terá que especificar editor na variável de ambiente EDITOR. Adicione o seguinte comando em seu .profile:
export EDITOR=editor
Se desejar vim como seu editor padrão, você adicionará em seu lugar
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
Resposta
O 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 forma 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 é razoavelmente padrão. É usado por muitos programas que precisam que o usuário edite algo. Como tal, é esta variável que você deve usar quando quiser invocar o editor do usuário.
Comentários
- Não é específico do Ubuntu, ele vem do Debian e usa o mecanismo ‘ s alternativas do Debian. Ele ‘ está disponível em todos os derivados do Debian, não apenas Ubuntu.
Resposta
Isto é o que estou usando em 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"
Não envolvi aspas na chamada final para $editor para garantir que o exemplo emacsclient acima funcionará.
Por causa disso, acho importante sempre definir algum valor para editor, caso contrário, a última linha poderia executar involuntariamente $ filename . No meu caso, escolhi no_editor_found, mas você também poderia use pico ou ed lá.
$EDITOR, agora eu não pode ‘ confiar nisso ou noeditorlink simbólico.s/Ubuntu/Debian/g