È possibile creare e utilizzare menu in (basato su terminale) vim?


18

Sto installando scatole Linux virtualizzate (come server di sviluppo locale) per gli sviluppatori di una società basata principalmente su Windows, e alcuni sviluppatori fanno crepe negative su Vim (tra le altre cose). (Sembra che rappresentino in qualche modo Linux / Unix e dimostrino che l'ambiente è ottusamente difficile da usare.) Ricordo quando fui costretto a usare vim per la prima volta (gli amministratori di sistema si rifiutarono di installare emacs!) E la difficile iniziale curva di apprendimento, quindi sono in qualche modo comprensivo. Mi è venuto in mente che, piuttosto che introdurli a nano(che probabilmente non avrebbero mai superato), sarebbe stato possibile impostare menu nano-like in vim per facilitare la transizione. (Ho trovato un file .vimrc molto adatto ai principianti per darli, ma non ha niente come i menu in stile nano.)

L'unico problema è l'unica cosa che sono stato in grado di scoprire che affermare che è possibile configurare i menu in vim (non gvim) non ha funzionato, e i miei tentativi di correggere il problema mi hanno lasciato ancora un altro problema da risolvere. Prima di perdere molto tempo, vorrei sapere se è effettivamente possibile, dal momento che sembrano esserci pochissime informazioni su come farlo.


3
Ora, questo è in Vim aiuto: :h console-menus.
Alexey,

@Alexey: grazie! è molto utile sapere ... se scorro verso il basso fino alla sezione "5.2 Creazione di nuovi menu", sembra che farà quello che voglio.
iconoclasta il

Risposte:


18

Sì, è possibile. Puoi caricare menu.vim(le definizioni predefinite del menu gvim), oppure puoi semplicemente iniziare da zero e crearne uno tuo, quindi accedervi tramite :emenu. Questo però non ti offre menu sempre visibili simili a nano; ti dà la possibilità di navigare nei menu usando il completamento della scheda della riga di comando.

Se l'utente non ha un vimrc, ti consigliamo di iniziare disabilitando la compatibilità vi:

:set nocompatible

Abilita completamento intelligente riga di comando su <Tab>(abilitare messa in vendita di tutte le scelte possibili, e la navigazione con i risultati <Up>, <Down>, <Left>, <Right>, e <Enter>):

:set wildmenu

Fai scorrere ripetutamente le presse tra tutte le scelte corrispondenti:

:set wildmode=full

Carica i menu predefiniti (ciò avverrebbe automaticamente in gvim, ma non in terminal vim):

:source $VIMRUNTIME/menu.vim

Dopo questi quattro comandi, è possibile attivare manualmente il completamento del menu richiamando il completamento della scheda sul :emenucomando, eseguendo:emenu<space><tab>

Puoi navigare tra i risultati usando il tasto tab e i tasti freccia e il tasto invio (entrambi espande i sottomenu e seleziona gli elementi). Puoi quindi renderlo più conveniente facendo un ulteriore passo avanti e vincolando una mappatura per far apparire il menu senza dover digitare :emenuogni volta:

Fai in modo che Ctrl-Z in una mappatura agisca come una pressione <Tab>interattiva sulla riga di comando:

:set wildcharm=<C-Z>

E crea un'associazione che invoca automaticamente il :emenucompletamento per te:

:map <F4> :emenu <C-Z>

2
Brillante! Fammi sapere come posso offrirti una birra!
iconoclasta il

2

Ho avuto il problema da solo che non ricordo tutti i comandi e le combinazioni di tasti per i plugin che sto usando. Inoltre, volevo avere modi semplici per eseguire rapidamente i comandi senza dover impostare nuovi mapping dei tasti o inventare comandi per accedervi.

Vim-Venu

Ne ho scritto un piccolo plug-in per i menu di VIM che ti consente di definire i menu per ogni tipo di file che potresti modificare con Vim. In questo modo, è possibile definire l'opzione di menu 'Compila' per diversi tipi di file e avviare le istruzioni corrette per compilare il codice in base al file che si sta modificando (.py, .c, .c ++, ...). Oppure crea un sottomenu per i comandi del plugin 'Tabella' in un file markdown.

Controllalo qui: https://github.com/Timoses/vim-venu

Come nota a margine: penso che ognuno dovrebbe scegliere il proprio editor di testo preferito. Vim ha una piccola barriera (che vale la pena imparare!). Se qualcuno non è disposto a imparare, allora Vim non sarà di grande utilità per quella persona.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.