Recientemente hubo un complemento para NeoVim que permite abrir la terminal en un búfer vim. Esto tiene posibilidades atractivas para enviar texto desde una ventana vim a otra replicando, por ejemplo, un comportamiento similar a REPL.
En el pasado estaba usando tmux para este tipo de configuración. Sin embargo, ahora me gustaría probarlo usando solo NeoVim.
Mi pregunta es: ¿cómo puedo enviar un bloque de texto de una división vim a otra? O tal vez, más bien, ¿cómo puedo automatizar la secuencia de seleccionar texto, tirarlo, cambiar divisiones y luego pegar?
fuente
p
en un búfer de terminal no ingresa al modo Terminal, por lo que lo siguiente<C-\><C-N>
no debería ser necesario. (Dicho esto, también es totalmente inofensivo).Las memorias intermedias de terminal de Neovim siempre tienen una identificación de trabajo asociada, por lo que una forma es usar la API de control de trabajo para enviar el texto. Agregue esto a su vimrc:
Lo que guardará la identificación del trabajo del último terminal creado en la
g:last_terminal_job_id
variable. Luego puede crear algunas funciones / comandos / asignaciones que enviarán los datos utilizando lajobsend
función, aquí hay un ejemplo:Lo anterior enviaría la línea actual, pero puede extenderla para enviar una selección visual.
fuente
Neoterm es un complemento para neovim desarrollado para este propósito. Implementa un nuevo comando
:TREPLSend
que tomará la línea actual y la enviará a una ventana de terminal. Funciona bien para bash básico y cualquier idioma que tenga un modo REPL.fuente
Además de las respuestas aquí, he implementado un complemento para este propósito: vim-sendtowindow .
Proporciona un operador de envío a ventana que se puede combinar con cualquier movimiento vim para seleccionar texto para enviar a la ventana adyacente. Además, posiciona convenientemente el cursor después del texto enviado y es repetible por puntos.
Un pequeño ejemplo a continuación:
fuente