2009-12-21 9 views
6

sto rallentando conoscere Vim e Bash shell scripting e sono in esecuzione in questo problema:Come rientrare Vim dopo:! bash?

quando sono in esecuzione MacVim, a volte mi desidera utilizzare la riga di comando per compilare qualunque cosa sia su cui sto lavorando (in questo caso un piccolo programma Java). Quindi scrivo :! bash e compilo tutto ciò di cui ho bisogno e lo collaudo. Poi, quando ho voglia di tornare al programma stavo montando digito vim MyProgram.java e ottenere tutti i tipi di messyness nella mia sessione Vim come [8;1H~ [9:1H~ [10:1H~ ... etc.

Che cosa sto facendo male qui? Non posso tornare a Vim una volta che ho avviato la shell all'interno?

Esistono modi migliori per compilare ed eseguire il file corrente?

(sto usando MacVim 7.2 e Bash 3.2.48 su OSX 10.6.2.)

risposta

15

due suggerimenti:

  1. Utilizzare exit per uscire la shell bash e tornare a vim.
  2. All'interno di vim, utilizzare :set makeprg=name_of_your_make_program per compilare automaticamente da dentro con il comando . Come bonus, se si tratta di un set di strumenti che vim riconosce, vim analizzerà l'output del compilatore, mostrerà gli errori e consentirà per saltare a ciascuna di esse in modo da poterle correggere. Vedere i comandi :cl, :cc, :cn e :cp per i principianti.
+3

È utile per : mappare un paio di tasti funzione per i comandi: cn e: cp. Saltare avanti e indietro è molto più veloce in quel modo. –

6

digitate:

exit 

Questa uscirà il sottoprocesso bash e tornare a vim. Sarebbe meglio usare qualcosa come GNU schermo per mantenere una sessione di Vim e Bash contemporaneamente (ed è più facile passare oltre :!bash ... exit

+0

uno per lo schermo .... –

+0

2 1/2 anni più tardi, tmux> schermo. –

+0

@Adam: Davvero? Sembra che si sta concentrando sull'essere un'alternativa leggera (e non ha tutte le funzionalità dello schermo). Qualche ragione particolarmente interessante per cambiare? – Draemon

1

Provare a digitare exit o ctrl-d dall'interno della shell bash. Questo ti riporterà in vim. Bash sta eseguendo "inside" vim, quindi se provi a eseguire di nuovo vim, stai eseguendo vim all'interno di bash all'interno di vim e quindi degli errori.

4

È necessario uscire dalla shell bash. Questo può essere fatto dal comando exit, o più semplicemente premendo CTRL + D al prompt.

2

Le altre risposte sono corrette.

Voglio solo ricordare che è possibile utilizzare

:sh 

invece di

:!bash 

Vedi :help sh.

In questo modo, vim sa che si sta eseguendo una shell anziché solo un comando (che sembra essere bash).

0

Se in Mac OS, è necessario digitare fg per tornare a vim dopo l'esecuzione di un comando bash. Altri non hanno funzionato per me.

+1

Non in questo caso. Esistono due modi per utilizzare la shell interattiva da "inside" vim: avviare una nuova come processo figlio (come ha fatto TS) o sospendere vim (che dovrebbe portarti nella shell * parent *, se vim è stato avviato dalla shell, ovviamente). 'exit' è per il primo caso,' fg' è per il secondo. – ZyX

Problemi correlati