Hatena::Groupvim

逆引きvimscript

逆引きvimscript

目次

  • 文字列操作
    • カーソル位置の文字列を取得
    • 正規表現で文字列の置換
    • 現在行の文字列を取得
    • 現在行を置換
    • 特定位置の文字列を取り出す
    • カーソル位置に文字列を挿入

文字列操作

カーソル位置の文字列を取得

strpart(getline('.'), col('.') - 1, 1)

正規表現で文字列の置換

substitute('foooooboooooo','o\+','o','g')
" fobo

現在行の文字列を取得

getline('.')

現在行を置換

foo を bar に置換

setline(line('.'),substitute(getline('.'), 'foo', 'bar',''))

特定位置の文字列を取り出す

let str = 'foobar'
echo str[1:2] " oo
echo str[:2] " foo
echo str[3:] " bar

カーソル位置に文字列を挿入

もっとスマートな方法があったら教えてplz

function! CursorInsert(str)
    let line = getline('.')
    let col  = col('.')
    let pos  = getpos('.')

    if col != strlen(line)
        call setline(line('.'), line[:col -2] . a:str . line[col - 1:])
        let pos = getpos('.')
    else
        call setline(line('.'), line . a:str)
    endif

    let pos[2] = pos[2] + strlen(a:str)
    call setpos('.', pos)
endfunction