开发工具 在 Zed 编辑器中使用 Telescope 风格进行查询定位文件

qinsicheng · 2024年11月23日 · 134 次阅读

尝试过nvim的人应该都对 telescope 这种文件查询风格很喜欢,当在输入时能自动进行重新查询,并通过上下键进行翻阅

我目前在使用另一款编辑器 Zed,它目前内置的查询并无法做到类似的操作。但通过内置的 Terminal+fzf+bat+rg 也能做到类似的效果

git 链接:https://l.ruby-china.com/photo/qinsicheng/8bebe536-17bd-4da9-8569-f554773e9533.gif 帖子里看没有打开成功

fish function

function search_and_edit
    # 使用rg进行文件搜索,并使用fzf进行预览
    set -l selected_file (rg --column --hidden --line-number --no-heading --color=always --smart-case --glob '!**/.git/' --glob '!**/node_modules/' . | fzf --ansi --delimiter : --preview 'bat --style=numbers,changes,header --color=always --highlight-line {2} {1}' --preview-window 'up:60%:+{2}+3/3' --layout=reverse)

    # 如果选择了文件,提取文件路径、行号和列号
    if test -n "$selected_file"
        set -l file (echo $selected_file | cut -d':' -f1)
        set -l line (echo $selected_file | cut -d':' -f2)
        set -l col (echo $selected_file | cut -d':' -f3)

        # 使用Zed编辑器打开文件
        zed $file:$line:$col
    end
end

Zed keymap

{
    "context": "Editor && vim_mode == normal && !VimWaiting && !menu",
    "bindings": {
      "space f": [
        "workspace::SendKeystrokes",
        // 在页面上打开Terminal,执行 search_and_edit(我定义的脚本),执行结束后关闭
        ": new center terminal enter search_and_edit space && space exit enter"
      ]
    }
  }

这样通过快捷键就能快速打开进行查询,同时可以看到这种方式主要依赖于 Terminal,所以应该能很容易改到其他编辑器中。

另外让人很兴奋的一点,通过这种方式也能将lazygit通过相同的方式进行使用,因为现在 zed 的 git 工具并不完善。

参考帖子:https://github.com/zed-industries/zed/issues/8279

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号