metti `.vimrc` nella cartella` .vim`


24

È possibile metterlo .vimrcnella .vimcartella in modo che io debba solo sincronizzare l'intera cartella e non la cartella e il file con altri computer?


2
Potresti considerare di conservare tutti i tuoi dotfile in un repository controllato con revisione. Tutti i miei dotfile sono conservati in una directory gestita da git. Questo repository contiene anche uno script per verificare la presenza di differenze tra il repository e i dotfile installati e uno script per copiare i dotfile nelle posizioni appropriate. Per configurare un'altra macchina, sostanzialmente copio il repository ed eseguo lo script di installazione.
Roland Smith,

Ho avuto lo stesso sistema, il mio dotfile è stato persino compilato da molti file sorgente separati, poiché un singolo file stava diventando troppo lungo
MrGreen

@RolandSmith Come si configura un repository con i file dot? Un modo a cui riesco a pensare è di eseguire git init nella tua cartella home ed escludere tutto tranne i file dot di cui vuoi tenere traccia.
Adammendoza,

@adammendoza Non li gestisco sul posto. Raccolgo tutto in un albero di directory e utilizzo uno script chiamato deploy per installarli. Leggi la descrizione sulla pagina github collegata per vedere come funziona.
Roland Smith,

C'è uno strumento chiamato VCSH che ti consente di rintracciarli in guy dalla tua directory home ma mantiene il repository da qualche altra parte.
Martin Ueding il

Risposte:


28

A partire da Vim 7.4 puoi anche posizionare un file vimrcin $HOME/.vim/vimrco $HOME/vimfiles/vimrcper Windows e Vim lo troverà automaticamente.

Nota, questo è vimrcsenza a. (punto) o _ (trattino basso) come dovrebbe avere il tradizionale file .vimrc / _vimrc.


Suona bene. Se lo desideri, puoi inserire il codice in backtick.
Martin Ueding,

7.4 è ora anche fuori beta ... quindi questo è probabilmente il modo migliore per farlo ora.
Ben

+1 per il mio nuovo modo standard di assegnare quei file. Nel caso in cui mi trovo su una macchina che non utilizza 7.4 ma una versione precedente, posso sempre creare un
collegamento

@Ben: Beh, ci vorrà un po 'prima che abbia 7.4 sulla mia macchina Ubuntu senza backport, quindi per ora rimarrà tale.
Martin Ueding,

15

Tengo il mio .vimrc in .vim e lo collego simbolicamente.

ln -s ~/.vim/.vimrc ~/.vimrc

Su Windows credo che tu possa fare lo stesso con mklink.


Lo faccio, e ho anche la directory .vimrc su github che lo rende molto semplice quando si configura un nuovo account. Questo è descritto nei primi passi di questo vimcast
pmac72,

5

Se dovessi creare un alias per vim per specificare la posizione di .vimrc in questo modo:

alias vim='vim -u ~/.vim/vimrc'

allora potresti fare a meno di avere .vimrc separato.

MA

Ciò causerà problemi con altri programmi che interagiscono con vim. Premendo 'v' in 'less' non funzionerà, poiché chiama vim tramite il contenuto della variabile env EDITOR. Suppongo che potresti aggiungere il bit '-u ...' nella variabile EDITOR. potrebbe funzionare.

Per gvim, dovresti usare una 'U' maiuscola, per specificare la posizione del file .gvimrc. Ancora una volta, i problemi ne conseguono a meno che non modifichi OGNI POSSIBILE possibile posizione di partenza di gvim nei link di partenza del gestore delle finestre.

Tutto sommato, suggerirei di usare il suggerimento di @ remyo se DEVI avere tutto in un unico sottodir.

È relativamente facile creare uno script post-pull che ristabilisca il collegamento tra 'repo / .vimrc' e '~ / .vimrc'.

In bocca al lupo.

(si potrebbe ricompilare vim da soli, specificare una nuova posizione predefinita per il file .vimrc.)


1
Okay, sembra creare più problemi che risolvere.
Martin Ueding,

2

Questo è esattamente quello che faccio, con questa singola riga nel mio ~/.vimrc:

runtime vimrc

2
Va bene, ma devo ancora avere un .vimrcmomento. Quindi uso solo quello che mi hai dato nell'altra domanda.
Martin Ueding,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.