2009-06-16 20 views
11

Facendo uso della funzione remota in vim, è possibile riutilizzare un'istanza di vim per caricare più file in base alle esigenze.riutilizzare istanza vim dal terminale linux

Sarà bello avere questa funzione all'interno della stessa istanza terminale.

io sono più desiderosi di avere un'interfaccia scheda basata, che disponibili in vim 7+ Lo scenario dovrebbe essere

  1. Aprire terminale
  2. vim file1.cpp
  3. Edit - Salva - Ctrl + Z per arrivare per richiedere
  4. aprire un altro file
    • vim file2.cpp
  5. Ora abbiamo file1.cpp e file2.cpp aperto lo stesso editor

È quello possibile ?!

risposta

3

Ho un paio di suggerimenti per te, anche se nessuno dei due è esattamente quello di cui stai parlando. Il primo è NERD Tree, che ti dà un bel browser di file basato su albero per aprire altri file. Molto maneggevole. Ho anche impostato un tasto di scelta rapida (ctrl+o) per aprire NERD Tree per me. Continuo a un alias di qualsiasi progetto sono su in ~/curr/trunk, quindi questo funziona sempre per me:

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

L'altra cosa che vorrei suggerire è quello di farla finita con Ctrl + Z. È un po 'goffo, e tutti quelli che conosco che usano quel metodo tendono a perdersi e finiscono con 3 o 4 vim in esecuzione in background. Dai un'occhiata a come aprire una shell per te.Io uso una mappa per; s per eseguire uno script di shell:

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

che esegue:

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

ho anche un po 'di magia nel mio .profile per aver reso evidente Sono in VIM :

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

</2 centesimi >

+0

Brillante! Questo funziona molto meglio di quello che stavo cercando. Ho fatto alcuni script che emuleranno ciò che volevo, ma lo trovo ponderoso in certi scenari. Non ho potuto eseguire il debug anche molto bene. Fare un passo indietro e pensare nei panni di JachM mi ha aiutato con una soluzione migliore.! Ciao Jack! –

+0

Ho aggiunto un tasto di scelta rapida che uso per attivare NERD Tree. Potrebbe essere utile. –

3

È possibile suddividere la schermata corrente e aprire due (o più) i file nel seguente modo:

Per una divisione orizzontale, do:

:sp 'filename' 

e per una divisione verticale, do:

:vsp 'filename' 

Per passare da una finestra all'altra, premere ctrl + w, quindi utilizzare un tasto freccia per spostarsi sul file che si desidera modificare.

Inoltre, se si desidera passare solo i file (e hanno solo uno aperto), si può fare questo:

:e 'filename' 
+0

La risposta di Jack M.s è certamente corretta, ma questa è una soluzione molto più semplice. –

1

È possibile impostare la funzione hidden su vim, per consentire di avere più file aperti :

:set hidden 

Quindi è possibile aprire i file che si desidera, senza preoccuparsi di risparmiare loro ogni volta che si desidera passare un "buffer":

:e 'filename' 

avete diversi comandi per navigare il buffer:

:bnext 
:bprev 
:buffers 

Naturalmente, come detto da samoz, è possibile dividere lo schermo per vedere più buffer sulla stessa finestra.

Suggerisco di leggere this per una buona introduzione su Vim, ti farà risparmiare molto tempo.

Buona fortuna!

2

G'day,

Oppure, se si vuole avere più file, ma utilizzare l'intera finestra di Vim per un file alla volta si può semplicemente inserire

:e 'filename' 

per aprire il nuovo file. Puoi farlo più volte. Per vedere quello che hai attualmente got aperto, immettere

:ls 

a rimbalzare tra le file avete ottenuto aperto è possibile utilizzare cntl-^(shift-CNT-6) e che si alterneranno tra il principale e secondaria file (mostrati con una% e # nella lista dei file)

Oppure è possibile immettere

:n b 

dove n è il numero all'inizio del file che si desidera nella lista mostrata dai 'ls' comando.

HTH

applausi,

6

non sono sicuro se questo può essere fatto esattamente nel modo in cui si specificano, ma qualcosa di molto simile probabilmente può essere fatto utilizzando un server di vim in esecuzione sul vostro macchina locale.

Cerca in :help remote.txt in Vim.

Se la versione di vim è stata compilata con +clientserver, è possibile utilizzare vim per creare un server Vim e quindi eseguire comandi su di esso, ad es. aprendo un altro file.
L'opzione --servername può creare un nuovo server e lo switch --remote può inviare comandi o file aggiuntivi.

ad es.

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

ho avuto uno sguardo, e il vim sto usando come standard su Xubuntu su uno dei miei computer non ce l'ha, ma ci sono alcune istruzioni here che possono aiutare se il vostro ha compilato . In caso contrario, l'installazione di gvim e del collegamento simbolico è apparentemente un'opzione (come gvim lo ha incluso per impostazione predefinita) o la compilazione dei binari dall'origine.

Edit:
ho avuto più di un gioco con gvim e questo non sembra possibile fare questo all'interno del terminal. Control-Z sospende il lavoro a livello di processo. Ho pensato che potesse funzionare con lo schermo, ma nessuna comunicazione sembra avvenire a meno che gvim non sia stato lanciato in una finestra grafica,

+0

In risposta alla tua modifica, funziona se, dopo C-Z, esegui il processo in modo che non venga sospeso? –

+0

Ero sceso esattamente nello stesso percorso. Di fatto un po 'più usando uno script wrapper per usare la gestione dei lavori di bash per riportare in vita il vim prima di effettuare --remote call. Ha funzionato a lungo, ma il successo è stato abbastanza intermittente. –

5

Questo è facile da fare se si è compilato VIM con +clientserver, come Andy suggested in a previous answer.

ho fatto la seguente:

ho iniziato VIM come server:

vim --servername abc 

ho sospeso con CTRL+Z e ha fatto:

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

Ora VIM aveva ~/.cshrc aperta.

poi ho fatto:

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

Ora VIM aveva un buffer con ~/.cshrc e un altro con ~/.aliases.

poi ho fatto:

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

E ora mi VIM avuto una scheda con i due tamponi precedenti aperti e un'altra scheda con ~/foo_bar aperta.

In casi di chiamata VIM era in esecuzione nel terminale, non come una GUI.

Problemi correlati