2015-04-20 4 views
5

In Vim, se si esegue un comando di salto, ad es. G, quindi posso riportare il cursore nel punto in cui era prima del salto utilizzando Ctrl-o. Tuttavia, Ctrl-o non riporta il cursore al punto precedente se ho emesso un comando di movimento come 40j o Ctrl-f, poiché non alterano la lista di salto. Esiste un comando che annullerà movimenti come quelli?Esiste un comando Vim per annullare l'ultimo movimento, ad es. <count> j o Ctrl-f?

Per essere chiari, io non sto cercando una risposta "manuale", come ad esempio 40k si ottiene indietro dalla 40j, dal momento che tale comando non è genericamente applicabile nel modo in cui Ctrl-o opere.

Inoltre, se nessun comando incorporato lo fa, allora qualche plugin lo fa?

risposta

5

È possibile ignorare i movimenti predefiniti di prevedere che, in questo modo:

" j, k   Store relative line number jumps in the jumplist. 
nnoremap <expr> k (v:count > 1 ? "m'" . v:count : '') . 'k' 
nnoremap <expr> j (v:count > 1 ? "m'" . v:count : '') . 'j' 

C'è anche il reljump plugin, che implementa la stessa.

Tuttavia, fare attenzione, poiché l'overdoing ridurrà l'utilità della Jump List. Per questo motivo, sconsiglio di cambiare Ctrl-F/Ctrl-B.

0

È possibile impostare un segno con m' e quindi tornare indietro con ``.

+1

Questa soluzione richiede la premeditazione manuale per impostare il segno, tuttavia, che non è applicabile nel modo in cui Ctrl-o funziona. –

Problemi correlati