02/01/06 03:07
KoRoNさんにこんなに詳細にコメントを頂けるなんて感激です。
ありがとうございます。
このスレでvimスクリプト入門を果たしたので知らないことばかりですが
これからも精進したいです。
修正したものを貼り付けます。
# マーク位置を判定 の部分は私の能力では簡潔に書き直せなかった;;
"マークにジャンプする
function! s:JumpToMark(mode)
let markchars = "abcdefghijklmnopqrstuvwxyz"
if a:mode ==? "up"
let LineNo = 0
endif
if a:mode ==? "down"
let LineNo = line("$") + 1
endif
let LineNoOrg = line(".")
let MarkChar = ""
let i = 0
"a-z をチェック
while i <= (char2nr('z') - char2nr('a'))
let x = line("'" . markchars[i])
"マーク位置を判定
if (a:mode ==? "up" && LineNoOrg > x && LineNo < x) || (a:mode ==? "down" && LineNoOrg < x && LineNo > x)
let MarkChar = markchars[i]
let LineNo = x
endif
let i = i + 1
endwhile
if MarkChar != ""
"移動
execute "normal `" . MarkChar
redraw!
echo "マーク" MarkChar "にジャンプ"
else
echohl ErrorMsg
echo "該当するマークがない;;"
echohl None
endif
endfunction
"コマンド定義
command! JumpToMarkDown call <SID>JumpToMark('down')
command! JumpToMarkUp call <SID>JumpToMark('up')