6

既存の単文字マークに追加マークを設定できるようにしたい。したがって、現在直面している2つの問題を解決できます。

  1. マークはスクリプトで設定されており、スクリプトのユーザーによって既に設定されているマークを破棄したくありません

  2. マークを数えなくて済むように、無制限の数のマークを設定できます (私は のような名前を付けます"script_mrk_" . s:mark_count)。

したがって、関数呼び出しとして表現すると、おそらく何かを探しています

setPrivateMark(l:mark_name, l:line, l:pos)

let line_pos = getPrivateMark(l:mark_name)

もちろん、ソリューションは、 で設定した後setPrivateMarkと前に、マークの上のバッファへの変更に耐性がある必要がありgetPrivateMark(...)ます。

そのようなことはありますか?

4

2 に答える 2

3

Vim は、変更時に組み込みのマークの位置のみを更新します。その機能が必要な場合は、それらを使用する必要があり、既存のマークの数に制限されています。

これを回避する方法はありません。単純なユーザー編集の場合、CursorMovedIイベントにフックして記録された位置を調整できますが、 のような Ex コマンドをフックする方法はありません:append

プラグインにいくつかのマークが必要な場合は、ユーザーがスクリプトで使用されるマークを構成できるようにすることをお勧めします (たとえば、g:MyPlugin_UseMarks変数を介して)。すべてのマークを常に使用する人はほとんどいませんが、好みは人によって異なります。

于 2013-04-11T12:40:49.493 に答える
0

無制限のマーク わかりませんが、辞書タイプを作成できます。キーは「マーク」名、値はカーソルの位置です。

位置は、によって取得および設定できます

getpos() and setpos()

または、実際のコードが必要ですか?

于 2013-04-11T12:21:22.420 に答える