VISUAL vs EDITOR qual é a diferença?

155

Eu geralmente defino as variáveis de ambiente VISUAL e EDITOR para a mesma coisa, mas qual é a diferença? Por que eu os definiria diferentemente? Ao desenvolver aplicativos, por que devo escolher ver VISUAL antes de EDITOR ou vice-versa?

    
por xenoterracide 15.12.2010 / 11:17

5 respostas

123

O editor EDITOR deve ser capaz de funcionar sem o uso da funcionalidade de terminal "avançada" (como o antigo modo ed ou ex de vi ). Foi usado em terminais de teletipo.

Um editor de VISUAL pode ser um editor de tela inteira como vi ou emacs .

Por exemplo se você chamar um editor através do bash (usando C-x C-e ), o bash tentará primeiro VISUAL editor e, em seguida, se VISUAL falhar (porque o terminal não suporta um editor de tela cheia), ele tentará EDITOR . / p>

Hoje em dia, você pode deixar EDITOR não definido ou definir como vi -e .

    
por 15.12.2010 / 12:02
21

A resposta aceita provavelmente é um tratamento bom e curto, mas isso será uma tentativa de aprofundar quando a distinção entre VISUAL e EDITOR ainda pode ser importante (possivelmente com base na resposta de Adam Katz).

A especificação POSIX ainda distingue entre editores de modo visual e editores de linha. Isso realmente importava nos dias em que o posicionamento do cursor sobre conexões seriais era difícil (especialmente devido à velocidade da conexão serial). O artigo da Wikipédia para o vi fornece algumas informações úteis sobre a distinção entre vi (um editor de modo visual) e ex (um editor de linha ). Se você aprofundar bastante a pesquisa, encontrará a seção "RACIONAL" do "ex "spec , que dá uma razão para a distinção ainda estar na especificação:

It is recognized that portions of vi would be difficult, if not impossible, to implement satisfactorily on a block-mode terminal, or a terminal without any form of cursor addressing, thus it is not a mandatory requirement that such features should work on all terminals. It is the intention, however, that a vi implementation should provide the full set of capabilities on all terminals capable of supporting them.

Eu não precisei disso desde que desisti do meu modem de 300 bauds, mas posso imaginar que as pessoas que usam linhas seriais lentas para se conectar a sistemas embarcados (e / ou conexões realmente perigosas) podem ainda aprecio poder ter um editor de modo de linha preferido distinto de um editor "visual" como o vi. Os códigos de terminal do tipo VT100 em uma conexão com perda, lenta e estreita podem ser "inchados" em aplicativos limitados.

Para o resto de nós, parece que a resposta "correta" parece ser "definir os dois como seu editor preferido". Pode ser ok cooptar essa distinção para editor local / gráfico (por exemplo, Sublime ou gvim) versus um editor de janela de terminal (por exemplo, vi ou emacs), mas provavelmente há uma montanha de motivos herdados por que isso provavelmente não funcionará como esperado .

    
por 31.12.2016 / 22:12
1

Algumas ferramentas só aceitam EDITOR, por exemplo, o shell embutido fc :

-e ENAME  select which editor to use.  Default is FCEDIT, then EDITOR, then vi
    
por 30.05.2016 / 20:13
1

Concluímos que $VISUAL é gráfico e $EDITOR é linha de comando. Se estiver indefinido, qualquer coisa que procurar $VISUAL deverá tentar $EDITOR a seguir.

( Citação necessária: Eu adoraria obter a documentação apropriada, talvez uma página de manual ou uma especificação POSIX?)

No momento, tenho coisas como esta no meu ~/.bashrc e ~/.zshrc :

EDITOR="$(command -v vim)"

# we have gvim, not in an SSH term, and the X11 display number is under 10
if command -v gvim >/dev/null 2>&1 \
&& [ "$SSH_TTY$DISPLAY" = "${DISPLAY#*:[1-9][0-9]}" ]; then
  export VISUAL="$(command -v gvim) -f"
  SUDO_EDITOR="$VISUAL"
else
  SUDO_EDITOR="$EDITOR"
fi

gvim sem -f não funciona com programas que esperam atuar nas suas edições. Isso definitivamente inclui sudoeditor ( sudo -e ).

Isso pode quebrar se você tiver espaços em branco no caminho para o vim. Se isso é um problema, instale-o corretamente ou considere links simbólicos como /usr/local/bin/gvim

    
por 09.08.2016 / 22:28
0

Como não parece haver nenhum ambiente em que vi ou similar falharia, passei a configurar VISUAL para algo que precisa de um X DISPLAY e EDITOR para ex.

Principalmente, isso parece me causar problemas quando algum programa não usa o VISUAL.

    
por 03.08.2015 / 04:28