#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/

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS