😸

telescope.nvimをまあまあ調べた

2025/01/18に公開

https://github.com/nvim-telescope/telescope.nvim

ショーケース

https://github.com/nvim-telescope/telescope.nvim/wiki/Showcase

なんとなくこれを見るとやれる事がわかってくる

追加パッケージ

なおgrep系にはripgrepのバイナリーが必要みたいで、これはaptで入る

インストール

~/.config/nvim/init.lua
local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim'
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({
    'git',
    'clone',
    '--filter=blob:none',
    'https://github.com/folke/lazy.nvim.git',
    '--branch=stable',
    lazypath,
  })
end
vim.opt.rtp:prepend(lazypath)

require('lazy').setup({
  {
    'nvim-telescope/telescope.nvim', tag = '0.1.8',
    dependencies = { 'nvim-lua/plenary.nvim' }
  }
})

オフィシャルドキュメントではtag指定が推奨されてるかも。

checkhealth telescope

ripgrepのシステムインストール状態とかもチェックされるようだ

キーマップ

よくわからんけど
https://www.lazyvim.org/configuration/examples
これ型式でコピペの応酬をしてしまった。もうちょっと良い書き方とかあるかも

require('lazy').setup({
  {
    "nvim-telescope/telescope.nvim",
    tag = "0.1.8",
    dependencies = { "nvim-lua/plenary.nvim" },
    keys = {
      -- ファイル検索
      {
        "<leader>ff",
        function() require("telescope.builtin").find_files() end,
        desc = "Telescope: ファイルを検索",
      },
      -- ライブ検索
      {
        "<leader>fg",
        function() require("telescope.builtin").live_grep() end,
        desc = "Telescope: ライブ検索",
      },
      -- バッファ検索
      {
        "<leader>fb",
        function() require("telescope.builtin").buffers() end,
        desc = "Telescope: バッファを検索",
      },
      -- ヘルプタグ検索
      {
        "<leader>fh",
        function() require("telescope.builtin").help_tags() end,
        desc = "Telescope: ヘルプタグを検索",
      },
      -- カスタム文字列検索
      {
        "<leader>fs",
        function()
          require("telescope.builtin").grep_string({ search = vim.fn.input("Search > ") })
        end,
        desc = "Telescope: カスタム検索文字列で検索",
      },
    },
  }
})

定義されたキーマッピングリスト

キー アクション 説明
<leader>ff require("telescope.builtin").find_files() Telescope: ファイルを検索
<leader>fg require("telescope.builtin").live_grep() Telescope: ライブ検索
<leader>fb require("telescope.builtin").buffers() Telescope: バッファを検索
<leader>fh require("telescope.builtin").help_tags() Telescope: ヘルプタグを検索
<leader>fs require("telescope.builtin").grep_string({ search = ... }) Telescope: カスタム検索文字列

いずれよせよ、こういったキーが定義された。

ファイルの検索

たとえばlaravelのprojectで(migrationのファイルとこやったかなあ...)つってシェルにもどって検索するのもばからしいので


\ffで起動したfind_file()

<Leader>ffで検索する。超絶遅かったctrlpみたいなのとか、外部ツールに依存したfzfみたいなのとかいろいろあったけど、まあ今ではこれは内蔵のfunctionでそれなりに速いようだ。fzfに依存する事もできるみたい。

ライブgrep

まあまたlaravelの話だと(あー、typehintつけないといけなかった気がするけどredirectresponseってどうやったかなあ...)みたいな


\fgで起動したlive_grep()

nvimプラグインの設定を検索する時にもいいかもしれないっすね。今はテスト的にinit.luaに小さい設定を書いては投げてますが..

ファイルの移動

たとえばvimだと

:ls

とかやっていたのが \fb で選択できる。\はleaderのdefaultキー


\fbで起動したbuffers()

おまけ: telescope lazy

  -- telescope-lazy.nvim
  {
    'tsakirist/telescope-lazy.nvim',
    dependencies = { 'nvim-telescope/telescope.nvim' },
    config = function()
      require('telescope').load_extension('lazy')
    end,
  },

:Telescope lazyでプラグイン一覧

LSPとかの絡みはまたいずれ

Discussion