我在 Neovim 中同时使用 telescope 和 nvim-tree。我注意到当我专注于 nvim-tree 缓冲区时,用于搜索文件的望远镜键绑定不起作用。
这甚至是更成问题的,因为当我使用
nvim .
打开 Neovim 中的当前目录时,只显示 nvim-tree 缓冲区(并且它是聚焦的)。因此,要使用望远镜查找任何文件,我首先需要打开一个随机文件。然后我就可以使用我的望远镜绑定了。
如果我正确阅读文档,我可能能够读取 nvim-tree 配置中的键盘映射。但是,理想情况下我只需将键盘映射放在
telescope.lua
文件中以避免重复。
-- packer.lua
return require('packer').startup(function(use)
-- Packer can manage itself
use 'wbthomason/packer.nvim'
use {
'nvim-telescope/telescope.nvim', tag = '0.1.0',
-- or , branch = '0.1.x',
requires = { { 'nvim-lua/plenary.nvim' } }
}
use {
'nvim-tree/nvim-tree.lua',
requires = {
'nvim-tree/nvim-web-devicons', -- optional, for file icon
},
tag = 'nightly' -- optional, updated every week. (see issue #1193)
}
-- after/plugin/telescope.lua
local builtin = require('telescope.builtin')
-- the following three keymaps are the ones that don't work in nvim-tree
vim.keymap.set('n', '<leader>pf', builtin.find_files, {})
vim.keymap.set('n', 'p', builtin.git_files, {})
vim.keymap.set('n', '<leader>ps', function()
builtin.grep_string({ search = vim.fn.input("Grep > ") })
end)
local telescope = require('telescope')
telescope.setup({
defaults = require('telescope.themes').get_dropdown({
layout_config = {
prompt_position = "top",
},
}),
})
-- after/plugin/tree.lua
-- disable netrw at the very start of your init.lua (strongly advised)
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1
-- set termguicolors to enable highlight groups
vim.opt.termguicolors = true
require("nvim-tree").setup({
open_on_setup = true,
view = {
hide_root_folder = true,
},
update_focused_file = {
enable = true,
update_cwd = true,
},
renderer = {
icons = {
show = {
git = false,
},
}
},
})
vim.keymap.set("n", "<C-d>", ":NvimTreeFocus<CR>", { noremap = true, silent = true })
首先我建议你重组。
在所有其他文件所在的根目录中创建一个目录
lua
。对我来说是~/.config/nvim
。
然后将
tree.lua
和telescope.lua
移动到lua
目录中。但我会在每个文件名前面加上 和 _
,这样就不会出现任何冲突。
├── lua
│ ├── _tree.lua
│ ├── _telescope.lua
然后在你的plugins.lua(或者你称之为packer.lua)文件中。我推荐的目录位于您创建的新
lua
目录中。
-- lua/_plugins.lua
use({
"nvim-telescope/telescope.nvim",
requires = {
"nvim-lua/plenary.nvim",
"kyazdani42/nvim-web-devicons"
},
config = function()
require("_telescope")
end,
})
use ({
'nvim-tree/nvim-tree.lua',
requires = {
'nvim-tree/nvim-web-devicons', -- optional, for file icons
},
config = function()
require("_tree")
end,
})
-- init.lua
require("_options") -- other vim options etc...
require("_plugins") -- load in plugins from `lua/_plugins.lua` file
require("_mapping") -- load key mappings
-- lua/_mapping.lua
vim.keymap.set("n", "<leader>e", ":NvimTreeToggle<CR>", { noremap = true, silent = true })
vim.keymap.set("n", "<leader>f", ":Telescope find_files<CR>", { noremap = true, silent = true })
是的,这可能是因为您的
telescope
键映射被 nvim-tree
的键映射覆盖。
nvim_tree_disable_keybindings
并从头开始定义自己的 nvim-tree
以避免冲突。