Telescope 官方 README 建議不要追 master 版本,我也真的踩過雷,所以一直停在 0.1.8,18 個月前的東西了。

前幾天終於釋出 0.1.9,變動列出來很長:
Release v0.1.9 · nvim-telescope/telescope.nvim (我也貢獻了一個 PR)
光看標記為 feat 的就要花些時間了,本篇選幾個列出來。

新增 actions.select_tab_drop

選擇檔案後要怎麼開啟,身為分頁使用者當然是用 tab drop 啊。

這個 2022 年就實作的東西一直沒有釋出,我用自己寫的 function 代用很久,終於能換掉了。

除了一些檔案類 picker 能直接設定 mappings 例如 ['<CR>'] = 'select_tab_drop' 這樣,在一些 LSP picker 也能用 jump_type = 'tab drop' 達到相當效果(#2218#2751)。

顯示 * 表示正在搜尋

就是搜尋框後面會多一個顯示,跑完就會消失 (#2637)。

新增 actions.delete_buffer

給 buffers picker 用的,預設按鍵是 <M-d>。 (#3145

新事件 TelescopeResumePost

原來 telescope 有幾個自訂 User 事件 (autocmd),doc 沒寫,只有 README 有提到。
但應該是 plugin 開發者比較有機會用到。 (#2433

插入 <cWORD><cfile>

以前在 picker 輸入框裡想用 <C-R><C-W>(貼上游標文字)或 <C-R>%(目前檔案路徑)會發現貼不出東西,現在特別加了幾個預設 mapping 來做這些事。 (#3134 等)

新增「bcommits_range」 picker

以前雖然有 bcommits picker 可以列出目前檔案的歷史,但沒辦法針對「特定幾行」或「目前這一行」比較精準地追溯,現在新增 bcommits_range 滿足你的願望,#2398

不過預設動作只有 checkout 或者打開 diff,我的習慣還是用 vim-gitdiffall 這老東西:

※這個範例用到我自己寫的 vim function,所以不能真的拿來用,僅供參考
gitdiff = function(bufnr)
  -- Refer to builtin: actions.git_checkout_current_buffer
  local cwd = action_state.get_current_picker(bufnr).cwd
  local selection = action_state.get_selected_entry()
  actions.close(bufnr)

  local fugitive_path = vim.fn.FugitivePath(selection.current_file)
  local display_name = vim.fn.fnamemodify(fugitive_path, ':.')
  local command = string.format("tabnew %s | silent GitDiff @%s", display_name, selection.value)
  vim.cmd(command)
end,

gitdiffall = function(bufnr)
  local cwd = action_state.get_current_picker(bufnr).cwd
  local selection = action_state.get_selected_entry()
  actions.close(bufnr)

  local toplevel = vim.fn.eval("fugitive#repo().tree()")
  vim.fn.TmuxNewWindow({
    text = "gitdiffall @" .. selection.value,
    title = '⎇',
    directory = toplevel
  })
end,