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件) を見る