¿Cómo especifico la configuración de Vim para todos los archivos en el directorio actual?
La solución ideal sería que Vim buscara y leyera un .vimrc en el directorio actual antes de buscar ~ / .vimrc, y aplicara la configuración allí para todo el árbol.
He visto un complemento , pero esto significa que la configuración aplicada no es transparente, ya que requiere la instalación del complemento. Por el contrario, una línea de modelo es transparente, ya que independientemente del vimrc de un usuario o la invocación de vim específica, la configuración de la línea de modelo se aplicará a ese archivo.
Las cosas que probé son
- colocando un .vimrc en el directorio de trabajo
:so vimrc
en la línea de modelos.
Supongo que ambos no funcionan por razones de seguridad. No necesito todo el poder de un vimrc; sería suficiente estar vinculado a configuraciones aceptables por una línea de modelo. Mi objetivo es facilitar que los vimmers adopten estándares de codificación en un proyecto.
Respuestas:
Soy un defensor de la forma de los complementos . Por varias razones:
Por cierto, la solución de sth se puede utilizar para obtener un solo archivo de configuración. Esto es muy similar al enfoque del complemento, excepto que el .vimrc tiene que ser parasitado con opciones no globales y no admite archivos de configuración múltiples / compartidos fácilmente.
fuente
Puedes poner algo como esto en
$VIM/vimrc
fuente
Recomiendo encarecidamente no usar
set exrc
Incluso con
set secure
, bajo * nix, vim seguirá ejecutando autocomandos, shell, et al, si es el propietario del archivo. Entonces, si sucedió que editó un archivo en ese tarball que le envié con un.vimrc
contenido:probablemente te divertirás menos que a mí.
fuente
Esta pregunta es antigua, pero parece una preocupación bastante natural y persistente.
Mi solución es bastante simple. Coloco un
.vimrc
archivo en el directorio raíz de mis proyectos. La primera línea del.vimrc
archivo generalmente se origina~/.vimrc
y luego agrega la configuración particular que quiero. Alias Itvim='vim -u .vimrc'
, y el usotvim
en mis directorios de proyectos personales. "tvim" para "confiable vim", lo que significa que si lo ejecuto en un directorio con un.vimrc
archivo y algo sale mal, no tengo a nadie a quien culpar más que a mí mismo, ya que dije explícitamente que confiaba en él. Además, guardo un grupo de estos almacenados para que a veces pueda simplemente vincular el que quiero para un tipo de proyecto en particular.fuente
source $HOME/.vimrc
desde mi local.vimrc
, Vim se queja de que no puede encontrar mis complementos instalados en todo el sistema (patógeno en este caso; elexecute pathogen#infect()
comando encima de mi$HOME/.vimrc
fallaUnknown function ...
). ¿Cómo puedo arreglar esto?En realidad, se admite colocar un .vimrc en el directorio de trabajo, solo que está deshabilitado de forma predeterminada. Consulte
:h 'exrc'
y:h startup
para obtener más detalles, la configuración'exrc'
permitirá leer.vimrc
desde el directorio actual.También se recomienda
:set secure
al usar esto. Esto bloquea:autocmd
, shell y escribe comandos.vimrc
en el directorio actual.Otra cosa que podría valer la pena considerar es configurar una sesión (
:h session
) con una vista y configuraciones estándar para el proyecto.Dicho todo esto, probablemente optaría por la opción de complemento detallada por Luc Hermitte.
fuente
Para minimizar los riesgos de seguridad con CUALQUIER característica de "ejecución automática" para CUALQUIER COSA en estos días, ¿puedo recomendarle que utilice las características existentes de vim en lugar de complementos (equipaje de portabilidad)?
P.ej.
El archivo vimrc de mi carpeta local se llama "_gvimrc" (a propósito). Esto reduce la esperanza de que personas como phen se diviertan a costa nuestra. :-)
En mi archivo $ VIM / .vimrc, inserté:
al final.
Utilizo "filereadable ()" sobre "fileexists ()" ya que el último tiene algunas peculiaridades cuando se tortura al abrir varios archivos (10+) simultáneamente, (no estoy seguro de por qué).
Por supuesto, puede dar su propio nombre de archivo único para ocultar aún más a los posibles alborotadores. Como "_mygvimrc", "_gobbledygook", etc. Solo necesita elegir un nombre estandarizado y obtenerlo en consecuencia en su $ VIM / .vimrc. Confiar en los componentes internos de vi / vim para esto descarta problemas de portabilidad. PERO, NO lo nombre .vimrc (o _vimrc) para evitar el origen recursivo en caso de que esté editando el archivo $ VIM / .vimrc con vim más tarde.
He estado usando esto desde Windoze 98SE, a través de Windork XP Pro, y ahora Windorkier 7 (más de 5 años ya). Marcaré una lista de archivos .txt en el Explorador y luego usaré "Editar con múltiples Vim", lo que resultará en la apertura de múltiples ventanas vim simultáneamente. Para mi trabajo, hago esto varias veces al día, todos los días. Todos los archivos se trataron con lo que configuré en mi _gvimrc local.
fuente
Suponiendo que las personas no agregan archivos cada pocos días, probablemente pueda agregar una línea de modelo en la parte superior de cada archivo. De hecho, si su sistema de control de versiones lo permite, probablemente podría aplicar una regla que diga que cada archivo debe tener una línea de modelo cuando se registra.
fuente
Estoy de acuerdo con el enfoque del complemento por razones de seguridad.
Hay un complemento muy bueno que aún no se ha mencionado. Te permite usar un
.lvimrc
en los directorios de tu proyecto.Prueba "localvimrc":
http://www.vim.org/scripts/script.php?script_id=441
https://github.com/embear/vim-localvimrc
fuente
Utilice "editorconfig"
Si los tipos de estándares de codificación que le gustaría hacer cumplir están relacionados con el estilo de sangría, el tamaño de la pestaña, el formato de archivo y el juego de caracteres, entonces es posible que desee buscar en "editorconfig" , que es un estándar de editor cruzado para especificar este tipo de configuraciones en un proyecto específico y que todos los editores sigan esa configuración.
La especificación "editorconfig" permite que los proyectos soliciten diferentes configuraciones según las extensiones de archivo o los nombres dentro del proyecto. (Para que pueda tener Makefiles usando TAB, sus scripts de Python usando 4 espacios y sus scripts de shell usando 2 espacios para la sangría).
Necesita un complemento para usar "editorconfig" en Vim. El sitio web oficial proporciona uno, pero personalmente recomendaría sgur / vim-editorconfig , que está escrito en Vimscript puro, por lo que no necesita preocuparse demasiado por las dependencias externas.
Dado que "editorconfig" apunta a la compatibilidad entre editores, es bastante limitado en lo que hace, por lo que si desea un espacio en blanco consistente, formato de archivo (DOS vs.Unix) y codificación (Unicode utf-8, etc.), entonces "editorconfig " es para ti.
fuente
Prueba vim-localrc
https://github.com/thinca/vim-localrc/blob/master/doc/localrc.txt
fuente
Miré los complementos que existían y realmente no me gustó ninguno de ellos, así que escribí una función simple que se aplica a vim-fugitive . La ventaja de esto es que sabe que la raíz del proyecto es siempre la raíz del repositorio y, además, puedo aplicar un hash al archivo para mantener una tabla de confianza. Simplemente ponga lo siguiente en su
.vimrc
archivo.Si la
!
opción está configurada en laviminfo
configuración, elSAFE_VIMRC
diccionario se conservará entre ejecuciones (tenga en cuenta que^
debe anteponer la opción para que no estropee lan
opción).fuente