Vimで選択部分のテキストを取得する
Vimで選択した部分を取得する
How to get visual selected text in Vim
vimでscriptを書いていると,選択した部分にのみ結果を反映したいみたいなことがあります.
この方法を自分で色々調べていたのですが How to get visually selected text in VimScrip
こんな資料が見つかったりするわけです.
方法その1 選択部分のエリアを探して,その部分を取得する
function! GetVisualSelection() " Why is this not a built-in Vim script function?! let [lnum1, col1] = getpos("'<")[1:2] let [lnum2, col2] = getpos("'>")[1:2] let lines = getline(lnum1, lnum2) if lnum1 == 0 && lnum2 == 0 && col1 == 0 && col2 == 0 return '' endif let lines[-1] = lines[-1][:col2 - (&selection == 'inclusive' ? 1 : 2)] let lines[0] = lines[0][col1 - 1:] return join(lines, "\n") endfunction
だけど,この方法なんだかVimっぽくないと思ったので
自分で色々試行錯誤してみれば,案の定ありました! もっと簡単な方法.
それが以下
方法その2(推奨) クリップボードレジスタを使う
clipboarレジスタの設定で
set clipboard=unamed,autoselectplus
が有効になっていれば
以下の方法で選択部分のテキストが取得できます.
let l:text = @*
簡単!
Have a Good Vim Life