Impostazioni e plugin quando root (`sudo vim`)?


15

È davvero frustrante quando devo modificare un file come root e usare sudo vim somefile.confe non posso usare nessuna delle mie combinazioni di tasti, impostazioni e plugin.

C'è un modo per ottenere tutte le mie personalizzazioni quando devo modificarle come root?

Sto usando vim-plug per i miei plugin.


5
Nota a margine: sudo vim fileè meglio scritto come sudo -e file(purché tu abbia impostato la variabile d'ambiente EDITOR=vim).
lcd047

@ lcd047: dovresti trasformare quel commento in una risposta
static_rtti

Risposte:


15

Invece di aprire vim come root, puoi semplicemente salvare come root reindirizzando a tee. Ecco un esempio:

:w !sudo tee % > /dev/null

Questo può essere utile all'alias nel tuo .vimrc, io uso :Sw:

command! -nargs=0 Sw w !sudo tee % > /dev/null

4
Questo è utile per il I did a bunch of editing and then realized I should have used sudoedit, ma per il caso generale suggerirei di usare sudo -e/ sudoedit.
Jamessan,

7

Due cose:

  1. Utilizzare $ sudo -e fileper modificare filecon $EDITOR. Aggiungi export EDITOR=/path/to/vimse $EDITORnon è già impostato.

  2. Andare alla vaniglia è un modo eccellente per combattere la dipendenza da plugin.


-1 per aver suggerito il recupero della dipendenza da plugin (J / K, nessun downvote davvero)
Robbie Wxyz,

3
Nota che questo non esegue vim come root, come sudo vimfa. La modifica avviene come normale utente e quindi sudo gestisce l'aggiornamento del file originale.
Jamessan,

Nota: ci sono due opzioni simili a sudo: -Ee -e. -Esignifica "ambiente conservatore", e questo non è quello desiderato. -e, a sua volta, significa "non eseguire un comando, ma modificare un file con una procedura definita".
iksemyonov,

3

Sembra che tutto ciò che devi fare sia il link simbolico ~/.vimrce ~/.vim/quello tuo.

Esegui come root:

ln -s /home/<user>/.vimrc /root/.vimrc
ln -s /home/<user>/.vim/ /root/.vim/

E così dovrebbe andare!

(PS L'ho capito proprio ora e volevo condividere con qualsiasi altro noob. Per favore fatemi sapere se c'è un modo migliore.)


1
Ciò può spesso causare problemi in quanto alcuni file relativi a VIM verranno scritti come root nella directory principale e in seguito si verificheranno errori nel tentativo di eseguire la propria configurazione VIM come proprio utente.
Caleb,

0

Se sai in anticipo che devi modificare un file come root, usando i comandi sudoedit <file>o sudo -e <file>ti farà installare in un ambiente speciale per farlo con le tue solite preferenze dell'editor. Viene creata una copia del file e viene avviato l'editor per modificarlo (come utente). All'uscita, il file viene copiato nella posizione originale come root.

Questo è il modo più sicuro e consigliato, ma nel caso in cui a) non ti rendi conto in anticipo, dovrai scrivere come root o b) voler modificare e salvare sul posto cambiamenti incrementali, avrai bisogno di qualcos'altro. A tal fine la soluzione utilizzasudo tee proposta da smpl è sicuramente sulla buona strada, ma ci sono alcuni piccoli miglioramenti che possono essere fatti per gestire i casi limite. In particolare, la differenza nella gestione della richiesta della password sudo nelle interfacce GUI e console merita una certa attenzione.

Un modo più semplice per configurarlo è usare il plugin vim-eunuch . Ha questo particolare problema e alcune altre cose utili raggruppate in un pratico pacchetto. L'utilizzo è semplice come chiamare :SudoWrite. Uso persino una mappatura degli accessi leggermente più maneggevole:

cmap w!! call SudoWrite()

Ciò dovrebbe darti la possibilità di scrivere qualsiasi file come root usando :w!!.


-1

Un'altra opzione è eseguire sudo -E vim somefile.confper la modifica, che preserverà il tuo ambiente, quindi .vimrcverranno utilizzati i tuoi plugin e.


Ehi, bel trucco! Questo è molto utile per Vi e molti altri comandi.
Robbie Wxyz,

3
Questo ha gli stessi effetti collaterali che collegano la tua configurazione nella home directory di root: vale a dire che qualsiasi operazione vim o plugin che scriva dati di stato lo farà nella tua home directory. Questi file finiscono per essere di proprietà di root e causeranno errori in seguito poiché l'utente normale non sarà in grado di continuare a usarli.
Caleb,
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.