Qué hice y cuándo cambiaron las cosas:

Qué hice y cuándo cambiaron las cosas:

Estoy empezando a aprender bash y emacs y quería cambiar mi editor predeterminado de vi a emacs. Después de pasar por muchas preguntas interesantes en diferentes comunidades de StackExchange, no lo he descubierto y aparentemente (con suerte, solo temporalmente) estropeé mi vcomando al usar less. Ahora, cuando presiono vmientras leo un archivo less, en lugar de abrir vi (el valor predeterminado) o emacs (lo que me gustaría), no hace nada; es decir, hasta donde yo sé, permanece en less, y no puedo editar ningún texto. Afortunadamente, todavía puedo dejar de consumir qy no noto que nada más esté funcionando mal.

Qué hice y cuándo cambiaron las cosas:

Estoy usando el emulador de terminal provisto con mac osX, pero tengo XQuartz descargado. Usando homebrew cask instalé emacs.

Muchas preguntas en stackexchange hicieron un gran trabajo al explicar las variables $EDITORy $VISUALque se pueden configurar en mi .bash_profile. Dado que mi macbook viene con una versión anterior de emacs ya instalada, me aseguré de usar la versión actual de emacs instalada por homebrew.

Como apenas estoy empezando a aprender todo esto, no pude determinar la mejor manera de configurar todo. Así es como lo tengo actualmente en mi .bash_profile:

# changing emacs from the default osX version to the version obtained from homebrew                 
alias emacs="/usr/local/Cellar/emacs/25.2/Emacs.app/Contents/MacOS/Emacs"
alias enw="emacs -nw"

# setting emacs as the editor in term instead of vi                                                
EDITOR="enw";export EDITOR
VISUAL="enw";export VISUAL

Después de agregar el código anterior a mi .bash_profile, nada significativo (que yo sepa) cambió. Solía echo​​verificar que las variables $EDITORy $VISUALse cambiaran correctamente.

Cuando solía lessleer un archivo, todavía podía escribir v, pero mi terminal usaba vi para editar el archivo en lugar de los emacs deseados. Así que intenté cambiar la forma en que definí $EDITORy $VISUAL, por ejemplo, usando la ruta completa como en mi alias emacs=...con la -nwbandera en lugar de enw. Y también intenté eliminar las comillas. Nada de esto hizo nada diferente que yo pudiera decir.

Desafortunadamente, como recién estoy comenzando y no tengo ninguna tarea concreta en la que trabajar, solo estoy jugando con comandos y archivos básicos, razón por la cual he estado usando el lesscomando. Actualmente no estoy familiarizado con ninguna otra forma de usar la $EDITORvariable en la terminal. Así que no estoy seguro de si mi problema solo se refiere vo es un problema con $EDITOR.

Finalmente vi algunas preguntas relacionadas con esto que se recomendaba agregar ALTERNATE_EDITOR="";export ALTERNATE_EDITORy lo probé sin entender realmente por qué. Tampoco hay diferencias perceptibles con el vcomando en less.

Después de buscar un poco más encontréestepregunta, que parece la más cercana a mi plan original (aunque no estaba tratando de canalizar nada tal como lo entiendo; y desafortunadamente no entiendo qué es la "localización"). Entonces cambié $EDITOR="enw"a $EDITOR="env TERM=xterm-256color enw"y esto fue aproximadamente cuando vdejé de hacer algo mientras leía un archivo con less.

Antes de agregar el último código, verifiqué lo que $TERMnormalmente es, que ya era xterm-256colorpara mí. Ahora bien, no estoy diciendo que esto sea lo que arruinó mi vcomando, es solo la línea de tiempo donde vdejó de invocar vi mientras estaba en less. Cambié todo al primer código que probé, pero vtodavía no funciona para mí.

(Lo siento, esto es tan largo, ¡solo intento explicar el proceso en caso de que ayude!) Ahora, si comento mis $EDITORadiciones a mi .bash_profile, todo vuelve a la normalidad, lo cual es bueno, supongo. Entonces puedo usarlo vmientras lessno lo esté usando $EDITORy $VISUALen mi .bash_profile. Sin embargo, yodesearcambiarlos y aquí es donde está mi dilema. Probablemente sea una pregunta trivial, pero agradecería mucho cualquier consejo o idea.

PD: Mientras intentaba solucionar este problema, encontré emacsclientque puedo usar ese comando, pero no entiendo por qué debería usarlo en lugar de mi archivo enw.

Respuesta1

Los alias sólo están "activos" en la sesión actual del shell. lessno podrá invocar un alias a través de $EDITORo $VISUAL(y ningún otro proceso, excepto posiblemente el propio shell, tampoco lo haría).

En su lugar, establezca, por ejemplo, VISUALen

export VISUAL='/usr/local/Cellar/emacs/25.2/Emacs.app/Contents/MacOS/Emacs -nw'

o instálelo emacsen una ubicación estándar accesible a través de su $PATH, ya sea compilándolo usted mismo o usando algo como HomeBrew, MacPorts o Fink, y luego simplemente use export VISUAL='emacs -nw'.

información relacionada