在講解vim的基礎功能的時候,介紹過了vim的各種查詢技巧,在同一個文件中進行搜索的話,那些技巧很有用。在多個文件中我們介紹了使用vim自帶的 :grep命令進行搜索,使用quickfix 列表進行跳轉,但是比起其他代碼編輯器來說,總歸有那么一些繁瑣光是輸入參數都已經很麻煩了,我想要像其他代碼編輯器那樣直接輸入內容它就能基于工程來進行匹配。本篇文章我們將要來對它進行優化,達到這一目的。
本次我們要介紹的是神級插件 telescope
,一般只要介紹 neovim
配置的文章98%以上的都會推薦這個插件作為文件搜索和文本搜索的插件。我們自然也不能免俗,這里我也要介紹它,如果不介紹就顯得有點不太專業了。雖然我也介紹,但是這個系列畢竟是從0開始配置vim,我會從安裝到配置進行描述,希望能比其他的教程要詳細一點。但是最詳細的仍然是它的官方文檔。
安裝
我們使用下面的代碼進行安裝
use {
'nvim-telescope/telescope.nvim', tag = '0.1.0',
requires = { {'nvim-lua/plenary.nvim'} }
}
為了更好的使用體驗可以安裝一個 nvim-treesitter
插件,它主要用于代碼高亮,它采用語法分析的形式對代碼進行高亮,相比于使用正則表達式來說效果更好,后面會詳細的介紹如何進行配置,加上它之后 telescope
插件將會更加強大。這個時候我們的安裝代碼應該改為
use {
'nvim-telescope/telescope.nvim', tag = '0.1.0',
requires = { {'nvim-lua/plenary.nvim'} , {
'nvim-treesitter/nvim-treesitter',
run = function() require('nvim-treesitter.install').update({ with_sync = true }) end,
}}
}
這里加上一個 run
的配置主要是安裝 nvim-treesitter
插件之后,第一次會報錯,后面是正常的,這句話是為了消除第一次加載時報錯
安裝完成之后,我們就可以在命令中輸入 :Telescope find_files
來按照名稱搜索文件
它常用的命令有如下幾個
-
find_files
: 查找文件 -
live_grep
: 使用正則表達式來進行內容的搜索,它可以跨文件搜索 -
buffers
:查看當前打開的緩沖區,并且可以預覽緩沖區的內容 -
grep_string
: 以當前光標所在單詞進行搜索 -
oldfile
: 打開歷史文件列表 -
marks
: 打開書簽表 -
jumplist
: 打開跳轉列表
如果我們希望能夠使用 live_grep
和 grep_string
的功能需要提前在系統上安裝 ripgrep。例如在ubuntu 上可以使用下列命令安裝
sudo apt-get install ripgrep
配置
我們先對最常用的功能進行快捷鍵的映射
vim.api.nvim_set_keymap("n", "<leader>ff", "<Cmd>Telescope find_files<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "<leader>gg", "<Cmd>Telescope live_grep<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "<leader>fm", "<Cmd>Telescope marks<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "<leader>fj", "<Cmd>Telescope jumplist<CR>", {noremap = true, silent = true})
不知道各位小伙伴是否還記得,我們在配置啟動界面的時候留下了幾個功能沒有添加,現在我們有了這個插件之后就可以添加一部分了
在 dashboard
的配置中,我們可以補充相關功能對應的命令如下
db.custom_center = {
{icon = "? ", desc = 'Recently lastest session ', shortcut = "Leader s l", action = ""},
{icon = "? ", desc = "Recently opened files ", shortcut = "Leader f h", action = "Telescope oldfiles"},
{icon = "? ", desc = "Find File ", shortcut = "leader f f", action = "Telescope find_files"},
{icon = "? ", desc = "File Browser ", shortcut = "leader f b", action = "Telescope file_browser"
}, {icon = "? ", desc = "Find Word ", shortcut = "leader g g", action = "Telescope live_grep"},
{icon = "? ", desc = "Open Personal dotfiles ", shortcut = "leader e e", action = "edit $MYVIMRC"}
}
要使用 Telescope file_browser
的功能我們需要額外安裝一個插件。它擴展了 Telescope
插件的功能
use { "nvim-telescope/telescope-file-browser.nvim" }
并且我們需要在 telescope
配置中加載這個擴展
require('telescope').load_extension "file_browser"
這樣我們就完成了幾乎所有的功能了,還差一個加載上次會話的功能,我們等到討論會話的時候再來補上
到現在我們的配置基本就結束了,我們目前僅僅只使用了它極為有限的功能。根據官方的文檔,它有大量的導出函數用于各種功能,但是現在我們并不打算做太多的定制化開發,僅僅拿來用即可,所以目前的配置我認為已經夠用了。各位小伙伴也可以根據自己的需求查閱官方文檔進行額外的配置