while ("im the true Vim master");

2009-01-25

Re: 一つ前のタブに戻るKey mapping - 日々是鍛練

| 15:02

  • autocmd内でのexists()チェックは不要。
  • 変数のスコープは他所で使うのでなければグローバル(g:)よりスクリプトローカル(s:)にした方が良い。
  • この場合、<C-t>はモディファイヤーではなくプレフィックス。モディファイヤーはCtrlやShiftなどの単体で押しても意味がないキーのこと。
  • TabLeaveが先に発生し、TabEnterが後に発生する」というコメントはあった方が分かり易い(:help tab-page-otherに記述はあるけどTabLeave等の項目にはないので分かり難いことこの上ない)。
  • :tabonly実行後は期待通りの動作をしない。g:pre_tabnrに該当するタブページは存在しない場合があるから。
  • :tabmove実行後は期待通りの動作をしない。tabpagenr()で得られる番号は現在のタブページの状態における相対位置であり絶対的な識別番号ではない。そのため、:tabmoveの前後でメモされていた番号の意味が変わるから(これはwinnr()でも同じ)。

私も同じような機能を実装してプラグイン化しようかと思っていた時期がありましたが、:tabonlyと:tabmoveの問題で面倒臭くなって止めました。この2点に目を瞑ればid:yoppiblogさんのコードでOKなんですけど、何分、経質なもので。

タブページやウィンドウに対して絶対的な識別番号がないのは108あるVimの欠点の1つなのですが、どうしたらいいでしょうかね。独自にそのような番号を振っておいてそれを使うのは一つの手なのですが、今度はその独自の番号から:tabnext等用の番号に変換することが困難です(し、実際、現在のVimではそれができない)。独自の番号の管理も面倒ですし、かといってt:を使うとSEGVる可能性が高い。

最近のコメント
あわせて読みたいブログパーツ
AX