qu'est-ce que .netrwhist?

122

Lorsque je modifie des fichiers dans mon ~/.vim, le .netrwhistfichier est également mystérieusement modifié.

C'est du contenu:

let g:netrw_dirhistmax  =10
let g:netrw_dirhist_cnt =6
...and so on...

Que fait ce fichier? Est-ce important?

Lai Yu-Hsuan
la source

Réponses:

118

netrw est une sorte de plugin / script vim qui prend en charge la lecture et l'écriture de fichiers sur les réseaux. .netrwhistest un fichier d'historique qui conserve tous les répertoires modifiés. Ainsi, chaque fois que vous en modifiez le contenu, ~/.vimvous ajoutez une entrée dans.netrwhist

Un échantillon .netrwhistest comme indiqué

let g:netrw_dirhistmax  =10
let g:netrw_dirhist_cnt =6
let g:netrw_dirhist_1='/Users/wolever/EnSi/repos/web/env/web/lib/python2.6/site-packages/django'
let g:netrw_dirhist_2='/private/tmp/b/.hg/attic'
let g:netrw_dirhist_3='/Users/wolever/code/sandbox/pydhcplib-0.6.2/pydhcplib'
let g:netrw_dirhist_4='/Users/wolever/EnSi/repos/common/env/common/bin'
let g:netrw_dirhist_5='/Users/wolever/EnSi/repos/common/explode'
let g:netrw_dirhist_6='/Users/wolever/Sites/massuni-wiki/conf'

netrw_dirhistmaxindique le nombre maximum de répertoires modifiés qu'il stocke dans le fichier historique. c'est-à-dire la taille maximale de l'historique. netrw_dirhist_cntindique le nombre d'historique actuel des répertoires modifiés.

Si vous souhaitez désactiver netrw pour générer un fichier d'historique, voyez ceci .

Pavan Manjunath
la source
1
OK mais ... pourquoi netrw maintient-il un fichier d'historique? Si je le supprime automatiquement comme suggéré par votre lien, qu'est-ce qui casse?
Han Seoul-Oh
1
En relation, s'il est destiné aux fichiers distants , pourquoi enregistre-t-il les chemins des fichiers locaux?
zaTricky
13

De plus, si on met g:netrw_dirhistmaxà zéro, netrw n'enregistrera aucun historique ni signets:

:let g:netrw_dirhistmax = 0

Cela n'entraînera cependant pas la suppression de fichiers antérieurs .netrwhistou de .netrwbookfichiers.

user21497
la source
1
@glts mais ... quel est l'inconvénient de netrw de ne pas enregistrer de signets d'historique? En quoi mon expérience avec Vim est-elle différente?
Han Seoul-Oh
11

De plus, si vous souhaitez que vim respecte les spécifications du répertoire de base XDG afin d'éviter que votre dossier personnel ne soit jonché par des fichiers dotfiles comme ~/.vim, vous souhaiterez peut-être séparer les fichiers mis en cache et les fichiers d'historique de votre configuration (qui réside généralement dans le runtime chemin). Ainsi , par exemple, pour stocker .netrwhistdans ~/.cache/vim, vous pouvez essayer

let g:netrw_home=$XDG_CACHE_HOME.'/vim'
ayekat
la source
Si votre dossier .vim se trouve ailleurs que .vim, il est probable que ce nouvel emplacement se trouve sur le chemin d'exécution de vim. g: netrw_home est défini sur le premier répertoire sur le chemin d'exécution par défaut, qui à son tour est par défaut $ HOME / .vim. Donc, si vous (ayekat) avez correctement configuré votre chemin d'exécution, vous ne devriez pas avoir à modifier g: netrw_home.
user21497
@ user21497 C'est vrai. D'un autre côté, si vous souhaitez séparer votre configuration d'éléments tels que les fichiers d'échange, les fichiers d'annulation ou (comme ici) netrwhist, définir correctement le chemin d'exécution ne résout que partiellement le problème. Mais je vais modifier la réponse pour que cela soit un peu plus clair.
ayekat
3

À partir du manuel de référence netrw:

                        *.netrwhist*
See |g:netrw_dirhistmax| for how to control the quantity of history stack
slots.  The file ".netrwhist" holds history when netrw (and vim) is not
active.  By default, it's stored on the first directory on the user's
|'runtimepath'|.

Dans mon cas, le premier chemin d'accès runtimepathest ~/.vim(vérifiez avec :echo &runtimepath). Je suis bon avec ça, donc je n'ai pas besoin de changer g:netrw_home.


  *g:netrw_dirhistmax*            =10: controls maximum quantity of past
                                       history.  May be zero to supppress
                                       history.

Donc, oui, let g:netrw_dirhistmax=0arrêtera d'écrire dans le fichier historique.

Ericbn
la source