Ist es möglich, Menüs in (terminalbasiertem) vim zu erstellen und zu verwenden?

18

Ich richte virtualisierte Linux-Boxen (als lokale Entwicklungsserver) für Entwickler in einem Unternehmen ein, das hauptsächlich auf Windows basiert, und einige Entwickler machen (unter anderem) negative Risse in Bezug auf vim. (Sie scheinen Linux / Unix in irgendeiner Weise darzustellen und zu beweisen, dass die Umgebung äußerst schwierig zu bedienen ist.) Ich erinnere mich, als ich zum ersten Mal gezwungen war, vim zu verwenden (die Sysadmins weigerten sich, Emacs zu installieren!) Und die schwierige Initiale Lernkurve, also bin ich etwas sympathisch. Mir ist der Gedanke gekommen, dass nanoes möglich sein könnte, nanoskalige Menüs in vim einzurichten, um den Übergang zu erleichtern , anstatt sie vorzustellen (woran sie wahrscheinlich niemals vorbeikommen würden). (Ich habe eine sehr anfängerfreundliche .vimrc-Datei gefunden, die sie enthält, aber keine Menüs im Nano-Stil.)

Das einzige Problem ist, dass ich feststellen konnte, dass das Einrichten von Menüs in vim (nicht in gvim) nicht funktioniert hat, und meine Versuche, das Problem zu beheben, ließen mich nur ein weiteres Problem lösen. Bevor ich viel Zeit verschwenden möchte ich wissen, ob es tatsächlich möglich ist, da es anscheinend nur sehr wenige Informationen darüber gibt, wie man es macht.

Bilderstürmer
quelle
3
Nun ist dies in Vim Hilfe: :h console-menus.
Alexey
@ Alexey: danke! das ist sehr hilfreich zu wissen ... wenn ich nach unten scrolle zu Abschnitt "5.2 Neue Menüs erstellen", sieht es so aus, als würde es tun, was ich will.
Iconoclast

Antworten:

18

Ja, es ist möglich. Sie können laden menu.vim(die Standarddefinitionen für das gvim-Menü), oder Sie können einfach von vorne beginnen und Ihre eigenen erstellen und dann über darauf zugreifen :emenu. Dadurch erhalten Sie jedoch keine Nano-ähnlichen, immer sichtbaren Menüs. Es gibt Ihnen die Möglichkeit, durch Menüs zu navigieren, indem Sie die Befehlszeilenregisterkarte ausfüllen.

Wenn der Benutzer keinen vimrc hat, sollten Sie zunächst die vi-Kompatibilität deaktivieren:

:set nocompatible

Aktivieren Smart Befehlszeile Abschluss auf <Tab>(aktivieren Sie alle möglichen Optionen Auflisten und die Navigation , die Ergebnisse mit <Up>, <Down>, <Left>, <Right>, und <Enter>):

:set wildmenu

Durch wiederholtes Drücken können Sie zwischen allen übereinstimmenden Optionen wechseln:

:set wildmode=full

Laden Sie die Standardmenüs (dies würde in gvim automatisch passieren, aber nicht in terminal vim):

:source $VIMRUNTIME/menu.vim

Nach diesen vier Befehlen können Sie die Menüvervollständigung manuell auslösen, indem Sie die Tabulatorvervollständigung für den :emenuBefehl aufrufen:emenu<space><tab>

Sie können mit der Tabulatortaste, den Pfeiltasten und der Eingabetaste durch die Ergebnisse navigieren (es werden sowohl Untermenüs erweitert als auch Elemente ausgewählt). Sie können dies bequemer gestalten, indem Sie einen Schritt weiter gehen und eine Zuordnung binden, um das Menü zu öffnen, ohne :emenujedes Mal Folgendes eingeben zu müssen :

Machen Sie Strg-Z in einem Mapping so, als ob Sie <Tab>interaktiv auf die Befehlszeile drücken :

:set wildcharm=<C-Z>

Und machen Sie eine Bindung, die automatisch die :emenuVervollständigung für Sie aufruft :

:map <F4> :emenu <C-Z>
godlygeek
quelle
2
Brillant! Lass mich wissen, wie ich dir ein Bier kaufen kann!
Iconoclast
2

Ich selbst hatte das Problem, dass ich mir nicht alle Befehle und Tastenkombinationen für die von mir verwendeten Plugins merken kann. Außerdem wollte ich einfache Möglichkeiten haben, um Befehle schnell auszuführen, ohne neue Tastenzuordnungen festlegen oder Befehle erfinden zu müssen, um darauf zuzugreifen.

Vim-Venu

Ich habe ein kleines VIM-Menü-Plugin geschrieben , mit dem Sie Menüs für jeden Dateityp definieren können, den Sie mit VIM bearbeiten können. Auf diese Weise können Sie die Menüoption 'Kompilieren' für verschiedene Dateitypen definieren und die richtigen Anweisungen zum Kompilieren des Codes einleiten, je nachdem, welche Datei Sie bearbeiten (.py, .c, .c ++, ...). Oder erstellen Sie ein Untermenü für die Plug-in-Befehle "Tabelle" in einer Abschriftendatei.

Schau es dir hier an: https://github.com/Timoses/vim-venu

Als Randnotiz: Ich denke, jeder sollte seinen eigenen bevorzugten Texteditor wählen. Vim hat eine kleine Barriere (die es sich zu lernen lohnt!). Wenn jemand nicht bereit ist zu lernen, wird vim für diese Person nicht von großem Nutzen sein.

Otti
quelle