nvim-navbuddy

nvim-navicで紹介されているように、完全なパンくず 1 体験ができるようにしてみましょう❗

"ヘンゼルとグレーテル" はグリム童話🧒👧 で、グリム童話はグリム兄弟👨👨 がまとめた童話集で...。

A simple popup display that provides breadcrumbs like navigation feature but in keyboard centric manner inspired by ranger file manager.

パンくずナビゲーション機能を提供するシンプルなポップアップ表示ですが、 rangerファイルマネージャに触発されたキーボード中心の方法で表示されます。

って、お話が迷子😿 ...あ、いつも通りでした😹

Another red letter day

So the pound has dropped and the children are creating

また祝日だ

たとえポンドが下落しようとも 子どもたちは創作している

Requirements

もうお馴染みのルーティン😊

ここまで来ると「ああ、それね❗」ってなることが増えてきました😆

nvim-lspconfig

まずはこれですね。これが無いと始まりません 🐇

さて、まずはLSP活用の基盤を築きましょう❗nvim-lspconfigの登場です😆

Note

nvim-lspconfigと併せて、使用する言語に対応したLSPがちゃんと動いている環境が必要です。

このサイトでは16.1節から16.3節までの内容です。これを見てもらえると、一通りは動くようになっているはずです。

nvim-navic

んでもってこれですね。これも無いと始まらないそうです 🐇🐇

今回はのほほんとnvim-navicを導入してみましょう。

nui.nvim

そしてもう一つ、nui.nvim❗このサイトでは初登場です 🐇🐇🐇

UI Component Library for Neovim.

Neovim 用 UI コンポーネントライブラリ。

今回は完全にコンポーネントとしての役割に徹してもらうので、 nui.nvimに対して自分で直接働きかける必要はありません。インストールするだけでOKです❗

Setup

これもやっぱり、動かすだけならすごく簡単😉

extensions/nvim-navbuddy.lua

require('nvim-navbuddy').setup {
  lsp = {
    auto_attach = true,
  },
}

lsp

お察しの通り、これはnvim-navicと全く同じです😉

auto_attach

nvim-navbuddy needs to be attached to lsp servers of the buffer to work.

nvim-navbuddy はバッファの lsp サーバにアタッチされていないと動作しません。

You can pass the navbuddy's attach function as on_attach while setting up the lsp server. You can skip this step if you have enabled auto_attach option in setup function.

lsp サーバーのセットアップ時に on_attach として navbuddy の attach 関数を渡すことができます。 セットアップ機能で auto_attach オプションを有効にしている場合は、この手順を省略することができます。

え😮 こっちも省略しちゃっていいんですか❓やったね😋

Installation

もはや迷子になる方が難しい❗

extensions/init.lua

  use {
    "SmiteshP/nvim-navbuddy",
    config = function() require 'extensions.nvim-navbuddy' end,
    requires = {
      'neovim/nvim-lspconfig', 'SmiteshP/nvim-navic', 'MunifTanjim/nui.nvim',
    },
  }

はい、できた😆

Usage

Navbuddy command can be used to open navbuddy.

Navbuddy コマンドは、navbuddy を開くために使用することができます。

:Navbuddy

And alternatively lua function open can also be used to open navbuddy.

また、navbuddy を開くには、lua の open 関数を使用することもできます。

:lua require("nvim-navbuddy").open()

Tip

「言われなくてもわかっとるわー❗」てな事だとは思うんですが、これだとちょっと大変なので

vim.api.nvim_create_user_command('Nb', function()
  vim.cmd.Navbuddy()
end, {})

とか、

vim.keymap.set('n', '<leader>nb', vim.cmd.Navbuddy)

...とか、しておくといいかもしれません。

それでは、インストールを済ませてから呼び出してみましょう😉 nvim-navbuddy 1

Telescopeと似ていますが、これはnui.nvimのウィンドウなので、(デフォルトでは) hjklでカーソルが動きます。

ちょっとこれだと例が面白くないので、 15.11.1節で作成した extensions/nvim-tree-actions.luaで動かしてみるとこんな感じです😊 nvim-navbuddy 2

このリストと連動してファイル上でも選択範囲が動いていますね。ほら面白い❗🤹

Note

これってわたしの感想ですけど (違ってたらごめんなさいとしか言えませんが)、 nvim-navbuddyctagsがやっていたようなことを置き換えられるんじゃないかな❓😮

No.168🔹対決⑪

あれだけのオーラだ...❗❗

正真正銘全てをしぼり尽くしたんだろう

When you’re through with life

And all hope is lost

きみが全てを尽くして

目の前が真っ暗になったとしても

まだだね🩷

It’s so easy now

Cause you got friends you can trust

安心して

きみには信頼できる仲間がいる

カンペキに勝つ♣️

だろ?Con🩷

Hold out your hand

‘Cause right till the end

貴方の手を差し伸べてあげて

最後の最後まで

To Complete Victory

例えば、setupをこんなふうに変えてみましょう。

extensions/nvim-navbuddy.lua

