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 v
comando al usar less
. Ahora, cuando presiono v
mientras 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 q
y 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 $EDITOR
y $VISUAL
que 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 $EDITOR
y $VISUAL
se cambiaran correctamente.
Cuando solía less
leer 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í $EDITOR
y $VISUAL
, por ejemplo, usando la ruta completa como en mi alias emacs=...
con la -nw
bandera 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 less
comando. Actualmente no estoy familiarizado con ninguna otra forma de usar la $EDITOR
variable en la terminal. Así que no estoy seguro de si mi problema solo se refiere v
o es un problema con $EDITOR
.
Finalmente vi algunas preguntas relacionadas con esto que se recomendaba agregar ALTERNATE_EDITOR="";export ALTERNATE_EDITOR
y lo probé sin entender realmente por qué. Tampoco hay diferencias perceptibles con el v
comando 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 v
dejé de hacer algo mientras leía un archivo con less
.
Antes de agregar el último código, verifiqué lo que $TERM
normalmente es, que ya era xterm-256color
para mí. Ahora bien, no estoy diciendo que esto sea lo que arruinó mi v
comando, es solo la línea de tiempo donde v
dejó de invocar vi mientras estaba en less
. Cambié todo al primer código que probé, pero v
todaví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 $EDITOR
adiciones a mi .bash_profile, todo vuelve a la normalidad, lo cual es bueno, supongo. Entonces puedo usarlo v
mientras less
no lo esté usando $EDITOR
y $VISUAL
en 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é emacsclient
que 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. less
no podrá invocar un alias a través de $EDITOR
o $VISUAL
(y ningún otro proceso, excepto posiblemente el propio shell, tampoco lo haría).
En su lugar, establezca, por ejemplo, VISUAL
en
export VISUAL='/usr/local/Cellar/emacs/25.2/Emacs.app/Contents/MacOS/Emacs -nw'
o instálelo emacs
en 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'
.