Vim: F3 compilar, F4 ejecutar

Para desarrollo uso indistintamente como IDE Eclipse (un verdadero IDE, al que una vez que te acostumbras ya es difícil dejarlo) y Vim. Alguien podría decir que Vim no puede ser considerado un IDE… tal vez sea así, pero desde luego teniendo en cuenta todas las ayudas que ofrece para el desarrollador (ctags, autocompletamiento, gestión de archivos, múltiples buffers en una única ventana, pestañas, code-beautifiers, code-folding, marcadores, plugins…) la frontera entre ser un simple editor de texto y/o un completo IDE de desarrollo cada vez es más difusa. Intentaré comentar en distintos posts algunas de las características que hacen de Vim, en mi opinión, un potente entorno de desarrollo (a costa de tener que aprenderse múltiples comandos y combinaciones de teclas así como de tener un interfaz «bastante» austero, cosa que a veces es bueno y nos permite centrarnos en nuestro código sin distracciones).

Para empezar un sencillo «truco» que permite asignar a la tecla F3 la orden de compilar el código de un programa C, y a la tecla F4 ejecutarlo, todo ello sin abandonar Vim (antes tenía que tener otra ventana abierta, guardar en Vim, compilar en la otra ventana con gcc y ejecutar, en su caso, para volver a la ventana Vim a seguir editando, un tostón vaya). A la chicha: ¿cómo hacer la asignación de teclas? Basta con que en tu archivo $HOME/.vimrc guardes lo siguiente:

map <F3> : call CompileGcc()<CR>
func! CompileGcc()
  exec "w"
  exec "!gcc % -o %<"
endfunc
 
map <F4> :call CompileRunGcc()<CR>
func! CompileRunGcc()
  exec "w"
  exec "!gcc % -o %<"
  exec "! ./%<"
endfunc

7 comentarios en «Vim: F3 compilar, F4 ejecutar»

  1. Muchas gracias por el consejo, me servira mucho 🙂

    …es posible compilar y correr sin salir de vim.

    :!gcc …

    y luego:

    :!./nombreArchivo

    De hecho lo que se hace con «:!» es ejecutar cualquier comando. 🙂

  2. perdonen el atrevimiento pero compartire una version que me gusta mas es para neovim
    map : call CompileGcc()
    func! CompileGcc()
    exec «w»
    exec «!g++ % -o %<"
    endfunc

    map :call RunGcc()
    func! CompileRunGcc()
    exec «w»
    exec «terminal ./%<"
    endfunc

Responder a Diego D. Galizzi Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.