tutorial texto insertar editar con comandos comando vim

texto - ¿Cómo ejecuto una terminal dentro de Vim?



vim comandos (16)

Alguien ya sugirió https://github.com/Shougo/vimshell.vim , pero no mencionaron por qué. En consecuencia, cuando salí de esta pregunta, perdí muchas otras veces probando las otras opciones (de clasificación mucho más alta).

Shougo/vimshell es la respuesta. Este es el por qué:

Además de ser un emulador de terminal, VimShell le permite navegar a través de la salida de terminal en modo normal y visual. Por lo tanto, si un comando que ejecuta genera un resultado que le gustaría copiar y pegar usando solo el teclado ... VimShell cubre esto.

Ninguna de las otras opciones mencionadas, incluido el comando: terminal en NeoVim, hace esto. Neovim''s: la terminal se acerca, pero se queda corta al menos en las siguientes formas a partir del 2/18/2017:

  • Mueve el cursor al final del búfer, en lugar de mantenerlo en el mismo lugar que VimShell. Enorme pérdida de tiempo.

  • No es compatible con modifiable = 1 ver una discusión sobre esto en Github , por lo que no se pueden usar complementos útiles como vim-easymotion.

  • No admite la visualización de números de línea como lo hace Vimshell.

No pierda el tiempo en las otras opciones, incluido el terminal de Neovim :. Ve con VimShell.

Estoy acostumbrado a Emacs, pero estoy probando a Vim para ver cuál me gusta más.

Una cosa que me gusta de Emacs es la capacidad de ejecutar un terminal dentro de Emacs. ¿Es esto posible dentro de Vim? Sé que puede ejecutar comandos desde Vim, pero me gustaría poder ejecutar un terminal dentro de una pestaña.


Definitivamente recomendaría la screen para algo como esto. Vim es un editor de texto, no un shell.

Yo usaría Ctrl + A S para dividir la ventana actual horizontalmente, o en la pantalla de Ubuntu y otras versiones parcheadas, puede usar Ctrl + A | (tubo) para dividir verticalmente. Luego use Ctrl + A Tab (o de manera equivalente en algunos sistemas, Ctrl + A Ctrl + I que puede ser más fácil de escribir) para cambiar entre las ventanas. Hay otros comandos para cambiar el tamaño y la disposición de las ventanas.

O un uso menos avanzado de la screen es simplemente abrir múltiples ventanas de pantalla completa y alternar entre ellas. Esto es lo que normalmente hago, solo uso la función de pantalla dividida de vez en cuando.

La pregunta de la Guía de supervivencia de pantalla de GNU tiene una serie de buenos consejos si no está familiarizado con su uso.


Es posible que desee ver el comando :sh (consulte :help sh en Vim).

Varios comandos


Esta pregunta es bastante antigua, pero para aquellos que la encuentran, hay una nueva solución posible: Neovim contiene un emulador de terminal de primera clase completo, que hace exactamente lo que ConqueTerm intentó. Simplemente ejecute :term <your command here> .

<C-/><Cn> saldrá del modo de término al modo normal. Si es como yo y prefiere que escape aún salga del modo de término, puede agregar esto a su nvimrc:

tnoremap <ESC><ESC> <C-/><C-N>

Y al presionar ESC dos veces , el modo de terminal volverá al modo normal, de modo que puede manipular el búfer en el que está escribiendo el comando que aún se está ejecutando.

Aunque tenga en cuenta que como nvim está en un gran desarrollo en el momento en que publico esta respuesta, se puede agregar otra manera de salir del modo terminal. Como Ctrl + / Ctrl + n cambia al modo normal desde casi cualquier modo, no espero que esta respuesta se vuelva incorrecta, pero tenga en cuenta que si no funciona, esta respuesta podría estar desactualizada.

https://github.com/neovim/neovim


Finalmente, se agregó :terminal comando nativo :terminal a vim en 2017.

Aquí hay un extracto del :terminal readme:

Esta característica es para ejecutar un emulador de terminal en una ventana Vim. Se puede iniciar un trabajo conectado al emulador de terminal. Por ejemplo, para ejecutar un shell:

:term bash

O para ejecutar el comando de compilación:

:term make myprogram

El trabajo se ejecuta de forma asíncrona desde Vim, la ventana se actualizará para mostrar el resultado del trabajo, también mientras se edita en otra ventana.


La única forma de saberlo es mediante el uso de vim-shell , un parche de terceros.


