Control de versiones desde VIM
author: Hugo Ruscitti
Actualmente suelo usar controles de versiones para casi todo, tanto en el trabajo como en los proyectos personales.
Ahora bien, una buena práctica a la hora de trabajar usando controles de versiones es hacer commits frecuentes, para lograr un historial rico en detalles y fácil de consultar.
También es habitual para muchos programadores (bah, al menos para mí) usar distintos sistemas controles de versiones: git, mercurial, bazaar... etc.
Pensando en estos dos detalles, me puse a buscar soluciones, y en sitios de otros programadores encontré a vcscommand.
vcscommand
vcscommand es un complemento para vim que facilita la edición de archivos bajo un control de versiones.
Lo interesante es que provee varios comandos que sirven como una interfaz para tratar con el sistema control de versiones.
Uno no tiene que preocuparse por el sistema de versiones que está usando, vcscommand provee los mismos comandos para casi cualquier control de versiones.
Instalar el complemento
El complemento está disponible para descargar en la siguiente dirección:
Y se puede instalar descargando el archivo .zip y descomprimiéndolo en el directorio .vim. Por ejemplo, al momento de escribir este artículo use un comando como el siguiente:
wget http://www.vim.org/scripts/download_script.php?src_id=12743 -O tmp.zip unzip tmp.zip -d ~/.vim/
Una vez instalado podemos ingresar al editor y utilizar el complemento.
Comandos principales
Para utilizar el complemento tenemos que estar dentro de un directorio bajo control de versiones.
Casi todos los comandos actúan sobre el mismo archivo que se está editando, por ejemplo si abrimos un archivo que tiene
diff
Para ver los cambios del archivo que estamos editando contra la última versión podemos usar los siguientes comandos:
- VCSDiff
- VCSVimDiff
add
Para insertar un nuevo archivo dentro del repositorio se puede usar el comando:
- VCSAdd
que inserta en el repositorio el archivo actual.
commit
Se debe usar el comando:
- VCSCommit
y completar el comentario del commit dentro del buffer que se muestra en pantalla.
Una vez completado el comentario se puede escribir :wq para abandonar el buffer y completar el commit.
¿Pull y push ?
m... actualmente vcscommand no implementa ninguno de los dos comandos, lo que resulta un problema de consistencia si usas algo como git o mercurial.
Aunque, a fines prácticos, podrías usar la integración de shell que viene por defecto con vim:
:!hg push
o:
:!git push origin master
y si, lo se, no es lo mas elegante dado que no te permite abstraer del control de versiones, pero es algo...
Atajos
Todos los comandos del plugin tienen su atajo asociado, de forma que no tienes que ingresar todo el comando cada vez que los utilizas.
Esta es una lista de los mas utilizados (todos se invocan desde el modo comando):
| Atajo | Resultado |
|---|---|
| ca | Añade el archivo actual al control de versiones. |
| cc | Commit |
| cd | Diff |
| cv | VimDiff |
Conclusión
vcscommand es un complemento útil, principalmente porque permite gestionar cualquier control de versiones bajo la misma interfaz. Aunque se queda en el camino al no implementar los comandos como push o pull, que nos indispensables dentro de los controles de versiones distribuidos.


