Что я сделал и когда все изменилось:

Что я сделал и когда все изменилось:

Я начинаю изучать bash и emacs и хотел бы изменить свой редактор по умолчанию с vi на emacs. После того, как я задал много замечательных вопросов в разных сообществах stackexchange, я так и не разобрался и, по-видимому, (надеюсь, только временно) перепутал команду vпри использовании less. Теперь, когда я нажимаю vво время чтения файла в less, вместо того, чтобы открыть vi (по умолчанию) или emacs (то, что мне бы хотелось), он ничего не делает; то есть он остается в less, насколько я могу судить, и я не могу редактировать текст. К счастью, я все еще могу выйти из использования qи не замечаю, чтобы что-то еще работало.

Что я сделал и когда все изменилось:

Я использую эмулятор терминала, поставляемый с mac osX, но у меня загружен XQuartz. Используя homebrew cask, я установил emacs.

Многие вопросы на stackexchange отлично объяснили $EDITORи $VISUALпеременные, которые можно задать в моем .bash_profile. Поскольку мой macbook поставляется с уже установленной старой версией emacs, я постарался использовать текущую версию emacs, установленную homebrew.

Так как я только начинаю изучать все это, я не смог определить лучший способ настройки всего этого. Вот как это у меня сейчас в моем .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

После добавления кода выше в мой .bash_profile ничего существенного (насколько я мог сказать) не изменилось. Я использовал echoдля проверки того, что переменные $EDITORи $VISUALбыли правильно изменены.

Когда я использовал lessдля чтения файла, я все еще мог набрать v, но мой терминал использовал vi для редактирования файла вместо желаемого emacs. Поэтому я попытался изменить то, как я определил $EDITORи $VISUAL, например, используя полный путь, как в моем alias emacs=...с -nwфлагом вместо enw. И я также попытался удалить кавычки. Ничто из этого не сделало ничего другого, насколько я мог заметить.

К сожалению, поскольку я только начинаю и у меня нет конкретных задач для работы, я просто возюсь с базовыми командами и файлами, поэтому я использую эту lessкоманду. В настоящее время я не знаком ни с каким другим способом использования $EDITORпеременной в терминале. Поэтому я не уверен, относится ли моя проблема только vк $EDITOR.

В конце концов я увидел несколько вопросов, касающихся этого, где рекомендовалось добавить, ALTERNATE_EDITOR="";export ALTERNATE_EDITORи поэтому я попробовал это, не понимая, почему. Также нет заметной разницы с vкомандой в less.

После некоторых поисков я нашелэтотвопрос, который кажется наиболее близким к моему первоначальному плану (хотя я не пытался ничего передать по конвейеру, как я это понимаю; и я, к сожалению, не понимаю, что такое «подкачка»). Поэтому я изменил $EDITOR="enw"на $EDITOR="env TERM=xterm-256color enw"и это было примерно тогда, когда vперестал что-либо делать во время чтения файла с less.

Перед тем, как сделать последнее добавление кода, я проверил, что $TERMобычно, что уже было xterm-256colorу меня. Теперь я не говорю, что это испортило мою vкоманду, это просто временная шкала, где vперестал вызывать vi, пока в less. Я изменил все обратно на самый первый код, который я пробовал, но vу меня все равно не работает.

(Извините, что так длинно, просто пытаюсь объяснить процесс, на всякий случай!) Теперь, если я закомментирую свои $EDITORдополнения к моему .bash_profile, все возвращается к норме, что, я полагаю, хорошо. Так что я могу использовать vin, lessпока я не использую $EDITORи $VISUALв моем .bash_profile. Однако яхотетьчтобы они изменились, и вот где моя дилемма. Это, вероятно, тривиальный вопрос, но я был бы очень признателен за любой совет или понимание.

PS- Пытаясь решить эту проблему, я наткнулся emacsclientна то, что могу использовать эту команду, но не понимаю, почему я должен использовать ее вместо своего enw.

решение1

Псевдонимы «активны» только в текущем сеансе оболочки. lessне сможет вызвать псевдоним через $EDITORили $VISUAL(и никакой другой процесс, за исключением, возможно, самой оболочки, тоже не сможет).

Вместо этого установите, например VISUAL,

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

или установите emacsв стандартное расположение, доступное через ваш $PATH, либо скомпилировав его самостоятельно, либо используя что-то вроде HomeBrew, MacPorts или Fink, а затем просто используйте export VISUAL='emacs -nw'.

Связанный контент