2011-01-06 17 views
24

¿Hay alguna forma de referencia (o "fuente") del archivo .vimrc de otro usuario?Cómo hacer referencia/fuente de un archivo .vimrc personalizado

Cuando yo kuu (una variante de su que usa tokens de seguridad kerberos) a una ID de usuario administrador, me gustaría usar mi archivo personal .vimrc.

No quiero sobrescribir el archivo existente .vimrc del administrador porque el ID de administrador es compartido por varios usuarios.

Respuesta

20

Usted puede utilizar la variable de entorno MYVIMRC. De esta forma, no tendrá que pasar -u cada vez que inicie vim. (Por supuesto, puede hacer un alias en su lugar, pero eso no va a ayudar con, por ejemplo, vipw)

Tenga en cuenta que .vimrc puede ejecutar comandos arbitrarios, si utiliza /home/user/.vimrc pueden estar creando un problema de seguridad (por ejemplo, alguien logra poner en peligro su cuenta de usuario, cambia su .vimrc y luego obtiene root la próxima vez que edita un archivo como root). Por supuesto, puede guardar una copia segura en ~root/ en algún lugar.

Es posible que incluso haya configurado algo en ~root/.bashrc para establecer automáticamente MYVIMRC a algo diferente para cada administrador diferente.

+0

Gracias por esto, es justo lo que pedí. Y también aprecio las advertencias de seguridad. –

+0

funciona para "vim" pero no para "vi" – Tagar

+0

@Ruslan, la pregunta es sobre un archivo * .vim * rc, entonces ... Tampoco funcionará para EMACS. O joe, o nano, o Microsoft Word. (Y si llama a vim como 'vi', entonces le está pidiendo que se ejecute en modo compatibilidad) [Probablemente esté malinterpretando lo que está tratando de decir; aclare.] – derobert

5

En vim:

:source /path/to/your/.vimrc

+0

No es suficiente: la RTP y no se actualiza esta manera - y, por supuesto, el .vimrc podría restablecer el y RTP. –

3

He intentado sólo alguna vez esto unas cuantas veces y este parece funcionar bien para mí. Definir un alias para vim que es algo así como lo siguiente:

alias vim="HOME=~yournormaluser vim -c 'let \$HOME = \"$HOME\"'" 

Lo que esto hace es engañar a vim a usar su entorno $HOME/.vim/, sin embargo restablece $HOME desde dentro de vim y para hacer las cosas como :e ~/something.txt aún utilizan de $HOME el usuario admin.

Esto tiene la ventaja adicional de que no tiene que cambiar el administrador ~/.vimrc en absoluto.

+0

Por otra parte, esto sería alias vim para todos los que usan ese usuario administrador. Cuando hice esto en el pasado, me encontraba en una situación en la que mi entorno era consciente de que estaba solicitando mi '$ USER' y obtenía' ~ $ USER/.aliases' para poder salirse con la suya. Quizás aún puedas usar esta información de alguna manera. –

+0

Parece que establece correctamente & rtp => +1 –

+0

agrega un alias randy_gvim, algo que es poco probable que los demás usen. –

18

Pruebe el parámetro -u y especifique una ruta a un archivo de configuración alternativo.

Por ejemplo: vim -u /home/jesse/myvimrc

Ver http://linuxcommand.org/lc3_man_pages/vim1.html

+1

No del todo desafortunadamente. 'man -u':' -u {vimrc} Usa los comandos en el archivo {vimrc} para inicializaciones'. Suena bien hasta ahora, pero también pone a vim en un modo especial que 'Todas las otras inicializaciones se omiten. Esto causó problemas difíciles de depurar para mí, que rastreé a' vim -u ~/vimrc' que no es equivalente a ' vim'. Lo que funcionó para mí fue: 'vim -u <(echo source/usr/share/vim/vimrc; cat ~/.vimrc)' utilizando la captura '' (...) 'del shell bash específico. – gmatht

1

Personalmente, simplemente enlace simbólicamente los .vimrc de Root con los míos. De BASH (como root):

ln -s /home/<me>/.vimrc /root/.vimrc

Pero sí es necesario tener cuidado con lo que está en él.

2

Supongo que su propietario inicial es dueño de su tty. Si es así, usted puede obtener su usuario inicial con:

stat -c'%U' `tty` 

Al colocar su .vimrc raíz personalizada en /root/.vimrc.$USRNAME puede mantener un archivo vimrc razonablemente seguro personalizado. También puedes hacer otras cosas, pero dejo eso a tu imaginación.

Método 1 - ponga esto en su humo /root/.bashrc & que:

# Source a custome vimrc if it exists 
mytty=`tty` 
initial_user=`stat -c'%U' $mytty` 
custom_vimrc="/root/.vimrc.$initial_user" 
if [ -f $custom_vimrc ]; then 
    export VIMINIT="source $custom_vimrc" 
fi 

Método 2 - poner algo similar en su fichero /root/.vimrc (una solución mejor, ya que podría utilizar ksh) .

Si alguien puede descubrir el Método 2, me gustaría recibir la publicación. Me falta motivación.

5

Utilice un archivo .vimrc alternativo sin complementos como se menciona, y agregue un alias en .bash_profile o algo.

alias svim='vim -u ~/.vimrc_simple' 

Realmente prefiero el siguiente:

alias vvim='vim -u ~/.vimrc_vundle' 

Para mantener vim como un comando de peso ligero, como la carga de complemento parece ir más despacio instanciación programa.

1

Método 2 - como una adición a .vimrc

probado diferentes cosas
tty no funciona, y tampoco system("who am i") (que vienen con las manos vacías cuando se utiliza dentro de vim-función), por lo que de esta manera es mucho más largo . Todos los accesos directos son bienvenidos

"Local .vimrc for the user 
" 1. get the user, which used su 
" 2. we can load his .vimrc.<user> 
" from $HOME (from where we have sudo'ed in) 
let b:term = substitute(system ("ps T | grep ' ps T$' | sed -e 's/^ *//' | cut -d ' ' -f 2 "), "\n", "", "") 
let b:user = substitute(system ("who | grep ".b:term." | cut -d ' ' -f 1 "), "\n", "", "") 
let b:file = $HOME."/.vimrc.".b:user 
if filereadable(b:file) 
    execute 'source '.b:file 
endif 
0

He creado un plugin hace años que no quería que mi propia .vimrc en nuestros servidores sin forzar a cualquier usuario que utilice sudo para navegar como root a mi .vimrc.

Mi complemento funciona exactamente como el complemento proporcionado por @ULick.

GIST

Cuestiones relacionadas