require('nvim-navbuddy').setup {
  window = {
    size = { height = '40%', width = '100%' },
    position = { row = '96%', col = '50%' },
  },

  icons = {
    File = ' ',
    Module = ' ',
    Namespace = ' ',
    Package = ' ',
    Class = ' ',
    Method = ' ',
    Property = ' ',
    Field = ' ',
    Constructor = ' ',
    Enum = ' ',
    Interface = ' ',
    Function = ' ',
    Variable = ' ',
    Constant = ' ',
    String = ' ',
    Number = ' ',
    Boolean = ' ',
    Array = ' ',
    Object = ' ',
    Key = ' ',
    Null = ' ',
    EnumMember = ' ',
    Struct = ' ',
    Event = ' ',
    Operator = ' ',
    TypeParameter = ' ',
  },

  lsp = {
    auto_attach = true,
  },
}

ってやってみると... nvim-navbuddy 3

だいぶ雰囲気が変わりました😉

window

windowに関してはわたしの好みでカスタマイズしてあります。

パラメータを見れば何が変わるのかなんて、大体想像つきますよね❗ sizepositionですもんね❗...説明は無くてもいいですよね😅

パーセンテージで指定するところがちょっとクセに見えるかも知れません。

icons

これはnvim-navicにもあったやつですね😉

わたしはVSCode likeなアイコンに変えてますが、当然しなくてもいいです。

お好みでどうぞ❗

Optional Features

まだ終わらない...❗

extensions/init.lua

  use {
    "SmiteshP/nvim-navbuddy",
    config = function() require 'extensions.nvim-navbuddy' end,
    requires = {
      'neovim/nvim-lspconfig', 'SmiteshP/nvim-navic', 'MunifTanjim/nui.nvim',
+     'numToStr/Comment.nvim', 'nvim-telescope/telescope.nvim',
    },
  }

Comment.nvim

⚡Smart and Powerful commenting plugin for neovim ⚡

⚡neovimのスマートでパワフルなコメントプラグイン ⚡

Comment.nvimも初登場です❗ですが今回はインストールするだけでOKです。

nvim-navbuddyから使用するだけであればsetupも必要ありません😉

Tip

とはいえ、本来はnvim-navbuddyを介さずに単体で動作するプラグインです。

今後このサイトで別途取り上げるかは未定ですが、ぜひ活用してみて❗

これを使うと何ができるかっていうと、例えば適当なところでcをぽちっとすると...😮 nvim-navbuddy&Comment

選択されている構文がまとめてコメントアウトできるんですね🌟

元に戻す場合も同じくcで出来ちゃいます😆

Telescope.nvim

Comment.nvimの時と同様に、nvim-navbuddyから今度はtをぽちっ❗ nvim-navbuddy&Telescope

なんだかすごそう❗

もうここまで来ると、正直わたしは使いこなせていません🤯

Tip

これもやっぱりTelescopeのサイズを変えたくなるんですけど、 その場合はnvim-navbuddysetupで、キーコンフィグを例えばこんなんとかするといいです🐱

local actions = require 'nvim-navbuddy.actions'

require('nvim-navbuddy').setup {

  -- (中略)

  mappings = {
    ['t'] = actions.telescope {
      layout_config = {
        height = 0.40,
        width = 0.90,
        prompt_position = 'top',
        preview_width = 0.70,
      },
      layout_strategy = 'horizontal',
    },
  },

  -- (中略)

}

Similarly for other languages

今回は全てluaで話を進めてしまっていますが、これに限らずLSPさえ動いていれば割となんでもいけるクチです。 markdown

Note

上のスクリーンショットは、Markdownに対してmarksmanが動いてます。これもやっぱりmasonからインストールしてます😉

行こうみんなで「marksman」🎶 2

I'll take you all.

ちょこっとだけ触れるだけのつもりが、結構ガッツリ触れちゃいました😋

みんなの力があったからだよ。

全員(チーム) の勝利ってやつさ🩷 3

さらっといいことも言います🤫

という事で、やっと書き終わりました。あーお腹すいたー...。

お台場青海地区P区画 4 で"肉フェス"やってるんだって...、喰いたい🍖

って、お話が迷子😿 ...あ、いつも通りでした😹

Friends will be friends 5

友達は いつまでも友達

Success

今日も頑張ったね、おつかれさま❗

それでは楽しいゴールデンウィークを🤗

1: パンくずリスト(breadcrumb list)は、ウェブサイト内でのウェブページの位置を、 ツリー構造を持ったハイパーリンクの一覧として示すもの。パンくずナビ、トピックパス、フットパスとも言う。

英語では単に“breadcrumbs”または“breadcrumb navigation”というのが一般的である。

ウェブディレクトリのような大規模なウェブサイト内で、 利用者がサイト内での現在位置を見失わないようにし、ナビゲーションを助けるために使われる。

「パンくずリスト」という名前は、 童話『ヘンゼルとグレーテル』で、主人公が森で迷子にならないように通り道にパンくずを置いていった、というエピソードに由来する。 Wikipediaより

2: よしいくぞうってなるやつ🤣

3: なんか知らない間にドッジボールが続いていましたが、こっちも完結❗

4: ん⁉️ "地区P" とは言わないんれすね❗(これ言いたかっただけ😆)

5: Friends Will Be Friends (by Queen): Freddie Mercury と John Deacon が作曲し、1986年6月9日にアルバム『A Kind of Magic』のシングルとしてリリースされた。 Wikipediaより。

絶対不変と思われていたQueenのライブセットリスト (Roger の "Radio Ga Ga"、Brian の "We Will Rock You" と Freddie の"We Are the Champions") に、 最後にして John の "Friends Will Be Friends" が加わった❗っていうエピソードすき。