2009-06-16 12 views
11

Al utilizar la función remota en vim, es posible reutilizar una instancia de vim para cargar varios archivos según sea necesario.instancia de reutilización de vim desde el terminal de linux

Sería bueno tener esa instalación desde la misma instancia de la terminal.

estoy más interesado en tener una interfaz basada pestaña, que está disponible en vim 7+ El escenario debe ser

  1. Abrir el terminal
  2. vim file1.cpp
  3. Editar - Guardar - Ctrl + Z llegar a provocar
  4. abrir otro archivo
    • vim file2.cpp
  5. Ahora tenemos file1.cpp y file2.cpp abierta en el mismo editor

Es eso posible ?!

Respuesta

3

Tengo un par de sugerencias para ti, aunque tampoco es exactamente de lo que estás hablando. El primero es NERD Tree, que le ofrece un buen navegador de archivos basado en árboles para abrir otros archivos. Muy útil. También configuré una tecla directa (ctrl+o) para abrir NERD Tree por mí. Guardo un alias de cualquier proyecto en el que estoy ~/curr/trunk, así que esto siempre funciona para mí:

map <C-O> :NERDTreeToggle ~/curr/trunk/<CR> 

La otra cosa que yo sugeriría es para acabar con Ctrl + Z. Es algo torpe, y todos los que conozco que usan ese método tienden a perderse y terminan con 3 o 4 vim corriendo en segundo plano. Eche un vistazo a cómo abrir un caparazón para usted.Yo uso un mapa para; s de ejecutar un script de shell:

map ;s :!~/.vim/shell.sh<CR> 

que ejecuta:

#!/bin/sh 
/usr/local/bin/bash -l; 

también tengo un poco de magia en mi .profile por lo que es obvio que estoy en VIM :

if [ "$VIMRUNTIME" != "" ] ; then 
    export PS1="\[email protected]\h \W \t$ vim> " 
fi 

</2 centavos >

+0

Brillante! Este funciona mucho mejor de lo que estaba buscando. Hice algunas secuencias de comandos que emularán lo que quería, pero me pareció horrible en cierto escenario. Tampoco pude depurarlo muy bien. Dar un paso atrás y pensar en los zapatos de JachM, me ayudó con una mejor solución.! ¡Salud, Jack! –

+0

Agregué una tecla rápida que utilizo para alternar el Árbol NERD. Podría ser útil. –

3

Se puede dividir la pantalla actual y abrir dos (o más) archivos de la siguiente manera:

Para una división horizontal, hacer:

:sp 'filename' 

y para una división vertical, hacer:

:vsp 'filename' 

Para tabular entre las dos, presione ctrl + w, luego use una tecla de flecha para navegar al archivo que desee editar.

Además, si sólo quiere cambiar archivos (y sólo tienen una abierta), se puede hacer esto:

:e 'filename' 
+0

La respuesta de Jack M. ciertamente es correcta, pero esta es una solución mucho más simple. –

1

Es posible ajustar la función hidden en vim, para que pueda tener varios archivos abiertos :

:set hidden 

entonces usted puede abrir tantos archivos como desee, sin preocuparse de ellos ahorrar cada vez que quiera cambiar un "buffer":

:e 'filename' 

usted tiene varios comandos para navegar las memorias intermedias:

:bnext 
:bprev 
:buffers 

Por supuesto, como se ha mencionado por Samoz, puede dividir la pantalla para ver múltiples buffers en la misma ventana.

Sugiero leer this para una buena introducción sobre vim, le ahorrará mucho tiempo.

¡Buena suerte!

2

día G,

O si usted quiere tener varios archivos pero el uso de toda la ventana de Vim para un archivo en un momento en que sólo puede entrar en

:e 'filename' 

para abrir el nuevo archivo. Puedes hacer esto muchas veces Para ver lo que tienes actualmente abierto, introduzca

:ls 

a rebotar entre los archivos que tienes abierta puede utilizar cntl-^(shift-CNT-6) y que se alternan voluntad entre el principal y secundaria archivos (que se muestran con un% y # en la lista de archivos)

O puede introducir

:n b 

donde n es el número al principio del archivo que desea en la lista mostrada por los 'ls' mando.

HTH

aplausos,

6

no estoy seguro de si esto se puede hacer exactamente de la manera que usted está especificando, pero algo muy similar, probablemente, se puede hacer uso de un servidor que se ejecuta en su vim máquina local.

Busque en el :help remote.txt en Vim.

Si su versión de vim se compiló con +clientserver, puede usar vim para crear un servidor vim y luego ejecutar comandos en él, p. abriendo otro archivo
El modificador --servername puede crear un nuevo servidor y el modificador --remote puede enviarle comandos o archivos adicionales.

p. Ej.

vim --servername test file1.txt 
vim --servername test --remote file2.txt 

que he tenido una mirada, y el vim estoy usando como estándar en Xubuntu en uno de mis equipos no lo tiene, pero hay algunas instrucciones here que pueden ayudar si el suyo tiene compilado . Si no es así, instalar gvim y symlinking es aparentemente una opción (ya que gvim lo tiene incluido por defecto), o compilar los binarios desde el código fuente.

Editar:
he tenido más de una obra de teatro con gvim y esto no parece posible hacer esto dentro de la terminal. Control-Z suspende el trabajo en el nivel de proceso. Pensé que podría funcionar con la pantalla, pero no parece haber comunicación a menos que gvim se haya lanzado en una ventana gráfica,

+0

En respuesta a su edición, ¿funciona si, después de C-Z, inicia el proceso para que no se suspenda? –

+0

Había bajado exactamente la misma ruta. De hecho, un poco más lejos al usar un script de envoltura para usar la administración de trabajos de bash para devolverle la vida al vim antes de hacer llamadas remotas. Funcionó en gran medida, pero el éxito fue bastante intermitente. –

5

Esto es fácil de hacer cuando se ha compilado VIM con +clientserver, como Andy suggested in a previous answer.

hice lo siguiente:

que puso en marcha VIM como un servidor:

vim --servername abc 

me suspendieron con CTRL+Z e hicieron:

vim --servername abc --remote ~/.cshrc 
fg 

Ahora VIM tenía ~/.cshrc abierta.

luego hice:

vim --servername abc --remote ~/.aliases 
fg 

Ahora VIM tenía una memoria intermedia con ~/.cshrc y otro con ~/.aliases.

luego hice:

vim --servername abc --remote-tab ~/foo_bar 
fg 

Y ahora VIM tenía una pestaña con las dos memorias intermedias anteriores abiertos y otra pestaña con ~/foo_bar abierta.

En los casos de llamada, VIM se estaba ejecutando en el terminal, no como una GUI.

Cuestiones relacionadas