¿Cómo vuelco un comando vim interno (no un comando de shell) en un nuevo búfer?
Por ejemplo, quiero volcar una lista de todos los plugins en :enew
de :scriptnames
modo que pueda buscarla.
fuente
¿Cómo vuelco un comando vim interno (no un comando de shell) en un nuevo búfer?
Por ejemplo, quiero volcar una lista de todos los plugins en :enew
de :scriptnames
modo que pueda buscarla.
Puede usar :redir
para redirigir la salida a una variable, registro o archivo. Ejemplo de redireccionamiento al registro sin nombre:
:redir @">|silent scriptnames|redir END|enew|put
Alternativamente, scriptease.vim de Tim Pope proporciona el :Scriptnames
comando que se cargará :scriptnames
en la lista de soluciones rápidas y :copen
.
Si se encuentra redirigiendo muchos comandos, es posible que desee resumir esto en un comando:
command! -nargs=+ -complete=command Redir let s:reg = @@ | redir @"> | silent execute <q-args> | redir END | new | pu | 1,2d_ | let @@ = s:reg
Ahora puede usar el :Redir
comando para redirigir la salida a un nuevo búfer. por ejemplo :Redir scriptnames
o :Redir ls
.
Vim 8 se entrega con la nueva execute()
función. Puede usar la execute()
función en lugar de :redir
capturar la salida del comando anterior.
:enew|pu=execute('scriptnames')
Para más ayuda ver:
:h :redir
:h :silent
:h :scriptnames
:h :enew
:h :put
:h execute()
END
significa:redir END
le dice a Vim que finalice la redirección de mensajes. Ver:h :redir
Para completar, quiero presentar estas increíbles funciones que recopilé (robé) de romainl
Esto tomará la salida de comando normal o del sistema y lo colocará en una nueva pestaña. Siéntase libre de cambiar la línea
tabnew
avsplit
, osplit
etc.fuente
También está el plugin bufferize.vim :
que es básicamente una versión empaquetada de la respuesta aceptada (usando
:redir
) y puede ser más conveniente para algunos.fuente