Je configure des boîtiers Linux virtualisés (en tant que serveurs de développement locaux) pour les développeurs d'une entreprise principalement basée sur Windows, et certains développeurs font des fissures négatives à propos de vim (entre autres). (Il leur semble représenter Linux/Unix d'une certaine manière et prouver que l'environnement est obtus difficile à utiliser.) Je me souviens quand j'ai été forcé d'utiliser vim pour la première fois (les administrateurs système ont refusé d'installer emacs !) et la difficile courbe d'apprentissage, donc je suis quelque peu sympathique. Il m'est venu à l'esprit que, plutôt que de leur 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 débutants, mais il n'a rien à voir avec les menus de style nano.)
Le seul problème est que la seule chose que j'ai pu trouver qui prétend qu'il est possible de configurer des menus dans vim (pas gvim) n'a pas fonctionné, et mes tentatives pour corriger le problème m'ont laissé un autre problème à résoudre. Avant de perdre beaucoup de temps, j'aimerais savoir si c'est en fait possible, car il semble y avoir très peu d'informations sur la façon de le faire.
Réponse acceptée :
Oui c'est possible. Vous pouvez charger menu.vim
(les définitions de menu gvim par défaut), ou vous pouvez simplement commencer à partir de zéro et créer les vôtres, puis y accéder via :emenu
. Cependant, cela ne vous donne pas des menus toujours visibles de type nano; il vous donne la possibilité de naviguer dans les menus à l'aide de la saisie semi-automatique de la ligne de commande.
Si l'utilisateur n'a pas de vimrc, vous voudrez commencer par désactiver la compatibilité vi :
:set nocompatible
Activer la complétion intelligente de la ligne de commande sur <Tab>
(activer la liste de tous les choix possibles et naviguer dans les résultats avec <Up>
, <Down>
, <Left>
, <Right>
, et <Enter>
):
:set wildmenu
Faites défiler les appuis répétés 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 le :emenu
commande, 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 les sous-menus et sélectionne des éléments). Vous pouvez ensuite rendre cela plus pratique en allant un peu plus loin et en liant un mappage pour faire apparaître le menu sans avoir à taper :emenu
à chaque fois :
Faites en sorte que Ctrl-Z dans un mappage agisse comme si vous appuyiez sur <Tab>
interactivement sur la ligne de commande :
:set wildcharm=<C-Z>
Et créez une liaison qui invoque automatiquement :emenu
achèvement pour vous :
:map <F4> :emenu <C-Z>