2012-01-04 13 views
13

Mi piacerebbe sapere come recuperare un file utilizzando Vi in MySQL. Ho collegato utilizzando:Recupera il file perso usando Vi in MySQL

mysql -uuser -p -hserver -A database 

poi faccio: apre

\e 

L'editore e ho digitare la mia domanda di 200 linee, poi ho :wq e \G (se risparmio il file, dice: /tmp/sql9SbYQZ saved) e vedo il risultato.

Ora, se faccio un errore o eseguo una query diversa e provo a digitare di nuovo \e, la query è persa.

ll /tmp/sql9SbYQZ 
ls: /tmp/sql9SbYQZ: No such file or directory 

C'è un modo per recuperare il file perso?

risposta

30

Ecco cosa ho aggiunto al mio .vimrc per salvare la query corrente nel caso in cui ho fatto un errore.

nmap <F7> :w! /tmp/query.sql\| wq!<CR> 

Ciò creerà una mappa per il tasto F7 (è possibile modificarlo ovviamente). Quindi, ogni volta che apri un file usando edit o \e, lo cambi usando la chiave F7.

Ciò consentirà di salvare un backup della query corrente su /tmp/query.sql e quindi salvare e chiudere il file temporaneo. In questo modo, se commetti un errore, riapri il file di backup e riprova.

Ecco anche un collegamento che potrebbe piacerti: http://vim.wikia.com/wiki/Open_the_last_edited_file

0

Qui è qualcosa che si può provare:

In Linux, effettuare le seguenti operazioni

$ cd 
$ cp .mysql_history mystuff.txt 
$ vi mystuff.txt 

Si dovrebbe vedere il file .mysql_history. Il client mysql registra tutte le query e i comandi eseguiti. Spero che la tua domanda sia lì.

Provalo !!!

1

Con l'editor vi/m utilizzato con mysql, crontab e molti altri, il lavoro viene eseguito in un file tmp, come si vede dai messaggi.

Modifica (Big Doah !, rimuovere cruft su ls -l/tmp/..., hai già fatto!)

In futuro la soluzione è quella di dire vim-w il buffer ad un nome file del vostro chosing, cioè

w! /home/you/scripts/mysql2.sql 

quindi chiudere l'editor con

q 

Nota potrebbe non nee d il ! dopo w.

Spero che questo aiuti.