2011-03-14 10 views
7

Aunque no soy un experto en Vim, he estado picando al trabajar en a rough Vim equivalent de la funcionalidad ⌘R de TextMate para ejecutar el código de Ruby desde un buffer y mostrar la salida.¿Cómo puedo reutilizar la misma ventana/buffer de Vim para la salida del comando, como la ventana de ayuda?

El script actualmente solo abre una nueva ventana (división) con :new y coloca la salida allí. Si lo ejecuta varias veces, abre varias ventanas. Idealmente, me gustaría reutilizar la misma ventana dentro de cada página de pestañas, al igual que :help.

Lo he buscado pero no he encontrado la manera de lograrlo. ¿Alguna sugerencia?

+0

Ahora disponible aquí: https://github.com/henrik/vim-ruby-runner –

Respuesta

6

Puede crear un búfer de rayado con un nombre, de modo que en llamadas posteriores pueda verificar si ese búfer ya está abierto (y si es así volver a utilizarlo) o si necesita uno nuevo. Algo como esto:

function! Output() 
    let winnr = bufwinnr('^_output$') 
    if (winnr >= 0) 
     execute winnr . 'wincmd w' 
     execute 'normal ggdG' 
    else 
     new _output 
     setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile nowrap 
    endif 
    silent! r! ls 
endfunction 
+2

Después de crear un nuevo buffer, solo debe guardar su número: 'let s: outputbufnr = bufnr ('%')' y luego compruébalo con 'if bufexists (s: outputbufnr) .. else..endif'. – ZyX

+0

¡Gracias! Esto (y el comentario de ZyX) me indicaron la dirección correcta: https://github.com/henrik/dotfiles/commit/b5b9c9dc94dbcf44008425076a32502e6a9eab4e Una diferencia es que utilizo 't: varname' para que la página de pestañas sea local. –

0

Supongo que podría hacerlo manualmente.

Por ejemplo:

:e test1.txt (or use any existing buffer) 
:vs   (or :new or :sp) 
:b <tab>  (keep pressing tab until test1.txt comes up. or use the buff no) 
0

Es posible que desee utilizar la ventana quickfix por lo que también puede saltar a errores. Si obtiene un ruby compiler vim plugin, puede ejecutar :make para ejecutar su código. Debería ver la salida y los errores en la corrección rápida (:copen).

Cuestiones relacionadas