2013-07-31 16 views
10

Mi piace molto il comportamento di YankRing, che mi consente di accedere alle ultime parecchie cose che ho anked o d eleted o c impiccato senza pensare.Vim Repeat punto (".") Buffer di comando?

Tuttavia una funzione complementare come questa è completamente mancante per il comando di ripetizione ., più spesso quando si digita qualcosa che voglio davvero ripetere, quindi sovrascrivo accidentalmente quella modifica premendo x per pulire qualcosa.

Spesso è possibile tornare indietro un po 'di tempo in modalità visuale, tirando fuori quello che ho appena digitato, ma non è l'ideale.

Dovrebbe essere davvero facile ricordare gli ultimi comandi.

La domanda è: quanto è possibile estrarre da Vim la rappresentazione dell'ultimo comando contenuto in qualsiasi archivio che cosa farà . prima che venga spazzato via?

Se è come temo, l'unico modo è quello di ottenere un plugin per legarsi ad ogni singolo comando che potrebbe modificare qualcosa, e lo strumento in un modo tale da conservare la nostra repeat-buffer. Questo non è davvero pratico perché posso già immaginare quanti altri plug-in si romperanno. Ma, vorrei davvero davvero questa funzione se è possibile in qualsiasi modo.

+0

Domanda correlata [Una versione più potente del punto (ripetizione)] (http://stackoverflow.com/q/16722566). – glts

+0

@glts Ho scritto che ... è simile ma richiede di essere preparato iniziando a registrare –

+0

Basta imparare a usare i [registri] (http://stackoverflow.com/questions/1497958/how-to-use-vim-registers? rq = 1) e altre funzionalità built-imim. Così tanti plugin che "sistemano" cose che non hanno bisogno di essere aggiustate. L'operatore di punti funziona perfettamente con i registri. Ad esempio, puoi '" qp' per incollare il registro 'q' e ripetere con' .', ma qualsiasi modifica come 'x' non cambierà ciò che hai salvato in qualsiasi registro non predefinito. Un altro ottimo post per leggi [qui] (http://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim?rq=1) –

risposta

1

Il completamento della parola chiave e/o ctrl-a in modalità di inserimento dovrebbero soddisfare le vostre esigenze.

Una soluzione più simile a una biforcazione dovrebbe essere possibile ma, come dici tu, probabilmente un po 'troppo invadente. Hai guardato su vim.org da solo prima di chiedere agli altri di farlo per te?

+0

Sì, voglio dire, non c'è nemmeno un modo in cui Vim si preoccupi di capire cosa farà il '.'. Speravo davvero che qualcuno avesse una patch sorgente per esporla con un comando. –

+0

. ripete il tuo ultimo cambiamento. È abbastanza semplice, davvero. Il comando punto non è realmente progettato per eseguire serie di comandi da molto tempo fa, praticamente, non devi mai indovinare cosa sta per fare. Se si desidera che altre soluzioni a lungo termine utilizzino macro e mapping. – romainl

2

Sfortunatamente, non c'è modo di ottenere e riprodurre il comando dietro il comando .. L'unica soluzione è di essere perennemente nella modalità di registrazione macro e utilizzare il registro macro come sostituzione per il comando ..

Questa tattica viene utilizzata dallo RepeatLast plugin, che potrebbe offrire ciò che si desidera.