回答:
この`.
コマンドにより、最後の変更が行われます。
`
マークに行き、.
自動的に最後の変更が行われた位置に設定されている「特別な」マークです。詳細について:help `.
は、を参照してください。
また``
、最後のジャンプを行う前にカーソルがあった場所に戻る方法もあります。詳細については、:help``
を参照してください。
別の便利なマークは次のとおりです`^
。これは、挿入モードが停止されたときにカーソルが最後にあった位置です。をご覧ください:help `^
。
:help mark-motions
マークの使用に関するより一般的な情報については、(自動的に設定される他の「特別な」マークを含む)参照してください。
'
代わりに`
(アポストロフィ)を使用することもできます。
シナリオに合った別のアプローチを次に示しますgg
。最後の変更された行ではなく、直前の場所にジャンプします。
を押すgg
と、古いカーソル位置がジャンプリストにプッシュされます。から:help jumplist
:
ジャンプはジャンプリストに記憶されます。
CTRL-O
andCTRL-I
コマンドを使用すると、古いジャンプの前にカーソル位置に移動し、再び戻ることができます。したがって、リストを上下に移動できます。ウィンドウごとに個別のジャンプリストがあります。エントリの最大数は100に固定されています。[…]
ジャンプコマンドを使用すると、現在の行番号がジャンプリストの最後に挿入されます。同じ行が既にジャンプリストにあった場合、削除されます。その結果、繰り返した
CTRL-O
場合、一度だけ古い位置に戻ります。
これには、Vim(viではなく)を+jumplist
機能と共に使用する必要があります。:echo has('jumplist')
印刷する場合1
、これを使用できます。
dnetserrの回答とPeter Rinckerのコメントに追加するために、Vimは変更のリストを維持し、それに関連するいくつかのコマンドを持っています。
:changes
変更が一覧表示され、変更箇所と変更内容が表示されます。例えば:
change line col text
2 8 17 #include <stdio.h>
1 3 0 #include "stm32f407.auto.h"
>
の行>
は、変更スタックのどこにいるかを示しています。ジャンプリスト(:jumps
)やタグスタック(:tags
)のようなものです。ジャンプリストやタグスタックと同様に、このリストをたどることができます。
通常モードでは、モーションはg;
前の変更場所g,
に移動し、次の変更場所に移動します。リストからその変更の前に、g;
またはg,
その変更に移動するために、変更の番号を入力することもできます。上記で、2g;
stdio.hに関連する変更が発生した場所に移動します。
スタックの中央にあるとき、:changes
更新からの数字は相対的な距離を示します。例えば:
change line col text
1 8 17 #include <stdio.h>
> 0 3 0 #include "stm32f407.auto.h"
1 10 4 other
これは私が戻って1(行くことができることを示している1g;
か、単にg;
)または前方1(1g,
または単にをg,
)。
これは、取得したい変更が実際に数回前に変更された場合に最適です
これの欠点は、通常の動きのように動作しないように見えることです。たとえば、あなたが行うことができないdg;
のに対し、以前の変更の場所にカーソルから削除するd'.
と、d'^
動きなどの作業を行います。
Viの元に戻すコマンドは、最後のコマンドが元uu
に戻ったときにやり直しとして機能するため、最後に編集した場所に戻る手段として使用しました。
nocompatible
(ほとんどの人がそうであるように)セットでVimを実行している場合は、u
続いCTRL+R
て元に戻し、やり直してください。それ以外の場合uu
は、Viと同様に機能します。
:set nocompatible
使用されない場合になります。
vim
(with nocompatible
)はで2回元に戻しますがuu
、同じ効果を使用u
しCTRL+r
ます。
g;
またはg,
を使用して、変更リスト内の位置間を移動することもできます。参照してください:h g;
と:h g,