Benutzerdefinierte Funktion als „Bearbeiten“ in Midnight Commander

Benutzerdefinierte Funktion als „Bearbeiten“ in Midnight Commander

Das Problem

Ich verwende tmux und möchte, dass MC Dateien zum Bearbeiten in einem anderen tmux-Fenster öffnet, sodass ich während der Bearbeitung weiter in den Dateien stöbern kann.

Was ich versucht habe

MC prüft, ob die EDITOR-Variable gesetzt ist, und interpretiert sie dann als Programm zum Bearbeiten. Wenn dies der Fall ist, export EDITOR=vimverwendet MC vim zum Öffnen von Dateien.

Ich habe versucht, darauf aufzubauen:

function foo () { tmux new-window "vim $1"; }
export EDITOR=foo

Wenn ich $EDITOR some_filedas tue, öffne ich die Datei in Vim in einem anderen Tmux-Fenster – genau das, was ich wollte.

Leider wird es beim Versuch, in MC zu bearbeiten, für eine Sekunde leer und kehrt dann zum normalen MC-Fenster zurück. MC scheint keine Protokolle zu führen und ich erhalte keine Fehlermeldung.

Die Fragen)

  • Weißt du, was ich falsch mache?
  • Haben Sie eine brauchbare Problemumgehung für mein Anliegen?
  • Soll ich eine Funktionsanforderung/einen Fehler für MC erstellen?

Antwort1

Sie definieren eine Shell-Funktion, deren Name unbekannt ist, mcwenn sie versucht, den Editor zu starten.

Der richtige Weg besteht darin, ein Bash-Skript zu erstellen, keine Funktion. Legen Sie dann EDITOReinen Wert fest, zum Beispiel:

$ cat ~/myEditor.sh
#!/bin/sh
tmux new-window "vim $1"

export EDITOR=~/myEditor.sh

Antwort2

Sie können Dateien bereits während der Bearbeitung durchsuchen. Der interne Editor von MC ist ein nicht-modales Dialogfeld. Drücken Sie einfach Alt-Shift-[(und Alt-Shift-[), um zwischen den Dialogfeldern zu wechseln (eines davon ist der Dateibrowser).

verwandte Informationen