😸
telescope.nvimをまあまあ調べた
ショーケース
なんとなくこれを見るとやれる事がわかってくる
追加パッケージ
なお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のシステムインストール状態とかもチェックされるようだ
キーマップ
よくわからんけど
これ型式でコピペの応酬をしてしまった。もうちょっと良い書き方とかあるかも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