02/01/05 22:00
現在行から一番近い上か下のマークへジャンプするスクリプトを作ってみました。
皆様のおかげです。厨房くさいスクリプトですが思い切って、投稿してみます。
まずいとことかあったら教えてください。
行単位でしか見てないので、一行に複数のマークがあっても無視してます。
"マークにジャンプする
function! JumpToMark(mode)
let i = 0x61
if a:mode == "up"
let s:LineNo = 0
endif
if a:mode == "down"
let s:LineNo = line("$") + 1
endif
let s:LineNoOrg = line(".")
let s:MarkChar = ""
"a-z をチェック
while i < 0x7b
let s:x = line("'" . nr2char(i))
if (a:mode == "up" && s:LineNoOrg > s:x && s:LineNo < s:x) || (a:mode == "down" && s:LineNoOrg < s:x && s:LineNo > s:x)
let s:MarkChar = nr2char(i)
let s:LineNo = s:x
endif
let i = i + 1
endwhile
if (a:mode == "up" && s:LineNo > 0) || (a:mode == "down" && s:LineNo < line("$") + 1)
"移動
execute "normal `" . s:MarkChar
echo "マーク" s:MarkChar "にジャンプ"
else
execute "echohl ErrorMsg"
echo "該当するマークがない;;"
echohl None
endif
endfunction
■使い方
"上のマークへ
:call JumpToMark('up')
"下のマークへ
:call JumpToMark('down')
なぜか画面のスクロールを伴うマークへのジャンプをした後の echo で出力した
メッセージが表示されません(表示されて消える?)
スクロールされた後でもメッセージが表示できるようにする方法はあるんでしょうか?
win2000 のgvim 6.0 です。