Vim: Verwalten mehrerer Formulierungsalternativen

359
user345286

(Nachdem Sie dies gelesen haben, schlagen Sie bitte eine andere Formulierung für die Frage vor, da ich keinen besseren finden konnte.)

Beim Schreiben und Bearbeiten in Vim, ob Texte für Menschen oder Texte für Menschen und Computer (Code), kann ich mich oft nicht sofort für die endgültige Version eines Texts entscheiden, sei es ein Wort mit vielen Synonymen (in Prosa). oder ein Funktionsname mit noch unklarem Zweck (in Code). Zum Beispiel in Prosa:

Ich habe es geschafft, ihn zu überzeugen, ihn zu überreden, Linux anstelle von Windows zu verwenden.

Oder im Code:

def count/countEven/somethingElse(input) ... ... 

So sieht mein aktueller Workflow aus. Ich möchte alle möglichen Kandidaten für die endgültige Version des Textes nachverfolgen, deshalb stelle ich sie nach Schrägstrichen. Bei diesem Ansatz gibt es jedoch Probleme:

  1. Es macht Text schwer zu lesen. Vergleichen Sie meinen Workflow:

    Dies wird durch die Fähigkeit / Fähigkeit verstärkt, langwierige / monotone und komplizierte / schwierige Arbeit an Computer zu delegieren / zuzuweisen.

    Wie schreiben normale Leute:

    Dies wird durch die Fähigkeit verstärkt, monotone und schwierige Arbeit an Computer zu delegieren.

  2. Mein aktueller Ansatz hebt diese unvollendeten Textblöcke jedoch nicht hervor: Sie sehen aus wie ein normaler Teil des Textes.

  3. Ich habe Probleme zu erkennen, wo der noch nicht entschiedene Textabschnitt endet und der "normale" Text beginnt. Vor allem, wenn in einigen der Chunk-Kandidaten Leerzeichen vorhanden sind, z.

    ... überzeugen / streiten / überzeugen ...

    Es könnte bedeuten, dass ich diese vier Optionen habe:

    überzeugen in

    überzeugen

    argumentieren in

    argumentieren Sie überreden

    in Wirklichkeit besteht die Wahl zwischen

    überzeugen

    argumentieren in

    überzeugen

Kennen Sie also eine Lösung in Form von:

  • eingebaute Vim-Funktionalität
  • ein Plugin
  • etwas in meine .vimrc zu legen
  • noch etwas

um das Problem der Kombination all dieser Brocken in einer "Box" zu lösen, die einen nicht vom Lesen des Textes ablenkt?

Wenn nein, wo kann ich in der Vimscript-Dokumentation nachsehen (noch nie programmiert), um die Dropdown-Menü-Lösung zu implementieren (siehe unten)?

Danke im Voraus.

PS: Eine mögliche Lösung. Sprich ich habe diesen Text:

Ich habe es geschafft, ihn zu überzeugen, ihn zu überreden, Linux anstelle von Windows zu verwenden.

Mit der Lösung würde es so aussehen:

Ich habe es geschafft, ihn zu überzeugen, Linux anstelle von Windows zu verwenden.

Haupteigenschaften:

  1. Es zeigt nur den Chunk-Kandidaten meiner Wahl, während er die anderen versteckt
  2. Es zeigt optional, wie viele andere Kandidaten vorhanden sind
  3. Diese Stelle im Text wird hervorgehoben, möglicherweise mit einer anderen Textfarbe.

Um auf die anderen Kandidaten zuzugreifen, müsste ich den Cursor überreden [3] haben, auf eine spezielle Taste klicken, und es würde ein Dropdown-Menü mit allen anderen Kandidaten anzeigen, z. B. mit der Autocomplete-Funktion:

I've managed to *persuade[3]* him to use Linux instead of Windows. convince argue into 

Dann könnte ich (z. B. Strg-N oder Strg-P) die Option auswählen, die mehr passt. Die Möglichkeit, einen Kandidaten zu löschen, wäre auch schön.

Das ist nur eine der möglichen Lösungen.

0

1 Antwort auf die Frage

1
Ingo Karkat

Vergessen Sie zunächst nicht, dass Vim ein Texteditor ist, wohingegen Ihre Anwendungsfälle in die Richtung der benutzerdefinierten Bearbeitung gehen. Ich denke, es wird nicht viel an einer fertigen Lösung geben.

Plugin-Vorschlag

Was ich habe, ist mein TextFormComplete-Plugin, mit dem Sie die Alternativen in dieser Form schreiben können:

I've managed to [convince|argue into|persuade] him to use Linux instead of Windows. 

Dann fragt eine q|(oder <C-x>|im Einfügemodus) die Auswahl nach einer Auswahl ab und ersetzt die Vorlage damit. Das würde Ihnen bei der endgültigen Bearbeitung helfen, aber Sie können dies nur mit integriertem Rückgängigmachen überarbeiten . Dies würde es Ihnen ermöglichen, die Auswahl einer Alternative zu verschieben, während Sie die Sätze eingeben, aber Sie müssten sich bald danach entscheiden.

Implementierungszeiger

Eine Implementierung Ihres beschriebenen Prozesses ist möglich, aber ich würde dies nicht für einen absoluten Anfänger in Vimscript empfehlen. Mit der Funktion zum Verbergen (cp. :help conceal) Können Sie die Auswahlmöglichkeiten tatsächlich ausblenden oder ausblenden. Der "Auserwählte" müsste irgendwie markiert werden, z *convince. Sie können Zuordnungen schreiben, um die *Markierung leicht auf eine andere Auswahl zu ändern . Das Problem ist, dass das Verbergen auf Syntax-Hervorhebungen basiert und die gewohnte Hervorhebung von Dateitypen stören würde, z. B. wenn Sie versuchen, Auswahlmöglichkeiten in einem Kommentar (Java usw.) zu verwenden. Sie können dies nur umgehen, indem Sie alle anderen Syntaxelemente löschen.

Danke, Ingo, das ist hilfreich. TextFormComplete sieht überraschend nach dem aus, was ich meinte, es fehlen jedoch einige Funktionen. In erster Linie können Sie die Lieblingsvariante nicht erneut auswählen, wie Sie gesagt haben. Ihr Hinweis auf die Verdeckungsfunktion von Vim ist eine weitere Hilfe, die noch nie von dieser interessanten Funktion gehört wurde. user345286 vor 9 Jahren 0