Vim, ese semidiós (primera parte)
Hoy voy a hablar de vim (la versión mejorada de vi). vim tiene todo lo bueno de vi, pero además permite una serie de extensiones, plugins y macros que quitan el aliento. En otra ocasión os hablaré de los plugins y os recomendaré alguno. Mientras podéis disfrutar de todo sobre vim en el enlace
http://www.vim.org
En este post os hablaré del fichero de configuración .vimrc que se encuentra en vuestro directorio $HOME
Este fichero permite incluir una serie parámetros y opciones que se cargan en vim en el momento de arranque.
A continuación os detallo algunas líneas de mi fichero .vimrc que os
pueden ser de utilidad
" Los comentarios van precedidos por unas comillasY ahora mi parte favorita, los "mapeos" de teclas a comandos.
" La siguiente línea cambia el tamaño por defecto del tabulador a 3
set tabstop=3
" mantiene 50 líneas de historia de comandos en una sesión vim
set history=50
" Los tres siguientes permite usar el comando externo 'par' quePara finalizar, os hablaré de los pliegues o 'folds'. Son agrupaciones de varias líneas en una única línea que se despliega con un comando. Para más información sobre los pliegues podeís poner (dentro de vim) :help folds.
" viene con casi todas las distribuciones linux (salvo Suse) e incluso
" con cygwin y que permite manipular párrafos de texto
" El siguiente simplemente toma un párrafo (considerando párrafo hasta
" las siguiente línea vacía) y lo ajusta a 78 columnas simplemente pulsando
" F3
map <F3> <Esc>!}par -w78 <CR>
" El siguiente hace lo mismo pero para un selección hecha en
" modo visual (con el comando v), de ahí la v de 'vmap'
vmap <F3> !par -w78 <CR>
" Por último, pulsando F4 ajusta el texto a 78 columnas indentando por
" los dos extremos (añadiendo espacios si fuese necesario)
map <F4> !}par -j1 -w78 <CR>
" imap hace referencia a comandos en modo 'insertar'. El siguiente
" comando ayuda a escribir textos en LaTex. Si escribes la palabra
" itemize y pulsas (en modo insertar) F4 te crea el begin y end
" correspondientes.
imap <F4> <Esc>bi\begin{<Esc>$a}<Esc>yypwdwiend<Esc>O
" Y ya que estamos con Latex, aquí tenéis algo cómodo
" F5 guarda el fichero actual y lo compila
map <F5> :w!<CR>:!latex %<CR><CR> <CR>
" F6 invoca al comando xdvi
map <F6> :!xdvi %<.dvi&<CR><CR>
" F7 crea el postscript correspondiente (en compatibilidad PDF) y llama
" al programa "gv"
map <F7> :!dvips -P pdf -G0 %<.dvi >& /dev/null <CR><CR>:!gv %<.ps &<CR><CR>
" Por último, F8 crea un pdf y llama al comando xpdf
map <F8> :!ps2pdf %<.ps<CR>:!xpdf -z page %<.pdf &<CR><CR>
Yo uso los pliegues cuando escribo un código en C++ o un documento en LaTex muy grande. Para C++, lo que me interesa es que todas las estructuras, clases y subrutinas se compacten. De este modo un código con 6 clases, 14 funciones y la función main, se reduce a la parte de los includes, las variables globables y 21 pliegues, lo cual cabe casi en la ventana de edición por lo que puedo echar un vistazo muy rápido al código completo.
Para manejar los pliegues en un código C++, bastaría con añadir a .vimrc:
map F za
map <S-F12> :set foldmarker=\{,\}<CR> :set foldmethod=marker<CR>
El primer mapeo permite conmutar entre abierto y cerrado cuando estamos situados sobre un pliegue pulsado F (en modo comando, se entiende). La segunda línea somplemente crea los pliegues al pulsar shift-F12.
Para LaTex, podríamos hacer, por ejemplo:
map <S-F12> :set foldmarker=\\begin,\\end<CR> :set foldmethod=marker<CR>
4 Comments:
Esto ya empieza a ser un poco friki... En fin, divertios con el Vim. Y que ningun colgado del Emacs pase por aqui...
Viva vi! Abajo emacs!
Hola
Soy un estudiante de doctorado (precario) y de momento me han encantado tus dos mensajes.
Espero que no te aburras y sigas obsequiándonos con esa joyitas de código minimalista.
Salud!
No es que tenga nada contra los comentarios anónimos (especialmente si me son favorables), pero si estáis registrados se favorece la relación entre blogs o simplemente os pongo cara como a aepyornix ;-)
Post a Comment
<< Home