¿Cómo puedo interactuar con la línea de comando a través de una consola si tengo vim abierto?

4

Sé que puedo hacerlo, !commandspero me gustaría integrar de alguna manera un shell en vim. ¿O podría usar la pantalla y dividir la pantalla para que vim ocupe la mitad de la pantalla?

meder omuraliev
fuente

Respuestas:

9

CtrlZsuspenderá vim y devolverá el control a bash. Use fgpara volver a vim.

Ignacio Vazquez-Abrams
fuente
5

La integración de subprocesos es el principal punto débil de Vim. No hay soporte integrado para una ventana de shell , pero puede probar el complemento vimsh .

En Pantalla, presione C-a cpara crear una nueva ventana (pantalla completa). Presione C-a po C-a npara moverse a la ventana anterior / siguiente ( C-a spacetambién se mueve a la ventana siguiente). Además, el splitcomando ( C-a S) dividirá su pantalla en dos regiones; puedes usar uno para un shell y otro para Vim. Presione C-a tabpara cambiar entre regiones.

Siempre puede presionar Ctrl+ Zpara suspender Vim y ejecutar comandos en el shell principal; escriba fgpara volver a Vim. O puede usar :shellpara crear una subshell (pantalla completa); escriba exitpara volver a Vim.

Gilles
fuente
3

Como sugiere, simplemente usaría la pantalla.

  • screen
  • ^ Ac para crear una nueva ventana
  • ^ AS para dividir la pantalla horizontalmente en dos regiones (algunas versiones tienen Ctrl- | para dividir verticalmente)
  • ^ A-Tab para moverse a la nueva región
  • ^ An para cambiar la región a la siguiente ventana

Si no quieres exactamente la mitad y la mitad puedes:

  • ^ A- + para aumentar el tamaño de la región actual

Si necesita ver qué hay en vim cuando está en la línea de comandos, esta es una buena manera de hacerlo. Si no lo hace, el método Ctrl-Z/ fgya mencionado es el camino a seguir.

Robert Gowland
fuente
2

También puede usar: shell para generar un shell. Escriba exit o Ctrl + D para salir del shell y volver a vim. Si desea que ambos se ejecuten simultáneamente, usar fg / bg (según Ignacio), la pantalla (como sugirió) o solo dos terminales separados (xterms, consolas virtuales, lo que sea) son sus mejores opciones.

Si va a vim.org, probablemente pueda encontrar una extensión que inicie un shell directamente, pero en ese momento se está acercando peligrosamente a emacs. ;) Aquí hay un ejemplo usando la pantalla: http://www.vim.org/scripts/script.php?script_id=2711

dannysauer
fuente
1
"probablemente pueda encontrar una extensión que inicie un shell directamente, pero en ese momento se está acercando peligrosamente a emacs". Deja de hablar, estás asustando a los niños.
TTM