スパム対策として書込み時にID/PWを要求されますが、ローマ字で ほげ/ホゲ で書き込めるようになります。

Smarter Table Editing

  • ページ: tips
  • カテゴリー: 編集
  • 投稿日: 2005-01-29 17:23:19 (土)

メッセージ

http://www.vim.org/tips/tip.php?tip_id=547
より.

argv( {nr})                   String    {nr} entry of the argument list
hoge■

■のところにカーソルがあるとき<S-Tab>とすると,上のStringの下までスペースを挿入する:

結果:
argv( {nr})                   String    {nr} entry of the argument list
hoge                          ■

ノーマルモードとインサートモードで有効. コンソールでは<S-TAB>のマッピングは効かないかもしれないので注意.

map <S-Tab> :call NextField(' \{2,}',2,' ',0)<CR>
imap <S-Tab> <C-O>:call NextField(' \{2,}',2,' ',0)<CR> 

func! NextField(fieldsep,minlensep,padstr,offset)
    let curposn = col(".")
    let linenum = line(".")
    let prevline = getline(linenum-1)
    let curline = getline(linenum)
    let nextposn = matchend(prevline,a:fieldsep,curposn-a:minlensep)+1
    let padding = ""

    if nextposn > strlen(prevline) || linenum == 1 || nextposn == 0
        echo "last field or no fields on line above"
        return
    endif

    echo ""

    if nextposn > strlen(curline)
        if &modifiable == 0
            return
        endif
        let i = strlen(curline)
        while i < nextposn - 1
            let i = i + 1
            let padding = padding . a:padstr
        endwhile
        call setline(linenum,substitute(curline,"$",padding,""))
    endif
    call cursor(linenum,nextposn+a:offset)
    return
endfunc 


NextField?()の引数によってフィールドのセパレータ等を変えることができる.

fieldsep: フィールドのセパレータ(正規表現)
minlensep: フィールドのセパレータの最小の長さ.よくわからない.
padstr: 次のフィールドまでの間隔を埋める文字  
offset: 次のフィールドの先頭から何文字目にジャンプするかのオフセット

なお,行のフォーマットを自動的に認識してくれるようにしたのが次のプラグイン:
http://www.vim.org/scripts/script.php?script_id=769

\th で現在行のフォーマットを認識し,マッピング有効化
\ta で現在行整形
\tt でマッピング有効/無効トグル




トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-10-14 (火) 01:13:17 (1402d)