LoginSignup
4
4

More than 5 years have passed since last update.

vim scriptで、正規表現のマッチを変数に格納する

Last updated at Posted at 2012-11-10

vim scriptで、正規表現のマッチを変数に格納するには、matchstr関数を使います。

matchStr1.vim
let defLine = "def some_method"
let methodName = matchstr(defLine, '\(def\s\+\)\zs\k\+', 0)
echo methodName 
"-> some_method

最初の引数はリストでも関数を呼ぶことはできますが、リストの場合はマッチした結果ではなく、該当行全体が返ってくるため、さらに絞り込む必要があります。

matchStr2.vim
let defFile = ["def move_camera"]
let defFile += [ "eye = [100, 1000, 1000]"]
let defFile += [ "target = [0, 0, 0]"]
let defFile += [ "up = [0, 0, 1]"]
let defFile += [ "my_camera= Sketchup::Camera.new eye, target, up"]  
let defFile += [ "view = Sketchup.active_model.active_view"]
let defFile += [ "view.camera = my_camera"]
let defFile += [ "end"]

let defLine = matchstr(defFile, '\(def\s\+\)\zs\k\+', 0)
let methodName = matchstr(defLine, '\(def\s\+\)\zs\k\+', 0)
echo methodName 
" -> move_camera
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4