Я начинаю изучать 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, все возвращается к норме, что, я полагаю, хорошо. Так что я могу использовать v
in, 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'
.