riutilizzare l'istanza vim dal terminale linux
Domanda
Utilizzando la funzione remota in vim, è possibile riutilizzare un'istanza di vim per caricare più file in base alle esigenze.
Sarà bello avere quella struttura all'interno della stessa istanza terminale.
Sono più desideroso di avere un'interfaccia basata su tab, che è disponibile in vim 7+ Lo scenario dovrebbe essere
- Apri terminale
- vim file1.cpp
- Modifica - Salva - Ctrl + Z per visualizzare il prompt
- apre un altro file
- vim file2.cpp
- Ora abbiamo file1.cpp e file2.cpp aperti nello stesso editor
È possibile ?!
Soluzione
Ho un paio di suggerimenti per te, anche se non è esattamente quello di cui stai parlando. Il primo è NERD Tree , che ti offre un piacevole albero browser di file per l'apertura di altri file. Molto maneggevole. Ho anche impostato un tasto di scelta rapida (ctrl+o
) per aprire NERD Tree per me. Mantengo un alias di qualsiasi progetto in cui mi trovo in ~/curr/trunk
, quindi questo funziona sempre per me:
map <C-O> :NERDTreeToggle ~/curr/trunk/<CR>
L'altra cosa che suggerirei è di eliminare 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 stesso. 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 rendere ovvio che sono in VIM:
if [ "$VIMRUNTIME" != "" ] ; then
export PS1="\u@\h \W \t$ vim> "
fi
< / 2 cents >
Altri suggerimenti
Non sono sicuro che questo possa essere fatto esattamente come stai specificando, ma probabilmente qualcosa di molto simile può essere fatto usando un server vim in esecuzione sul tuo computer locale.
Guarda :help remote.txt
in Vim.
Se la tua versione di vim è stata compilata con +clientserver
puoi usare 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 l'opzione --remote
può inviare comandi o file aggiuntivi ad esso.
per es.
vim --servername test file1.txt
vim --servername test --remote file2.txt
Ho dato un'occhiata e la vim che sto usando come standard su xubuntu su uno dei miei computer non ce l'ha, ma ci sono alcune istruzioni qui può essere utile se il tuo è stato compilato. In caso contrario, l'installazione di gvim e il collegamento simbolico sono apparentemente un'opzione (poiché gvim lo ha incluso per impostazione predefinita) o la compilazione dei file binari dal sorgente.
Modifica
Ho avuto più di un gioco con gvim e questo non sembra possibile farlo all'interno del terminale. Control-Z sospende il lavoro a livello di processo. Ho pensato che potesse funzionare con lo schermo, ma nessuna comunicazione sembra aver luogo a meno che gvim non sia stato avviato in una finestra grafica,
Questo è facile da fare se hai compilato VIM con +clientserver
, come Andy ha suggerito in una risposta precedente .
Ho fatto quanto segue:
Ho avviato VIM come server:
vim --servername abc
L'ho sospeso con CTRL+Z
e l'ho fatto:
vim --servername abc --remote ~/.cshrc
fg
Ora VIM aveva ~/.cshrc
aperto.
Poi ho fatto:
vim --servername abc --remote ~/.aliases
fg
Ora VIM aveva un buffer con ~/.aliases
e un altro con ~/foo_bar
.
Poi ho fatto:
vim --servername abc --remote-tab ~/foo_bar
fg
E ora VIM aveva una scheda con i due buffer precedenti aperti e un'altra scheda con <=> aperta.
Nei casi di chiamata VIM era in esecuzione nel terminale, non come una GUI.
Puoi dividere la schermata corrente e aprire due (o più) file nel modo seguente:
Per una divisione orizzontale, eseguire:
:sp 'filename'
e per una divisione verticale, fai:
:vsp 'filename'
Per passare da una scheda all'altra, premi ctrl + w, quindi usa un tasto freccia per spostarti sul file che desideri modificare.
Inoltre, se vuoi semplicemente cambiare file (e ne hai solo uno aperto), puoi farlo:
:e 'filename'
Buongiorno,
O se vuoi avere più file ma usa l'intera finestra di vim per un file alla volta, puoi semplicemente inserire
:e 'filename'
per aprire il nuovo file. Puoi farlo più volte. Per vedere cosa hai aperto, inserisci
:ls
Per rimbalzare tra i file che hai aperto puoi usare cntl- ^ (shift-cnt-6) e questo si alternerà tra i file principali e secondari (mostrati con un% e # nell'elenco dei file)
Oppure puoi inserire
:n b
dove n è il numero all'inizio del file desiderato nell'elenco mostrato dal comando 'ls'.
HTH
applausi,
È possibile impostare la funzione hidden
su vim, per consentire l'apertura di più file:
:set hidden
Quindi puoi aprire tutti i file che vuoi, senza preoccuparti di salvarli ogni volta che vuoi cambiare un " buffer " ;:
:e 'filename'
Hai diversi comandi per navigare nei buffer:
:bnext
:bprev
:buffers
Naturalmente, come menzionato da Samoz, puoi dividere lo schermo per vedere più buffer nella stessa finestra.
Suggerirei di leggere questo per una buona introduzione su vim, ti farà risparmiare un sacco di tempo.
Buona fortuna!