Vimメモ : BracelessでPythonコードの折り畳み、インデントハイライト
braceless.vim
github.com
Bracelessプラグインを使うと、Pythonのようなインデントが重要な言語でテキストオブジェクト追加、簡単なコード折り畳み、インデントハイライトができるようになる。インストール
deinの場合は下記行をdeinlazy.tomlなどに追加。
[[plugins]] repo = 'tweekmonster/braceless.vim' on_ft = 'python'
使い方
Bracelessには下記表の選択可能な機能があり、使用したい機能を選択して設定すればよい。
| オプション | 説明 |
| +fold | 折り畳み設定を有効化 |
| +highlight | インデントハイライトを有効化 |
| +highlight-cc | インデントハイライトを有効化(colorcolumnのみを使用) |
| +highlight-cc2 | インデントハイライトを有効化(colorcolumnも使用) |
| +indent | オートインデントの有効化 |
例えば、+foldを使用したい場合は下記行をvimrcに追加。
autocmd FileType python BracelessEnable +fold
全ての機能を使用したい場合は下記行をvimrcに追加。
autocmd FileType python BracelessEnable +indent +fold +highlight
BracelessはPython以外のインデントが重要な他の言語でも使用できるので下記指定も可能。
autocmd FileType haml,yaml,coffee BracelessEnable +indent +fold +highlight
以下、それぞれの機能について試してみる。
なお、テキストオブジェクトとカーソル移動についてはBracelessEnableで有効になる模様。
テキストオブジェクト
PでPythonのブロックが選択できるようになるので図のような操作が可能。

図はReadmeにあったもので操作が速すぎてよくわからないが、以下の操作をしている。
viPでオブジェクト内部をビジュアル選択iPでさらに内部を選択aPでオブジェクト全体を選択ggで先頭に移動ciPでオブジェクト内部を変更(削除)して文字入力:e!でカレントファイルを強制開き直し(元に戻す)ggOで先頭に移動、先頭行に挿入して文字入力>iPでオブジェクト内部のインデントを下げる:e!でカレントファイルを強制開き直し(元に戻す)
カーソル移動
図のようにPythonのブロックを意識したカーソル移動が可能。

| キー | 移動先 |
| [[ | 前のブロックの: |
| ]] | 次のブロックの: |
| [m | 前のdef、classブロックの先頭 |
| ]m | 次のdef、classブロックの先頭 |
| [M | 前のdef、classブロックの末尾 |
| ]M | 次のdef、classブロックの末尾 |
折り畳み設定(+fold)
折り畳み操作はVim標準でも可能だが、+foldを有効化すればPython向けの折り畳み操作が簡単にできる。

上記コードの場合に、while a < n:行にカーソルを置いてzcを押すと、

のように折り畳まれる。この状態でdef fib(n):行にカーソルを置いてzcを押すと、

のように折り畳まれる。開く場合はzo(一段階)、zO(再帰的)を押せばよい。
折りたたみ操作で使用する代表的なキーは下記を参照。
| キー | 説明 |
| zc | カーソルの下の折畳を一段階閉じる |
| zC | カーソルの下の折畳を再帰的に全て閉じる |
| zo | カーソルの下の折畳を一段階開く |
| zO | カーソルの下の折畳を再帰的に全て開く |
| zM | 全ての折畳を閉じる(前に操作した対象のみ) |
| zR | 全ての折畳を開く |
インデントハイライト(+highlight, +highlight-cc, +highlight-cc2)
+highlight、+highlight-cc、+highlight-cc2を有効化すれば、カーソルのある行に関係するインデントがハイライト表示されるようになる。
+highlightを設定した場合は、以下のようにインデントがハイライト表示される。


+highlight-ccの場合は、図のようにウィンドウ全体に薄く表示される(colorcolumnという名前らしい)。

+highlight-cc2の場合は、+highlightと+highlight-ccを併せた表示になる。

インデントは下記プラグインを使用すると常時可視化しておけるが、Bracelessの場合はカーソルのある行に応じてハイライトが変わるのが特徴。
wonderwall.hatenablog.com
オートインデント(+indent)
+indentを有効化すれば、図のように改行したときのインデントが変わる(左側がBraceless)。Readmeには完璧ではないと書いてあるし、このあたりは好みがわかれそう。


- 作者: Bill Lubanovic,斎藤康毅,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/12/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る