回答:
この`.コマンドにより、最後の変更が行われます。
`マークに行き、.自動的に最後の変更が行われた位置に設定されている「特別な」マークです。詳細について:help `.は、を参照してください。
また``、最後のジャンプを行う前にカーソルがあった場所に戻る方法もあります。詳細については、:help``を参照してください。
別の便利なマークは次のとおりです`^。これは、挿入モードが停止されたときにカーソルが最後にあった位置です。をご覧ください:help `^。
:help mark-motionsマークの使用に関するより一般的な情報については、(自動的に設定される他の「特別な」マークを含む)参照してください。
'代わりに`(アポストロフィ)を使用することもできます。
シナリオに合った別のアプローチを次に示しますgg。最後の変更された行ではなく、直前の場所にジャンプします。
を押すggと、古いカーソル位置がジャンプリストにプッシュされます。から:help jumplist:
ジャンプはジャンプリストに記憶されます。
CTRL-OandCTRL-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,