Afin de m'assurer que le comportement n'est pas affecté par ma configuration personnelle, je veux démarrer Vim d'une manière qui ignore tous mes fichiers de configuration installés par l'utilisateur, comme si Vim venait juste d'être fraîchement installé pour la première fois et que l'utilisateur l'avait exécuté immédiatement.
Ceci est résolu dans la FAQ qui suggère que la réponse est de démarrer Vim avec la commande suivante:
vim -u NONE -U NONE -N -i NONE
Cela arrive la plupart du temps, mais l' runtimepath
option contient toujours ~/.vim
et, notamment, ~/.vim/after
(donc par exemple si j'active ensuite la détection de type de fichier et change le type de fichier, le code ~/.vim/after/syntax/the_relevant_filetype.vim
sera exécuté).
Je peux contourner ce problème spécifique en appelant les commandes suivantes au démarrage *:
:set runtimepath-=~/.vim
:set runtimepath-=~/.vim/after
... mais je ne sais pas si:
- Il s'agit d'une solution robuste: sont-ce les seuls chemins qui peuvent faire en sorte que la configuration utilisateur prenne effet? Y a-t-il autre chose auquel je n'ai pas pensé?
- Il existe une meilleure façon d'atteindre le résultat souhaité.
* En utilisant --cmd
ou en -u vimrc
shell des arguments, ou simplement en les tapant manuellement.
EDIT : Voici un exemple spécifique du type de problème que j'essaie de résoudre. (Bien que j'aimerais que la solution corrige tout autre problème possible que je n'ai peut-être pas encore rencontré.):
Créez un fichier ~ / .vim / after / ftplugin / c.vim, contenant le contenu:
noremap i :echom "This is not default behaviour"<CR>
Nous avons maintenant une configuration installée par l'utilisateur que nous voulons ignorer. Testons la solution proposée par la FAQ.
Exécutez Vim avec la commande:
vim -u NONE -U NONE -N -i NONE
Entrez les commandes:
:filetype plugin on :set ft=c i
Comportement souhaité : Vim doit passer en mode Insertion. C'est ce qu'il ferait si aucune configuration utilisateur n'existait.
Comportement observé : Vim affiche "Ce n'est pas un comportement par défaut"
HOME=/dev/null vim -u NONE
?:cd ~
, mais également l'emplacement par défaut duviminfo
fichier est dans $ HOME, ce qui peut provoquer E138. Je suppose que créer un nouveau répertoire vide et l'utiliser pour $ HOME pourrait être la meilleure solution.-u NONE
?/tmp
, ça pourrait être mieux, c'était ma première pensée, mais j'ai ensuite choisi / dev / null comme trou noir. ... Ou quelque chose commeHOME=$(mktemp -d) vim ...
.-u NONE
? Cela dépend du comportement dont vous avez besoin, je suppose.Réponses:
Depuis Vim 8.0.1554 (malheureusement pas encore Neovim), vous pouvez l'utiliser
vim --clean
. Cette méthode est recommandée par:help bugs
.:help --clean
documents:la source
$HOME
variable. Développeurs Goodjob Vim. Et merci à vous pour la réponse!--clean
fonctionne également avecneovim
on master maintenant ( github.com/neovim/neovim/commit/… , à inclure dans la version 0.4.0), mais n'exclut pas le répertoire personnel.Une façon d'éliminer les fichiers spécifiques à l'utilisateur serait d'utiliser une valeur différente de
$HOME
. Pour ne rien lire ni écrire (comme viminfo), vous pouvez utiliser/dev/null
:Cela entraînera des erreurs
viminfo
, vous pouvez donc créer un dossier temporaire ou utiliser un dossier existant (comme/tmp
):Avec un tel
$HOME
,-u NONE
peut ne pas être nécessaire, selon ce que votre administrateur a ajouté à l'ensemble du systèmevimrc
. Par exemple, sur tous les systèmes de laboratoire que j'administre, j'ai ajouté une/etc/vim/vimrc.local
(source par défaut du Vim emballé/etc/vim/vimrc
) qui anocompatible
,syntax
, etc., ensemble, etfiletype on
aussi bien.la source
Je ne peux pas répondre à beaucoup de cela, mais un point que je ne vois pas mentionné, et répondre à une interprétation de ce qui est dans le titre
certains ont suggéré
vim -u NONE
ouvim -u NORC
c'est à certains égards un peu plus dépouillé qu'un simple fichier vimrc. Lorsque je tape «i», cela ne dit pas «insérer». Vous voudrez peut-être qu'il dise toujours «insérer». Si vous avez démarré vim avec votre fichier vimrc vierge, il affichera insert
c'est parce que vim charge d'abord une configuration par défaut.
Vous pouvez pointer vim vers ce fichier par défaut pour obtenir l'effet de la suppression de votre fichier vimrc. Vérifiez que vous avez
/etc/vim/vimrc
, et vous pouvez le fairevim -u /etc/vim/vimrc
ou sur osx, le fichier par défaut est/usr/share/vim/vicmrc
la source
vim --clean
va se chargerdefaults.vim
. Cette réponse se réfère au système vimrc (Voir:help system-vimrc
.), Qui je pense n'est pas chargé parvim --clean
.:help defaults.vim
), il serait préférable de changer le libellédefault config
ensystem vimrc
dans cette réponse. Ou encore mieux, discutez des deux dans la réponse!De Vim-FAQ 2.5 :
la source
ensure that none of the behaviour I'm seeing is caused by user config
- alors il semble que vous essayez de faire exactement ce qui est expliqué dans cette FAQ. J'ai relu votre question et je ne comprends toujours pas quelles sont les raisons que vous avez mentionnées.runtimepath
paramètre.runtimepath
? Cela semble être la valeur par défaut pour cette option, comme expliqué dans:help rtp
. Comment cette valeur affecte-t-elle votre test?