De manera predeterminada, vim
deja los archivos de intercambio en el directorio de mi proyecto y, en caso de bloqueo, deja los archivos de respaldo.
¿Puedo evitar esto? ¿O necesito actualizar el .VCSignore
archivo de todos mis proyectos ?
De manera predeterminada, vim
deja los archivos de intercambio en el directorio de mi proyecto y, en caso de bloqueo, deja los archivos de respaldo.
¿Puedo evitar esto? ¿O necesito actualizar el .VCSignore
archivo de todos mis proyectos ?
Respuestas:
Por defecto, Vim no deja archivos de respaldo. Son simplemente archivos transitorios que existen mientras Vim está guardando el búfer en el disco. Como se describe en :help backup-table
este comportamiento, puede controlarse mediante las opciones 'backup'
y 'writebackup'
:
'backup' 'writebackup' action ~
off off no backup made
off on backup current file, deleted afterwards (default)
on off delete old backup, backup current file
on on delete old backup, backup current file
En cuanto a los archivos de intercambio, puede ser útil recopilarlos en un directorio dedicado. Esto se puede hacer con la 'directory'
opción. Por ejemplo
:set directory^=$HOME/.vim/tmp//
se agregará $HOME/.vim/tmp
al encabezado de la lista de directorios que Vim intentará usar al crear un archivo de intercambio. El seguimiento //
hace que Vim codifique el nombre completo de la ruta al archivo para que no haya colisiones con archivos con nombres similares de diferentes directorios.
Advertencia : Esto deshabilita efectivamente la capacidad de Vim de notar si varios usuarios están tratando de editar el mismo archivo ya que los archivos de intercambio se almacenan en diferentes ubicaciones.
El fragmento a continuación (adaptado de vimrc de tpope ) también deshabilitará el archivo de intercambio para un búfer cuando no se modifique, de esa manera si Vim / su computadora se bloquea cuando tiene un montón de archivos abiertos, los archivos de intercambio que quedan solo serán para archivos modificados
autocmd CursorHold,BufWritePost,BufReadPost,BufLeave *
\ if isdirectory(expand("<amatch>:h")) | let &swapfile = &modified | endif
Advertencia : dado que el archivo de intercambio solo existe cuando se modifica el búfer, esto tiene un efecto similar al de la configuración 'directory'
. Si el búfer no se modifica, otro Vim puede comenzar a editarlo sin previo aviso. Si el segundo Vim se guarda antes de que el primero haga más cambios, no se notarán hasta que el usuario intente guardar o algo active a Vim para verificar si el archivo está modificado.
Utilizo mi .vimrc
en varias máquinas, incluidos los servidores compartidos. No necesariamente quiero que las personas puedan ver los archivos en los que estoy trabajando y me gusta mantener mi directorio de inicio relativamente limpio. Así que esta es mi solución que funcionará bien en Linux y Mac OS X.
" Sets central temp file location, to prevent local default behavior.
if isdirectory($HOME . '/.vim/.tmp') == 0
:silent !mkdir -m 700 -p ~/.vim/.tmp > /dev/null 2>&1
endif
set backupdir=~/.vim/.tmp ",~/.local/tmp/vim,/var/tmp,/tmp,
set directory=~/.vim/.tmp ",~/.local/tmp/vim,/var/tmp,/tmp,
Tenga en cuenta que esto creará un .tmp
directorio debajo ~/.vim
si aún no existe. Este sería el nuevo hogar de sus archivos de intercambio. Para deshacer archivos, también tengo lo siguiente en mi .vimrc
(que es bastante similar):
if exists("+undofile")
" undofile -- This allows you to use undos after exiting and
" restarting. NOTE: only present in 7.3+
" :help undo-persistence
if isdirectory( $HOME . '/.vim/.undo' ) == 0
:silent !mkdir -m 700 -p ~/.vim/.undo > /dev/null 2>&1
endif
set undodir=~/.vim/.undo
set undofile
endif
Esto es lo que hago en mi vimrc:
fun! MkdirIfNeeded(dir, flags, permissions)
if !isdirectory(a:dir)
call mkdir(a:dir, a:flags, a:permissions)
endif
endfun
" Set (& create if needed) a temp directory to keep backup & swap files
if has('win32')
let whoami = substitute(system("whoami /LOGONID"), '\n', '', '')
let tmpdir = 'C:/tmp/vim_' . whoami
else
let whoami = substitute(system("whoami"), '\n', '', '')
let tmpdir = '/var/tmp/vim_' . whoami
endif
call MkdirIfNeeded(tmpdir, 'p', 0700)
let &backupdir = tmpdir
let &dir = tmpdir
let &undodir = tmpdir
Creará /var/tmp/vim_<username>
y usará esto para almacenar todos los archivos relacionados con vim. Mantener limpio el directorio de tu proyecto.
El uso whoami
asegura que puede usar el vimrc globalmente (es decir, para el usuario y el usuario root) mientras usa directorios separados; Si no necesita esto, puede reemplazarlo con un directorio codificado para un inicio más rápido. También podría usar el ~/.vim/
directorio, pero me gusta usarlo /var/tmp
porque generalmente es un sistema de archivos separado.
Lo uso /var/tmp
porque a /tmp
menudo se borra al reiniciar. Probablemente no desee que este directorio se pueda escribir en todo el mundo, ya que las personas podrían colocar archivos allí para hacer cosas potencialmente dañinas cuando abre un archivo.
adduser
o lo que sea que esté usando para crear usuarios. En cualquier caso, la mayoría de las personas usan Vim en máquinas de confianza (pero su comentario es bueno, como tal).
$HOME
algún lugar.
/var/
es un sistema de archivos diferente. La teoría es, que evitará una gran cantidad de escrituras en /
, /usr
o /home
, lo que lleva a una menor fragmentación y el riesgo de corrupción de archivos en caso de un accidente ... Esta es también la razón por buzones y esas cosas están /var
por defecto, y no en el homedir ...
/var/tmp
siempre se puede escribir en el mundo: es un directorio temporal del sistema. (Bueno, puedes cambiarlo para que no lo sea, pero esa es una de esas cosas en las que los sistemas tipo Unix están felices de permitirte conservar las piezas después de romperlas). Si tiene otro usuario en el sistema, él / ella podría crear/var/tmp/vim_«your_username»
con los permisos que elija. Y luego llénelo con enlaces simbólicos a sus archivos importantes, que probablemente serán destruidos por archivos temporales vim.