Est-il possible de créer et d'utiliser des menus dans vim (basé sur terminal)?

18

Je mets en place des boîtiers Linux virtualisés (en tant que serveurs de développement local) pour les développeurs d'une entreprise principalement basée sur Windows, et certains développeurs font des fissures négatives sur vim (entre autres). (Il leur semble représenter Linux / Unix d'une certaine manière, et prouver que l'environnement est difficile à utiliser.) Je me souviens quand j'ai été obligé pour la première fois d'utiliser vim, (les administrateurs système ont refusé d'installer emacs!) Et la difficulté initiale courbe d'apprentissage, donc je suis quelque peu sympathique. Il m'est venu à l'esprit que, plutôt que de les présenter nano(qu'ils ne dépasseraient probablement jamais), il pourrait être possible de configurer des menus de type nano dans vim pour faciliter la transition. (J'ai trouvé un fichier .vimrc très convivial pour les donner, mais il n'a rien à voir avec les menus de style nano.)

Le seul problème est la seule chose que j'ai pu trouver qui prétend qu'il est possible de configurer des menus dans vim (pas gvim) ne fonctionnait pas, et mes tentatives pour corriger le problème me laissaient juste un autre problème à résoudre. Avant de perdre beaucoup de temps, j'aimerais savoir si c'est réellement possible, car il semble y avoir très peu d'informations sur la façon de le faire.

iconoclaste
la source
3
Maintenant , cela est dans l' aide Vim: :h console-menus.
Alexey
@Alexey: merci! c'est très utile de savoir ... si je fais défiler vers le bas jusqu'à la section "5.2 Création de nouveaux menus" qui semble faire ce que je veux.
iconoclaste du

Réponses:

18

Oui c'est possible. Vous pouvez charger menu.vim(les définitions par défaut du menu gvim), ou vous pouvez tout simplement recommencer à zéro et créer les vôtres, puis y accéder :emenu. Cela ne vous donne cependant pas de menus nano-toujours visibles; il vous donne la possibilité de naviguer dans les menus à l'aide de la complétion de l'onglet de ligne de commande.

Si l'utilisateur n'a pas de vimrc, vous voudrez commencer par désactiver la compatibilité vi:

:set nocompatible

Activer l' achèvement intelligent de ligne de commande <Tab>(activer la liste de tous les choix possibles et naviguer dans les résultats avec <Up>, <Down>, <Left>, <Right>et <Enter>):

:set wildmenu

Faire des cycles de pressions répétées entre tous les choix correspondants:

:set wildmode=full

Chargez les menus par défaut (cela se produirait automatiquement dans gvim, mais pas dans le terminal vim):

:source $VIMRUNTIME/menu.vim

Après ces quatre commandes, vous pouvez déclencher manuellement l'achèvement du menu en appelant l'achèvement de l'onglet sur la :emenucommande, en faisant:emenu<space><tab>

Vous pouvez parcourir les résultats à l'aide de la touche de tabulation, des touches fléchées et de la touche Entrée (elle développe à la fois les sous-menus et sélectionne les éléments). Vous pouvez ensuite rendre cela plus pratique en allant plus loin et en liant un mappage pour faire apparaître le menu sans avoir à taper à :emenuchaque fois:

Faites Ctrl-Z dans un acte de mappage comme en appuyant de manière <Tab>interactive sur la ligne de commande:

:set wildcharm=<C-Z>

Et créez une liaison qui invoque automatiquement l' :emenuachèvement pour vous:

:map <F4> :emenu <C-Z>
godlygeek
la source
2
Brillant! Dites-moi comment je peux vous acheter une bière!
iconoclaste du
2

J'ai moi-même eu le problème de ne pas me souvenir de toutes les commandes et combinaisons de touches pour les plugins que j'utilise. De plus, je voulais avoir des moyens simples d'exécuter rapidement des commandes sans avoir à définir de nouveaux mappages de touches ou à inventer des commandes pour y accéder.

Vim-Venu

J'ai écrit un petit plugin de menu vim qui vous permet de définir des menus pour chaque type de fichier que vous pourriez éditer avec vim. De cette façon, vous pouvez définir l'option de menu «Compiler» pour différents types de fichiers et lancer les instructions correctes pour compiler le code en fonction du fichier que vous modifiez (.py, .c, .c ++, ...). Ou créez un sous-menu pour les commandes du plugin 'Table' dans un fichier de démarque.

Découvrez-le ici: https://github.com/Timoses/vim-venu

En remarque: je pense que tout le monde devrait choisir son propre éditeur de texte préféré. Vim a une petite barrière (qui mérite d'être étudiée!). Si quelqu'un ne veut pas apprendre, alors vim ne sera pas d'une grande utilité pour cette personne.

Otti
la source