псевдоним или функция для команды emacs?

417
Frank Harris

Итак, я в первый день на своей новой работе, и на используемом нами сервере emacs по умолчанию основан на X-windows. Я предпочитаю использовать его в старом добром терминале, и я бы хотел, чтобы команда emacs foo.txtчиталась как emacs --no-window-system foo.txt.

Я попытался сделать это, добавив строку function emacs() { emacs --no-window-system "$@" ;}в мой ~/.profile, а затем побежал source ~/.profile, но система не отвечает emacs foo.txt.

Я делаю это неправильно? В качестве альтернативы я хотел бы знать, является ли то, что я хочу сделать, полностью назад, и оказывается, что есть гораздо более простое решение.

2

2 ответа на вопрос

1
Nifle

Это было бы лучше как псевдоним.

Поместите это в свой .profile или .bashrc

alias emacs='emacs -nw' 
Спасибо, к сожалению, я тоже не получаю хороших результатов. Я пытался сделать это как в .profile, так и в .bashrc, предварительно запустил `source .profile` или` source .bashrc`, а затем запустил `emacs foo.txt`, но оба раза ничего не происходило, пока я не набрал Ctrl + D, после чего он возвращается к приглашению. Frank Harris 10 лет назад 0
@FrankHarris Что происходит, когда вы просто `emacs -nw foo.txt`? Я никогда не видел сборки Emacs, которая была бы только для X, но я полагаю, что такая вещь теоретически возможна. Aaron Miller 10 лет назад 2
@AaronMiller, проблема была решена после выхода из системы и повторного входа. У меня сложилось впечатление, что `source .profile` достигнет того же самого, поэтому не уверен, почему это не сработало тогда! Возможно, это была совершенно не связанная ошибка, но дело в том, что она работает сейчас. Спасибо за вашу помощь! Frank Harris 10 лет назад 0
@AaronMiller Я хочу проголосовать за тебя, но я новичок и, видимо, мне нужно больше репутации. Я постараюсь не забыть сделать это, когда получу это; ты мне очень помог. Frank Harris 10 лет назад 0
@FrankHarris Спасибо, и не беспокойтесь! Рад помочь. Aaron Miller 10 лет назад 0
0
David Hull

I believe that the problem with your original solution is that the call to emacs inside your emacs function is a recursive call to the emacs function. You can call the emacs program instead of your emacs function by using the bash builtin command.

function emacs() { command emacs --no-window-system "$@" ;} 

I have kind of the opposite desire: I want to automatically background emacs when I'm running under a window system. I have the following in my .bashrc:

if [ -n "$DISPLAY" ]; then function emacs() { (command emacs "$@" &) } fi