telescope.nvim

前回でほぼ外観が出来上がったので、ここからは一気に機能を追加していきます😆

Gaze deeply into unknown regions using the power of the moon.

月の力を借りて、未知の領域を深く覗き込む。

とってもロマンチックな見出し🥰

telescope.nvim is a highly extendable fuzzy finder over lists. Built on the latest awesome features from neovim core. Telescope is centered around modularity, allowing for easy customization.

telescope.nvim は、リスト上のファジーファインダーで、高度に拡張可能です。 neovim core の最新の素晴らしい機能に基づいて構築されています。 Telescope はモジュール性を重視しており、簡単にカスタマイズすることができます。

Community driven builtin pickers, sorters and previewers.

コミュニティによって開発された、ピッカー、ソーター、プレビュー機能を搭載しています。

2023年はうさぎ年です🐰 うさぎといえば月ですね🌝

今やらないでいつやるの❓telescope.nvimの登場です 🔭

Note

"moon" はポルトガル語でluaです😉

Getting Started

しばらくは文字ばっかり続いちゃいますが、頑張っていきましょう😆

Neovim (v0.7.0) or the latest neovim nightly commit is required for telescope.nvim to work.

最初のこれはもう問題ないですね。他も覗いてみましょう。

Required dependencies

packerrequiredに指定してあげれば良いので、ここもまだ見知った領域ですね❗

Suggested dependencies

月の力を借りているとは言え、高度な拡張を謳っていることもあって、ここから先の手順は少し複雑に感じられるかもしれません。

...とは言え、必要なのは有名なソフトウェアばかりなので、どんな環境に対しても簡単なインストール方法が確立されています❗

まあだいじょぶ。できるよ🤗

BurntSushi/ripgrep is required for live_grep and grep_string and is the first priority for find_files.

BurntSushi/ripgreplive_grepgrep_stringに必要で、find_filesでは最優先されます。

わたしも半分くらいは何言われてるのかわからないんで思考回路はショート寸前😵‍💫ですが、 ripgrepが必要だということは伝わってきました❗

We also suggest you install one native telescope sorter to significantly improve sorting performance. Take a look at either telescope-fzf-native.nvim or telescope-fzy-native.nvim. For more information and a performance benchmark take a look at the Extensions wiki.

また、ソート性能を大幅に向上させるために、1つのネイティブな telescope sorter をインストールすることをお勧めします。 telescope-fzf-native.nvimtelescope-fzy-native.nvim のいずれかを見てみてください。 より詳細な情報とパフォーマンスベンチマークについては、 Extensions wiki.をご覧ください。

sorterは必須ではありませんが、せっかくお勧めされているし、何よりもなんか面白そうです☺️

"性能を大幅に向上"❓今すぐ 会いたいよ😆

ripgrep

まずはripgrepから。

ripgrep is a line-oriented search tool that recursively searches the current directory for a regex pattern. ripgrep は行指向の検索ツールで、正規表現パターンに基づいてカレントディレクトリを再帰的に検索します。

Rustで開発されているgrep 1 ツールです。

Archives of precompiled binaries for ripgrep are available for Windows, macOS and Linux.

ripgrep のコンパイル済みバイナリのアーカイブは、Windows、macOS、Linux 用に用意されています。

インストールに関しては手厚くフォローされているので、ほとんどの環境で楽勝でしょう❗

Note

例えばmacOSならすっかりお馴染みのHomebrewでできます。

brew install ripgrep

telescope-fzf-native.nvim

わたし自身があんまりよく分かってない領域なので、少し無責任な紹介になってしまいますが、 ここではtelescope-fzf-native.nvimを選んで話を進めます。

fzf-native is a c port of fzf. It only covers the algorithm and implements few functions to support calculating the score. This means that the fzf syntax is supported:

fzf-native は fzf の c 版です。これはアルゴリズムのみをカバーし、スコア計算をサポートするいくつかの関数を実装しています。 これは、fzf構文がサポートされていることを意味します。

これもまたrequireのミルフィーユになっていて、泣きたくなるような moonlight🌕

To get fzf-native working, you need to build it with either cmake or make. As of now, we do not ship binaries. Both install methods will be supported going forward.

fzf-nativeを動作させるためには、cmake または make でビルドする必要があります。 現在のところ、バイナリは同梱していません。今後、どちらのインストール方法もサポートする予定です。

まあでも、ここまで来れたのだからなんとかなるでしょ😉 へーきへーき。

Note

CMakeを使う方法と、Makeを使う方法が示されていますが、 このサイトではpackerへの指示が簡単なMakeを使っていきます。

コードはもう少し後で示します❗

これにプラスして、GCCClangが必要なので、足りないものがあれば事前にインストールしておきましょう。

Note

わたしが普段このサイトのスクリーンショットに使っているLinuxの環境では、 nvim-treesitterのインストール時にClangを導入してあったので、特に何もせずそのままいけました。

macOSも特に何も考えずにいつもいけてます。

Windowsはいつも通り自信がありませんが、 もしかしたらCMakeMicrosoft C++ Build Tools on Windowsを使う方が、MinGWを必要としない分、簡単かもしれません。

Optional dependencies

あともうちょっと...。がんばれ...❗

  • sharkdp/fd (finder)
  • nvim-treesitter/nvim-treesitter (finder/preview)
  • neovim LSP (picker)
  • devicons (icons)