La forma de solucionar esto es pausar Vim con Ctrl + Z , jugar en el terminal, luego regresar a Vim con el comando fg .


No estoy seguro de lo que intentas lograr (nunca he usado Emacs), pero puedes ejecutar comandos en Vim escribiendo:

:! somecommand [ENTER]

Y si desea escribir varios comandos, o jugar en un shell por un tiempo, siempre puede usar:

:! bash (or your favourite shell) [ENTER]

Una vez que finalice el comando o el shell, se le dará la opción de presionar Entrar para volver a la ventana de su editor

Vim es intencionalmente ligero y carece de la capacidad de hacer cosas de tipo no editorial, al igual que ejecutar una shell en toda regla dentro de un panel / pestaña Vim, pero como se mencionó anteriormente, hay complementos de terceros como vim-shell que te permiten para hacer ese tipo de cosas.

Normalmente, si quiero cambiar entre Vim y mi shell (Bash), simplemente presiono CTRL + Z para pausar el proceso de Vim, jugar en mi shell, luego escribir ''fg'' cuando quiero volver a Vim, manteniendo mi editor y mi concha bonita y separada.



Pruebe vterm , que es un shell de funciones bastante completo dentro de vim. Es un poco defectuoso con su historia y funciones claras, y aún está en desarrollo, pero aún es bastante bueno


Sé que no estoy respondiendo directamente a la pregunta, pero creo que es un buen enfoque. Nadie ha mencionado tmux (o al menos no como una respuesta independiente). Tmux es un multiplexor terminal como pantalla. La mayoría de las cosas se pueden hacer en ambos multiplexores, pero afaik tmux es más fácil de configurar. También ahora mismo se está desarrollando más activamente que la pantalla y hay un gran ecosistema a su alrededor, como herramientas que ayudan a la configuración, ecc.

También para vim, hay otro complemento: ViMUX , que ayuda mucho en la interacción entre ambas herramientas. Puedes llamar comandos con:

:call VimuxRunCommand("ls")

Ese comando crea una pequeña división horizontal debajo del panel actual en el que está vim.

También puede permitir que se ejecute desde un aviso en caso de que no desee ejecutar todo el comando:

<Leader>vp :VimuxPromptCommand<CR>

Como no fue suficiente, hay al menos 6 ''complementos específicos de plataforma'':

  • vim-vroom : corredor para rspec, pepino y prueba / unidad; soporte vimux a través de g:vroom_use_vimux
  • vimux-ruby-test : un conjunto de comandos para ejecutar fácilmente las pruebas de ruby
  • vimux-cucumber : ejecuta las características del pepino a través de Vimux
  • vim-turbux : Turbo Ruby probando con tmux
  • vimux-pyutils : un conjunto de funciones para vimux que permiten ejecutar bloques de código en ipython
  • vimux-nose-test : ejecute pruebas de nariz en vimux

Aquí hay un buen "caso de uso": Pruebas a pedido usando Vimux y Turbux con Spork y Guard


Si está habilitado en su versión de Vim, un terminal puede iniciarse con el comando :term .

El soporte de la ventana del terminal se agregó a Vim 8. Es una función opcional que se puede habilitar al compilar Vim con la característica + terminal. Si su versión de Vim tiene soporte de terminal,: :echo has(''terminal'') emitirá "1".

Ingresando :term lo colocará en modo de trabajo de terminal , donde puede usar el terminal como se espera.

En el modo Terminal-Trabajo , presionando Ctrl-W N o Ctrl-/ Ctrl-N cambia el modo a Terminal-Normal , lo que permite mover el cursor y ejecutar los comandos de manera similar al modo Normal de Vim. Para volver al modo de trabajo de terminal , presione i .

Otras respuestas mencionan una funcionalidad similar en Neovim.


Utilizo esto ahora, puedes intentarlo. VimShell


:sh entonces ctrl+d para volver a (bash)

Actualización :

Puede asignar ctrl+d en vim para ejecutar :sh , lo que le permite alternar entre bash y vim rápidamente.

noremap <Cd> :sh<cr>


:term

Sin embargo, esta función se agregó recientemente en Vim 8.1, que a partir de esta publicación se lanzó recientemente, por lo que es posible que deba actualizarla para poder usarla.


Desactualizado a partir de agosto de 2011

Echa un vistazo a Conque Shell (también en GitHub ). Le permite ejecutar cualquier programa interactivo dentro de vim, no solo un shell.