Alias ​​oder Funktion für Emacs-Befehl?

510
Frank Harris

Ich bin also an meinem ersten Tag an meinem neuen Job und auf dem Server, den wir verwenden, sind die Standard-Emacs X-Windows-basiert. Ich ziehe es vor, es in dem guten alten Terminal zu verwenden, und ich möchte, dass ich den Befehl emacs foo.txtals lesen lassen kann emacs --no-window-system foo.txt.

Ich habe versucht, dies durch Hinzufügen der Zeile function emacs() { emacs --no-window-system "$@" ;}zu meinem zu tun ~/.profile, und lief dann source ~/.profile, aber das System reagiert nicht darauf emacs foo.txt.

Mache ich das falsch? Als Alternative würde ich gerne wissen, ob das, was ich tun möchte, komplett rückwärts ist, und es stellt sich heraus, dass es eine viel einfachere Lösung gibt.

2

2 Antworten auf die Frage

1
Nifle

Das wäre besser als Alias.

Fügen Sie dies in Ihr .profile oder .bashrc ein

alias emacs='emacs -nw' 
Danke, leider bekomme ich auch keine guten Ergebnisse. Ich habe dies sowohl in .profile als auch in .bashrc ausprobiert, habe vorher `source.profile` oder` source.bashrc` ausgeführt und dann `emacs foo.txt` ausgeführt, aber beide Male passiert nichts, bis ich an dieser Stelle Ctrl + D eingebe es kehrt zur Eingabeaufforderung zurück. Frank Harris vor 10 Jahren 0
@FrankHarris Was passiert, wenn du nur 'emacs -nw foo.txt' machst? Ich habe noch nie einen Emacs-Build gesehen, der nur aus X bestand, aber ich denke, dass so etwas theoretisch möglich ist. Aaron Miller vor 10 Jahren 2
@AaronMiller, das Problem wurde behoben, nachdem ich mich ab- und wieder abgemeldet habe. Ich hatte den Eindruck, dass "source.profile" dasselbe erreichen würde, also nicht sicher, warum es dann nicht funktioniert hat! Es könnte ein völlig unabhängiger Fehler gewesen sein, aber der Punkt ist, dass es jetzt funktioniert. Danke für Ihre Hilfe! Frank Harris vor 10 Jahren 0
@AaronMiller Ich möchte dich wählen, aber ich bin neu und brauche anscheinend mehr Ruf. Ich werde versuchen, mich daran zu erinnern, wenn ich es bekomme; Du warst eine große Hilfe. Frank Harris vor 10 Jahren 0
@FrankHarris Danke und keine Sorgen! Freut mich zu helfen. Aaron Miller vor 10 Jahren 0
0
David Hull

Ich glaube, das Problem bei Ihrer ursprünglichen Lösung ist, dass der Aufruf emacsIhrer emacsFunktion ein rekursiver Aufruf der emacsFunktion ist. Sie können das emacs Programm anstelle Ihrer emacs Funktion aufrufen, indem Sie das Bash-Builtin verwenden command.

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

Ich habe den gegenteiligen Wunsch: Ich möchte Emacs automatisch im Hintergrund ausführen, wenn ich unter einem Fenstersystem laufe. Ich habe folgendes in meinem .bashrc:

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