#author("2019-06-07T06:27:57+09:00","default:ryuichi","ryuichi")
#author("2019-06-07T06:30:52+09:00","default:ryuichi","ryuichi")
* Surround.vim テキストを囲む - ys + 範囲 + 囲む文字列 [#k7aac06c]
** ysiw と ysaw の違い [#e6fa9563]
*** ysiw - iw (=inner word) [#i4a8d6fe]
foo bar baz
↓
foo "bar" baz
foo bar "baz"
- カーソルをbarのどこかに合わせる
- カーソルをbazのどこかに合わせる
- '''ysiw"'''
- ysの後、iwでbarを範囲指定して、文字列を"に指定する
*** ysaw - aw (=a word) [#m907d981]
foo bar baz
↓
foo "bar" baz
foo bar" baz"
- カーソルをbarのどこかに合わせる
- '''ysiw"'''
- ysの後、iw(=inner word)でbarを範囲指定して、文字列を"に指定する
- カーソルをbazのどこかに合わせる
- '''ysaw"'''
** 行末まで囲む [#ja2347aa]
foo bar baz
↓
"foo bar baz"
- カーソルを行頭に合わせる
- '''ys$"'''
- ysの後、範囲を$で行末まで指定、文字列を"に指定
** ( や [ で囲む時の前後のスペースを調節する [#k53d4a13]
foo
↓
( foo )
- カーソルをfooのどこかに合わせる
- '''ysaw('''
- ysの後、範囲をawで単語にして、(で囲む。この時、(はスペースを含む
foo
↓
[foo]
- カーソルをfooのどこかに合わせる
- '''ysaw]'''
- ysの後、範囲をawで単語にして、]で囲むこの時、(はスペースを含まない
** 複数の単語を囲む [#k8f32f82]
foo = hello, world
↓
foo = "hello, world"
- カーソルをhに合わせる
- '''ys3w"'''
- ysの後、単語が3つあるので3wで範囲を指定して、囲む文字を"に指定する
** ビジュアルモードで範囲を指定して囲む [#af0aaf34]
foo bar baz
↓
"foo bar" baz
- foo barをビジュアルモードで範囲指定する
- '''S"'''
- 小文字のsではなく、大文字のSなので注意する
** 参考 [#gbfcaac6]
- テキストオブジェクト https://blog.carbonfive.com/2011/10/17/vim-text-objects-the-definitive-guide/