nvim-treesitterdeviconsについては導入済みですね、だいぶ安心できました。 neovim LSPについては、このサイトで扱うのはもう少し先の予定なので、ここは一旦スキップしましょ❓

ってことは...❓あとひとつ❗

fd

fd

fd is a program to find entries in your filesystem. It is a simple, fast and user-friendly alternative to find. While it does not aim to support all of find's powerful functionality, it provides sensible (opinionated) defaults for a majority of use cases.

fd は、ファイルシステム内のエントリを検索するプログラムです。 find に代わる、シンプルで高速かつユーザフレンドリなプログラムです。 find の強力な機能のすべてをサポートすることを目的としているわけではありませんが、 ほとんどのユースケースに対して、賢明な(意見のある)デフォルトを提供しています。

On ***

これもrigprepと同じく、手厚くインストール方法が提供されているので大丈夫❗

Tip

わたしが知っている範囲で言うと、

  • fd: ファイル名検索
  • rg: ファイル内をテキスト検索

なので、似ているようで役割は別々です。

Installation & Configration

長い道のりでしたが、ようやくコンフィグを書くところまで来ました😆

extensions/telescope.lua

local telescope = require 'telescope'

telescope.setup {
  defaults = {
    mappings = {
      i = {
        ['<C-h>'] = 'which_key',
      },
    },
    winblend = 20,
  },
}
telescope.load_extension 'fzf'

local builtin = require 'telescope.builtin'

vim.keymap.set('n', '<leader>ff', builtin.find_files)
vim.keymap.set('n', '<leader>fg', builtin.live_grep)
vim.keymap.set('n', '<leader>fb', builtin.buffers)
vim.keymap.set('n', '<leader>fh', builtin.help_tags)

上の例は、オフィシャルに示されているコードを所々省略した記述にしています。

ここまで来れば、あとはもうpackerに任せればできちゃいます😸

extensions/init.lua

use {
  'nvim-telescope/telescope.nvim',
  branch = '0.1.x',-- or... tag = '0.1.1'
  config = function() require 'extensions.telescope' end,
  requires = {
    'nvim-tree/nvim-web-devicons', 'nvim-lua/plenary.nvim',
    { 'nvim-telescope/telescope-fzf-native.nvim', run = 'make' },
  },
}

Tip

CMakeを使用する場合、telescope-fzf-native.nvimのコードを以下のようにしてください。

    {
      'nvim-telescope/telescope-fzf-native.nvim',
      run = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release &&\
        cmake --build build --config Release &&\
        cmake --install build --prefix build'
    }

信じてないのね...😿

だったらね、こう叫んでみて❗ムーンプリズム・パワー、メイクアーップ🐱🌙

はっ❗🐰🙋

Note

このサイトは色々パク...🙊

引用作品へのリスペクトや愛情の深さや再現度の高さやその他諸々なんか等にきっと定評があります❗

telescope-installation

telescope.nvimtelescope-fzf-native.nvimplenary.nvimの3つがインストールされていれば成功です❗

Note

なんと❗telescope.nvimは、つい最近0.1.1がリリースされました👏 とってもタイムリー❗

release: 0.1.1

ただ、今後このtagbranchがどういう扱いになるのか分からない (わたしが知らないだけ❓) ので、 今後の動向を気にかけておく必要はあるかも。

CheckHealth

Make sure you call :checkhealth telescope after installing telescope to ensure everything is set up correctly.

Telescope をインストールした後、必ず:checkhealth telescopeを呼び出して、 すべてが正しくセットアップされていることを確認してください。

After this setup you can continue reading here or switch to :help telescope to get an understanding of how to use Telescope and how to configure it.

このセットアップの後、ここを読み続けるか、:help telescope に切り替えて Telescope の使用方法と設定方法を理解することができます。

telescope.nvimさえインストールできれば、checkhealth が使えます。

Note

これはnvim-treesitterでも出てきたNeovimのコマンドですね。

まさかサボってたせいでエラーが出てるぅ❗な〜んてこと、あるはずはありませんが、一度確認のために動かしてみましょう😉

:che telescope
telescope-che-err

...。😮 telescope-che-require telescope-che

ほら❗オールグリーン✨

Tip

fzfを知っている人に向けて書くと、少なくともここに出てくるfzftelescope-fzf-native.nvimの事なので、 本家の fzf はあってもなくても平気みたいです😉

実際、上の環境ではインストールされていません。

telescope.builtin

それでは、コンフィグに入れたleaderffを試してみましょう...。 telescope-ff

いい感じ〜☺️

ファイル名で検索して絞り込んだり、 でカーソルを動かしたり、returnでファイルを開いたりできます😌

Note

これ、ずっと気が付かなかったんですが、初掲出時はFile Previewが出ていないスクリーンショットを載せていました😅

ある程度ウィンドウが広くないと出てこないみたいです。 telescope-ff

Wrap Up

やっぱりというか、当然というか...。これもインストールだけなのにすごいボリュームでしたね😅

しかし、月の力を借りて、未知の領域を深く覗き込むことが出来るようになりました❗

コンフィグについてはまだもう少し書いておきたい事があるのですが、ここで一旦休憩しましょ🌕🐇

Assemble

幾千万の星から あなたを見つけられる

偶然もチャンスに換える 生き方が好きよ

1: grepは、 search globally in the file / each lines to which the regular expression matches / print them の頭文字から来てるんだって😮