Neovimでカーソルの移動を可視化できるプラグインSmoothCursor.nvimを使ってみた

Neovimでカーソルを移動した時に追いかけやすくなります。
2023.01.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

どうも。CX事業本部Delivery部のえーたん(@eetann092)です。

愛用中のSmoothCursor.nvimの紹介です。カーソル移動時、signcolumnに副カーソルが表示され、移動方向や地点が視覚化されます。

以下は、デフォルトの設定で動かした例です。

3行よりも多く移動したら副カーソルが描画されます。この閾値はthresholdオプションで変更できます。

一部オプションの紹介

Fancy modeを有効にすると、副カーソルに割り当てる文字や色を変えることができます。

たとえばREADMEに載っている通り、ゲーミングカラーにできます。

筆者の設定は以下です。シンタックスハイライト付きで見たい方はdotfilesをどうぞ。 副カーソルの色を全部オレンジにしています。

require("smoothcursor").setup({
	priority = 10,
	fancy = {
		enable = true,
		head = { cursor = "", texthl = "SmoothCursor", linehl = nil },
		body = {
			{ cursor = "", texthl = "SmoothCursorOrange" },
			{ cursor = "", texthl = "SmoothCursorOrange" },
			{ cursor = "●", texthl = "SmoothCursorOrange" },
			{ cursor = "●", texthl = "SmoothCursorOrange" },
			{ cursor = "•", texthl = "SmoothCursorOrange" },
			{ cursor = ".", texthl = "SmoothCursorOrange" },
			{ cursor = ".", texthl = "SmoothCursorOrange" },
		},
		tail = { cursor = nil, texthl = "SmoothCursor" },
	},
	disabled_filetypes = {
		"TelescopePrompt",
		"TelescopeResults",
		"gitblame",
		"css",
		"noice",
		"lazy",
	},
})

カーソル行のハイライトをauto-cursorline.nvimで行っているため、headcursorは空文字を指定しています。 disabled_filetypesで無効にしたいファイルタイプを指定しています。

他のプラグインとの組み合わせに気を付けよう

signcolumnを使っている他のプラグインを入れている場合、priorityオプションの変更時に注意が必要です。

たとえば、gitsigns.nvimを優先させてしまうと、以下のように副カーソルの描画が途切れてしまいます。

同じようにsigncolumnを使うプラグインで優先度を変えたい場合、そのプラグインのヘルプやコードで文字列priorityを検索すると、それらしい設定が出てくるかもしれません。SmoothCursor.nvimはpriorityオプション、gitsigns.nvimはsign_priorityオプションで優先度を設定できます。

リンク集

作者のgen740さんによる記事もあります。

SmoothCursor.nvimのリポジトリのリンクは以下です。