nvim-treehopperを使うと、ソースコードの抽象構文木に基づいた範囲選択が簡単にできます。
関数定義全体を選択とか、if文の条件部分を選択とか、文脈に沿った範囲選択が捗るわけです。
おそらく、定番の使い道は選択範囲の削除(d | D)やヤンク(y | Y)でしょう。加えてコードの折り畳み(zf)とも相性が良いとに気付きました。

treehopperで選択した範囲を折り畳む様子
ノーマルモードではzf{motion}と、モーションで移動した範囲に対して折り畳みを実行するので、使い勝手が悪く感じます。
そこで、以下のようにzfをマッピングしてあげると、モーションの変わりにnvim-treehopperで折り畳み範囲を決定できます。
vim.api.nvim_set_keymap(
'n',
'zf',
function()
require'tsht'.nodes()
vim.cmd("normal! zf")
end,
{silent = true}
):help zfにある通り、zfはfoldmethodオプションが “manual” か “marker” の時しか、使えませんので、ご注意下さい。
Enjoy!!
Atusy's blog