從零開始配置vim(20)——模糊查詢

在講解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 來按照名稱搜索文件

1.gif

它常用的命令有如下幾個

  • find_files : 查找文件
  • live_grep: 使用正則表達式來進行內容的搜索,它可以跨文件搜索
  • buffers:查看當前打開的緩沖區,并且可以預覽緩沖區的內容
  • grep_string: 以當前光標所在單詞進行搜索
  • oldfile: 打開歷史文件列表
  • marks: 打開書簽表
  • jumplist: 打開跳轉列表

如果我們希望能夠使用 live_grepgrep_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"

這樣我們就完成了幾乎所有的功能了,還差一個加載上次會話的功能,我們等到討論會話的時候再來補上


2.gif

到現在我們的配置基本就結束了,我們目前僅僅只使用了它極為有限的功能。根據官方的文檔,它有大量的導出函數用于各種功能,但是現在我們并不打算做太多的定制化開發,僅僅拿來用即可,所以目前的配置我認為已經夠用了。各位小伙伴也可以根據自己的需求查閱官方文檔進行額外的配置

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,663評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,125評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,506評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,614評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,402評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,934評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,021評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,168評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,690評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,596評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,288評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,027評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,404評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,662評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,398評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,743評論 2 370

推薦閱讀更多精彩內容