Sticky Scroll for NeoVim

カテゴリー:  Tech タグ:  editor vim
nvim-treesitter-context

nvim-treesitter-context

Visual Studio 2022 – 17.6 Now Available」 という記事読んでいて、"Sticky Scroll"という話が出てきて、 「Vimでも出来てたアレか?」と思いまとめてみました。

Sticky Scroll?

問題の記事は以下です。

Sticky Scroll keeps relevant headers in view, making it easier to navigate and understand your codebase. Now you can maintain context in your code while working with long classes and methods.

(Sticky Scrollは、関連するヘッダーを表示し続けることで、コードベースのナビゲーションと理解を容易にします。長いクラスやメソッドを扱うときにも、コードの文脈を維持できるようになりました。)

Visual Studio 2022 – 17.6 Now Available」より

最近 LUA化した NeoVimで似たような機能を入れたなぁと思い出しました。

nvim-treesitter-context

nvim-treesitter-contextです。

TreeSitterが前提となりま す。以下は、プラグイン管理のlazy.nvimを 使った場合の導入方法です。

init.luaに以下のように記述します。 私は見やすいようにセパレータを設定しました。

{
    -- The Vim plugin displays the context of the visible buffer contents.
    'nvim-treesitter/nvim-treesitter-context',
    dependencies = { { 'nvim-treesitter/nvim-treesitter' }},
    event = 'VeryLazy',
    config = function()
        require'treesitter-context'.setup {
            enable = true, -- Enable(Can be enabled/disabled later via commands)
            max_lines = 0, -- How many lines the window should span.
            -- Values <= 0 mean no limit.
            min_window_height = 0, -- Minimum editor window height to enable context.
            -- Values <= 0 mean no limit.
            line_numbers = true,
            multiline_threshold = 20, -- Maximum number of lines to collapse 
            -- for a single context line
            trim_scope = 'outer', -- Which context lines to discard if `max_lines`
            -- is exceeded. Choices: 'inner', 'outer'
            mode = 'cursor',  -- Line used to calculate context. 
            -- Choices: 'cursor', 'topline'
            -- Separator between  context and content. 
            -- Should be a single character string, like '-'.
            -- When separator is set, the context will only show up when there are
            -- at least 2 lines above cursorline.
            separator = '~',
            zindex = 20, -- The Z-index of the context window
            on_attach = nil, -- (fun(buf: integer): boolean) return false to
            -- disable attaching
        }
    end,
},

どんなものかは、冒頭に貼り付けたGIF画像での動きを確認ください。

コメント

Comments powered by Disqus