2015-04-20 9 views
5

In Vim, wenn ich einen Sprungbefehl, z. G, dann kann ich den Cursor mit Ctrl-o dorthin zurückbringen, wo er vor dem Sprung war. Allerdings würde Ctrl-o meinen Cursor nicht zum vorherigen Punkt zurückversetzen, wenn ich einen Bewegungsbefehl wie 40j oder Ctrl-f ausgegeben hätte, da sie die Sprungliste nicht verändern. Gibt es einen Befehl, der solche Bewegungen rückgängig macht?Gibt es einen Vim-Befehl, um die letzte Bewegung rückgängig zu machen, z.B. <count> j oder Strg-f?

Um klar zu sein, ich bin nicht auf der Suche nach einem „Handbuch“ Antwort, wie 40k Sie von 40j zurückkommt, da ein solcher Befehl, dass Ctrl-o Arbeiten in der Art und Weise nicht allgemein anwendbar ist.

Auch, wenn kein eingebauter Befehl dies tut, macht es dann irgendein Plugin?

Antwort

5

Sie können die Standardbewegungen außer Kraft setzen dafür zu schaffen, wie folgt aus:

" 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' 

Es auch ist die reljump plugin, die gleich implementiert.

Seien Sie jedoch vorsichtig, denn Übertreibungen verringern die Nützlichkeit der Sprungliste. Aus diesem Grund würde ich davon abraten, Strg-F/Strg-B zu ändern.

0

Sie können eine Markierung mit m' einrichten und dann mit `` zurückkehren.

+1

Diese Lösung erfordert jedoch die manuelle Vorüberlegung, um die Markierung zu setzen, die nicht in der Art und Weise anwendbar ist, wie Ctrl-o funktioniert. –