Sticky Scroll for NeoVim
「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は、関連するヘッダーを表示し続けることで、コードベースのナビゲーションと理解を容易にします。長いクラスやメソッドを扱うときにも、コードの文脈を維持できるようになりました。)
最近 LUA化した NeoVimで似たような機能を入れたなぁと思い出しました。
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画像での動きを確認ください。