Comando para o editor de texto padrão no terminal

1

Muitas vezes vejo instruções que incluem vim ou nano , o que significa abrir o arquivo nessa etapa em seu editor de texto de sua preferência. Existe um comando agnóstico que eu possa usar no lugar do programa específico que abriria a entrada no editor de texto no terminal padrão do usuário, seja vim , nano ou outra coisa?

Eu vejo o editor mencionado na barra lateral Perguntas Semelhantes - isso ainda é limitado a distros baseadas no Debian? E existe alguma alternativa?

    
por Wolf 17.10.2016 / 04:26

3 respostas

2

Você pode usar $EDITOR , desde que tenha sido definido:

$EDITOR filename.txt

Mas eu acho que a maioria dos documentos usa nano , porque se alguém está seguindo cegamente, é uma aposta segura para usar. Se o usuário decidir que prefere um editor a outro, ele saberá o suficiente para substituí-lo por vim , emacs , etc.

edit pode funcionar bem em sistemas baseados em Debian, mas em outros ele invoca ex , o que não é recomendado.

    
por 17.10.2016 / 05:17
2

Se a variável de ambiente VISUAL estiver definida, use isso.

Caso contrário, se a variável de ambiente EDITOR estiver definida, use isso.

Caso contrário, a tradição do Unix é padronizada como vi . Isso não é de todo fácil para o usuário - as pessoas que usam o vi sabem como configurar seu sistema para invocá-lo, seu aplicativo deve ser amigável para aqueles usuários que não o fazem. Infelizmente não há uma maneira boa e portátil de encontrar um editor decente. Você pode tentar xdg-mime query default , mas mesmo quando o utilitário está disponível, nem sempre funciona. Em sistemas Debian e Debian, invoque sensible-editor , que faz tudo isso para você - mas eu não sei de nada parecido em outras variantes do Unix.

Isso produz código como

#!/bin/sh
if [ -n "$VISUAL" ]; then
  exec $VISUAL "$@"
elif [ -n "$EDITOR" ]; then
  exec $EDITOR "$@"
elif type sensible-editor >/dev/null 2>/dev/null; then
  exec sensible-editor "$@"
elif cmd=$(xdg-mime query default ) 2>/dev/null; [ -n "$cmd" ]; then
  exec "$cmd" "$@"
else
  editors='nano joe vi'
  if [ -n "$DISPLAY" ]; then
    editors="gedit kate $editors"
  fi
  for x in $editors; do
    if type "$x" >/dev/null 2>/dev/null; then
      exec "$x" "$@"
    fi
  done
fi

A maioria dos programas divide os espaços em branco em $VISUAL e $EDITOR , mas não em todos.

    
por 18.10.2016 / 00:36
0

Se você estiver usando o Bash, que é o idioma de terminal padrão para todas as distribuições linux (até onde eu saiba), há algo chamado de variáveis ambientais. Muitas dessas variáveis são configuradas pela sua distribuição, onde algumas precisam ser definidas ou "exportadas" manualmente. $ EDITOR é um em particular (precisa de bonés e cifrão). O cifrão significa a variável que está sendo chamada, e os limites significam que é uma variável ambiental. $ HOME é um env comum. variável que é shorthanded por ~.

Então, para responder às suas perguntas de maneira sucinta, o comando que você executaria para usar um editor padrão de usuários, editar o arquivo.txt

$EDITOR file.txt

Para definir ou exportar o editor padrão para o vim, coloque-o no arquivo $ HOME / .bashrc do usuário:

export EDITOR=/bin/vim

execute:

source $HOME/.bashrc

Se a variável $ EDITOR não estiver definida, não existe um editor padrão.

No que diz respeito às alternativas, há infinitamente muitos por aliases:

Alias E="$EDITOR"

Depois de obter o arquivo .bashrc, isso me permitiria executar o primeiro comando acima por:

E text.vim

No entanto, não se deixe levar pelos aliases, pois eles podem ser um grande obstáculo para o uso mais avançado do bash.

Outra variável ambiental útil e semelhante é o $ PAGER, que pode ser usado para abrir o programa padrão para visualização de documentos.

$PAGER file.txt

O padrão usual para essa variável env é "less".

    
por 17.10.2016 / 05:48