Ma config Vim inclut les plugins qui tentent de gérer projet en cours, les balises de construction, etc . C'est assez utile pour ma programmation quotidienne dans Vim, mais c'est juste ennuyeux quand j'utilise Vim pour des modifications rapides, comme:
- éditer un message de validation git;
- éditer une commande shell lorsque je tape Ctrl+xCtrl+ezsh ou bash;
- etc.
Je n'aime pas non --noplugins
plus, car je veux toujours profiter de certains plugins en mode d'édition rapide, tels que surround, easy-motion et bien d'autres.
Donc, je veux avoir un "mode léger" (ou "mode rapide"), dans lequel certains des plugins seront contournés, mais pas tous.
Ma première idée était d'avoir un argument spécial en ligne de commande, que j'analyserais en vimscript, mais une recherche rapide sur Google montre qu'il est actuellement impossible dans vimscript (horriblement triste, au fait).
Ma deuxième idée est de définir une variable d'environnement lors de l'exécution de vim, comme ceci:
$ VIM_LIGHT_MODE=1 vim
Cela fonctionne dans git:
$ git config --global core.editor 'VIM_LIGHT_MODE=1 vim'
Mais si je le fais EDITOR='VIM_LIGHT_MODE=1 vim'
et que je tape Ctrl+xCtrl+edans le shell, cela ne fonctionne pas:
edit-command-line:13: command not found: VIM_LIGHT_MODE=1
Ensuite, j'ai essayé ceci:, EDITOR="bash -c 'VIM_LIGHT_MODE=1 vim'"
mais il échoue également:
vim': -c: line 1: syntax error: unexpected end of file
(Pour être honnête, celui-ci a l'air particulièrement étrange, il semble que je ne comprenne pas exactement comment il $EDITOR
est utilisé, et je serais heureux si quelqu'un explique ce qui se passe ici)
Toutes les autres expériences ont également échoué.
Le seul hack auquel je peux penser est d'en définir servername
, comme:
$ vim --servername VIM_LIGHTWEIGHT_MODE
Et puis vérifiez v:servername
dans vimscript, mais c'est un hack total : ce n'est pas du tout le nom du serveur.
Existe-t-il un moyen plus propre de réaliser ce que je veux?
la source
env
:EDITOR='env VIM_LIGHT_MODE=1 vim'
.vim
tant quevim -u .vimrc-light
.env
tout au courant , mon shell-fu est encore trop faible. Pensez à l'écrire comme réponse, afin que je puisse l'accepter.Réponses:
Il y a (au moins) deux possibilités:
utiliser
env
:utiliser
vim
avec un autre fichier d'initialisation, par exemple.vimrc-light
:la source
Bien que la réponse acceptée soit certainement meilleure, j'aimerais en discuter
EDITOR="bash -c 'VIM_LIGHT_MODE=1 vim'"
. Le problème ici est qu'ilEDITOR
est invoqué avec des arguments et que les arguments passés àbash -c
ne sont pas transmis automatiquement àvim
. Vous devez utiliser"$@"
:Cependant, le premier argument après la commande dans
bash -c
est$0
, qui ne fait pas partie de$@
, vous devez donc utiliser un argument d'espace réservé:Avec ces pièges, ce n'est pas une bonne option, mais néanmoins réalisable.
la source
En fait, votre première idée est possible, de manière élégante aussi. Vous pouvez créer une commande définie par l'utilisateur, puis appeler vim avec la
+
syntaxe.Définissez simplement une commande utilisateur personnalisée dans votre
.vimrc
fichier comme ceci:Ensuite, à partir de la ligne de commande, vous pouvez démarrer vim comme ceci:
Je l'ai utilisé dans ma
.vimrc
prise de notes facile, comme ceci:Cela permet de l'appeler avec cela
vim +Note
. Créez ensuite un alias de shell dans votrerc
fichier shell , pour permettre un appel encore plus facile. Dans mon.bashrc
fichier, j'alias les commandes vim ci-dessus comme ceci:Exemple de solution
Dans votre cas, vous pouvez écrire quelque chose dans ce sens dans votre
.vimrc
fichier:Ensuite, testez le mode d'éclairage comme vous le souhaitez par plug-in ou par groupe de plug-ins, etc. en utilisant une
if
instruction vim similaire à celle-ci dans votre.vimrc
fichier:À noter
!
après la commande vimcommand!
signifie que cela remplacera toutes les commandes définies de manière similaire avec le même nom. C'est préférable.CustomUserCommandName
MUST doit avoir la première lettre en majusculeg:
vous pouvez utilisers:
ou toute portée qui correspond à vos besoins.la source