赞
踩
环境:Ubuntu 20.04
宿主机:windows (windows terminal)WSL2
NVIM:v0.10.0-dev
配置Neovim 需要保证流畅的github环境(以便于快速拉取插件),可以使用代理或是配置Github SSH key
本篇博客是学习掘金小册的学习笔记,有兴趣的朋友可以直接点击下文链接了解详情
小册链接:Neovim 配置实战:从0到1打造自己的IDE - nshen - 掘金小册 (juejin.cn)
├── LICENSE
├── README.md
├── init.lua
└── lua
├── autocmds.lua
├── basic.lua
├── colorscheme.lua
├── keybindings.lua
├── lsp
│ ├── cmp.lua
│ ├── config
│ │ ├── bash.lua
│ │ ├── emmet.lua
│ │ ├── html.lua
│ │ ├── json.lua
│ │ ├── lua.lua
│ │ ├── markdown.lua
│ │ ├── pyright.lua
│ │ ├── rust.lua
│ │ └── ts.lua
│ ├── formatter.lua
│ ├── null-ls.lua
│ ├── setup.lua
│ └── ui.lua
├── plugin-config
│ ├── bufferline.lua
│ ├── comment.lua
│ ├── dashboard.lua
│ ├── gitsigns.lua
│ ├── indent-blankline.lua
│ ├── lualine.lua
│ ├── nvim-autopairs.lua
│ ├── nvim-tree.lua
│ ├── nvim-treesitter.lua
│ ├── project.lua
│ ├── surround.lua
│ ├── telescope.lua
│ ├── toggleterm.lua
│ ├── vimspector.lua
│ └── which-key.lua
├── plugins.lua
└── utils
├── fix-yank.lua
├── global.lua
└── im-select.lua
首先 init.lua 是整个配置的入口文件,负责引用所有其他的模块,基本上想要打开或关闭某个插件只要在这里修改一行代码即可。
basic.lua: 基础配置,是对默认配置的一个重置。
colorscheme.lua: 我们安装的主题皮肤配置,在这里切换主题。
keybindings.lua: 快捷键的设置,所有插件的快捷键也都会放在这里。
plugins.lua: 插件安装管理,插件安装或卸载全在这里设置。
lsp 文件夹:
是对 Neovim 内置 LSP 功能的配置,包括常见编程语言与语法提示等。
plugin-config 文件夹: 是对第三方插件的配置,未来每添加一个插件,这里就多一个配置文件。
utils 文件夹: 是对常见问题的修改,包括输入法切换,针对 windows 的特殊配置等。
官网:Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher
下载字体文件FiraCodeNerdFont-Regular.ttf
下载之后双击ttf文件点击安装即可添加到系统字体文件中
配置步骤:
最后点击保存
旧版本卸载:sudo apt-get remove neovim
官网:Installing Neovim · neovim/neovim Wiki (github.com)
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:neovim-ppa/unstable
sudo apt-get update
sudo apt-get install neovim
执行nvim --version
,确保版本必须为 0.7 及以上。
执行nvim ~/.bashrc
alias vim='nvim'
alias vi='nvim'
alias v='nvim'
执行source ~/.bashrc
重新加载配置文件
~/.config/nvim/init.lua
写入如下内容:
-- 基础设置
require('basic')
require
函数在 Lua 中用于加载一个模块,而这些模块通常位于 runtimepath
中的 lua/
目录下,也就是我们的 ~/.config/nvim/lua/
目录。
所以上边的代码,就是加载 ~/.config/nvim/lua/basic.lua
文件(注意:require 里没有 .lua
扩展名)。当然也可以创建 ~/.config/nvim/lua/basic/
目录,在目录下边创建 init.lua
文件也是可以成功加载的。
创建基础配置文件~/.config/nvim/lua/basic.lua
,并添加如下内容:
-- utf8
vim.g.encoding = "UTF-8"
vim.o.fileencoding = 'utf-8'
-- jkhl 移动时光标周围保留8行
vim.o.scrolloff = 8
vim.o.sidescrolloff = 8
-- 使用相对行号
vim.wo.number = true
vim.wo.relativenumber = true
-- 高亮所在行
vim.wo.cursorline = true
-- 显示左侧图标指示列
vim.wo.signcolumn = "yes"
-- 右侧参考线,超过表示代码太长了,考虑换行
vim.wo.colorcolumn = "80"
-- 缩进2个空格等于一个Tab
vim.o.tabstop = 2
vim.bo.tabstop = 2
vim.o.softtabstop = 2
vim.o.shiftround = true
-- >> << 时移动长度
vim.o.shiftwidth = 2
vim.bo.shiftwidth = 2
-- 空格替代tab
vim.o.expandtab = true
vim.bo.expandtab = true
-- 新行对齐当前行
vim.o.autoindent = true
vim.bo.autoindent = true
vim.o.smartindent = true
-- 搜索大小写不敏感,除非包含大写
vim.o.ignorecase = true
vim.o.smartcase = true
-- 搜索不要高亮
vim.o.hlsearch = false
-- 边输入边搜索
vim.o.incsearch = true
-- 命令行高为2,提供足够的显示空间
vim.o.cmdheight = 2
-- 当文件被外部程序修改时,自动加载
vim.o.autoread = true
vim.bo.autoread = true
-- 禁止折行
vim.wo.wrap = false
-- 光标在行首尾时<Left><Right>可以跳到下一行
vim.o.whichwrap = '<,>,[,]'
-- 允许隐藏被修改过的buffer
vim.o.hidden = true
-- 鼠标支持
vim.o.mouse = "a"
-- 禁止创建备份文件
vim.o.backup = false
vim.o.writebackup = false
vim.o.swapfile = false
-- smaller updatetime
vim.o.updatetime = 300
-- 设置 timeoutlen 为等待键盘快捷键连击时间500毫秒,可根据需要设置
vim.o.timeoutlen = 500
-- split window 从下边和右边出现
vim.o.splitbelow = true
vim.o.splitright = true
-- 自动补全不自动选中
vim.g.completeopt = "menu,menuone,noselect,noinsert"
-- 样式
vim.o.background = "dark"
vim.o.termguicolors = true
vim.opt.termguicolors = true
-- 不可见字符的显示,这里只把空格显示为一个点
vim.o.list = true
vim.o.listchars = "space:·"
-- 补全增强
vim.o.wildmenu = true
-- Dont' pass messages to |ins-completin menu|
vim.o.shortmess = vim.o.shortmess .. 'c'
-- 补全最多显示10行
vim.o.pumheight = 10
-- 永远显示 tabline
vim.o.showtabline = 2
-- 使用增强状态栏插件后不再需要 vim 的模式提示
vim.o.showmode = false
创建lua/keybindings.lua
vim.g.mapleader = " "
vim.g.maplocalleader = " "
local map = vim.api.nvim_set_keymap
-- 复用 opt 参数
local opt = {noremap = true, silent = true }
-- 取消 s 默认功能
map("n", "s", "", opt)
-- windows 分屏快捷键
map("n", "sv", ":vsp<CR>", opt)
map("n", "sh", ":sp<CR>", opt)
-- 关闭当前
map("n", "sc", "<C-w>c", opt)
-- 关闭其他
map("n", "so", "<C-w>o", opt)
-- Alt + hjkl 窗口之间跳转
map("n", "<A-h>", "<C-w>h", opt)
map("n", "<A-j>", "<C-w>j", opt)
map("n", "<A-k>", "<C-w>k", opt)
map("n", "<A-l>", "<C-w>l", opt)
-- 左右比例控制
map("n", "<C-Left>", ":vertical resize -2<CR>", opt)
map("n", "<C-Right>", ":vertical resize +2<CR>", opt)
map("n", "s,", ":vertical resize -20<CR>", opt)
map("n", "s.", ":vertical resize +20<CR>", opt)
-- 上下比例
map("n", "sj", ":resize +10<CR>", opt)
map("n", "sk", ":resize -10<CR>", opt)
map("n", "<C-Down>", ":resize +2<CR>", opt)
map("n", "<C-Up>", ":resize -2<CR>", opt)
-- 等比例
map("n", "s=", "<C-w>=", opt)
-- Terminal相关
map("n", "<leader>t", ":sp | terminal<CR>", opt)
map("n", "<leader>vt", ":vsp | terminal<CR>", opt)
map("t", "<Esc>", "<C-\\><C-n>", opt)
map("t", "<A-h>", [[ <C-\><C-N><C-w>h ]], opt)
map("t", "<A-j>", [[ <C-\><C-N><C-w>j ]], opt)
map("t", "<A-k>", [[ <C-\><C-N><C-w>k ]], opt)
map("t", "<A-l>", [[ <C-\><C-N><C-w>l ]], opt)
-- visual模式下缩进代码
map("v", "<", "<gv", opt)
map("v", ">", ">gv", opt)
-- 上下移动选中文本
map("v", "J", ":move '>+1<CR>gv-gv", opt)
map("v", "K", ":move '<-2<CR>gv-gv", opt)
-- 上下滚动浏览
map("n", "<C-j>", "4j", opt)
map("n", "<C-k>", "4k", opt)
-- ctrl u / ctrl + d 只移动9行,默认移动半屏
map("n", "<C-u>", "9k", opt)
map("n", "<C-d>", "9j", opt)
-- 在visual 模式里粘贴不要复制
map("v", "p", '"_dP', opt)
-- 退出
map("n", "q", ":q<CR>", opt)
map("n", "qq", ":q!<CR>", opt)
map("n", "Q", ":qa!<CR>", opt)
-- insert 模式下,跳到行首行尾
map("i", "<C-h>", "<ESC>I", opt)
map("i", "<C-l>", "<ESC>A", opt)
最后在init.lua
中引入快捷键文件
-- 快捷键映射
require("keybindings")
目前在 Neovim 最常见的插件管理器主要有 vim-plug 和 packer 两个。
安装步骤(请参照官网步骤):
执行git clone --depth 1 https://github.com/wbthomason/packer.nvim\ ~/.local/share/nvim/site/pack/packer/start/packer.nvim
安装成功后添加配置文件lua/plugins.lua
,添加如下内容
local packer = require("packer")
packer.startup(
function(use)
-- Packer 可以管理自己本身
use 'wbthomason/packer.nvim'
-- 你的插件列表...
end)
init.lua
中添加如下内容
-- Packer 插件管理
require("plugins")
配置生效后,Neovim 会增加以下命令。
:PackerCompile
: 每次改变插件配置时,必须运行此命令或 PackerSync
, 重新生成编译的加载文件:PackerClean
: 清除所有不用的插件:PackerInstall
: 清除,然后安装缺失的插件:PackerUpdate
: 清除,然后更新并安装插件:PackerSync
: 执行 PackerUpdate
后,再执行 PackerCompile
:PackerLoad
: 立刻加载 opt 插件通过上边的说明,我们观察到 :PackerSync
命令包含了 :PackerUpdate
和:PackerCompile
,而 :PackerUpdate
又包含了 :PackerClean
和 :PackerInstall
流程。
所以通常情况下,无论安装还是更新插件,我只需要下边这一条命令就够::PackerSync
每次修改完 lua/plugins.lua
这个文件后,保存退出,重新打开并调用 :PackerSync
就可以了
lua/plugins.lua
文件,在最后添加
-- 每次保存 plugins.lua 自动安装插件
pcall(
vim.cmd,
[[
augroup packer_user_config
autocmd!
autocmd BufWritePost plugins.lua source <afile> | PackerSync
augroup end
]]
)
注意:保证自己可以ping 通 github 的情况下,但是仍旧执行
:PackerSync
失败,按 R 多次拉取失败插件,如果依旧失败则在错误插件处点击回车,查看问题,具体问题具体分析,我一般多试几次 R 就会成功
init.lua
中添加如下内容:
-- 主题设置 (新增)
require("colorscheme")
lua/colorscheme.lua
添加
local colorscheme = "tokyonight"
local status_ok, _ = pcall(vim.cmd, "colorscheme " .. colorscheme)
if not status_ok then
vim.notify("colorscheme " .. colorscheme .. " 没有找到!")
return
end
lua/plugins.lua
文件
packer.startup({
function(use)
-- Packer 可以升级自己
use("wbthomason/packer.nvim")
--------------------- colorschemes --------------------
-- tokyonight
use("folke/tokyonight.nvim")
-------------------------------------------------------
-- 略...
})
:w
保存 p
退出
其他主体配色链接:neovim-colorscheme · GitHub Topics
lua/plugins.lua
添加插件配置后,修改 lua/colorscheme.lua
内 colorscheme
变量为相应的主题即可
相关插件:
lua/plugins.lua
中添加
packer.startup({
function(use)
-- Packer 可以升级自己
use("wbthomason/packer.nvim")
-------------------------- plugins -------------------------------------------
-- nvim-tree (新增)
use({ "kyazdani42/nvim-tree.lua", requires = "kyazdani42/nvim-web-devicons" })
...略
lua/plugin-config/nvim-tree.lua
local status, nvim_tree = pcall(require, "nvim-tree")
if not status then
vim.notify("没有找到 nvim-tree")
return
end
-- 列表操作快捷键
local list_keys = require('keybindings').nvimTreeList
nvim_tree.setup({
-- 不显示 git 状态图标
git = {
enable = false,
},
-- project plugin 需要这样设置
update_cwd = true,
update_focused_file = {
enable = true,
update_cwd = true,
},
-- 隐藏 .文件 和 node_modules 文件夹
filters = {
dotfiles = true,
custom = { 'node_modules' },
},
view = {
-- 宽度
width = 40,
-- 也可以 'right'
side = 'left',
-- 隐藏根目录
hide_root_folder = false,
-- 自定义列表中快捷键
mappings = {
custom_only = false,
list = list_keys,
},
-- 不显示行数
number = false,
relativenumber = false,
-- 显示图标
signcolumn = 'yes',
},
actions = {
open_file = {
-- 首次打开大小适配
resize_window = true,
-- 打开文件时关闭
quit_on_open = true,
},
},
-- wsl install -g wsl-open
-- https://github.com/4U6U57/wsl-open/
system_open = {
cmd = 'wsl-open', -- mac 直接设置为 open
},
})
-- 自动关闭
vim.cmd([[
autocmd BufEnter * ++nested if winnr('$') == 1 && bufname() == 'NvimTree_' . tabpagenr() | quit | endif
]])
上边代码就是 nvim-tree 的配置,可以根据注释进行修改。这里简单解释一下,值得注意的是 system_open
项,如果想要在 WSL
中用 Windows 系统默认设置打开文件,需要使用 Node.js
全局安装一个 wsl-open
包,使用命令 npm install -g wsl-open
,如果不需要这个功能,也可以不用安装。 如果不是 Windows 系统也就不需要安装。
nvim-tree 初始化支持很多参数,如果想知道还有哪些其他的参数,可以运行 :h nvim-tree.setup
调出帮助文档查看。
lua/keybindings.lua
添加
-- 插件快捷键
local pluginKeys = {}
-- nvim-tree
-- alt + m 键打开关闭tree
map("n", "<A-m>", ":NvimTreeToggle<CR>", opt)
-- 列表快捷键
pluginKeys.nvimTreeList = {
-- 打开文件或文件夹
{ key = {"<CR>", "o", "<2-LeftMouse>"}, action = "edit" },
-- 分屏打开文件
{ key = "v", action = "vsplit" },
{ key = "h", action = "split" },
-- 显示隐藏文件
{ key = "i", action = "toggle_custom" }, -- 对应 filters 中的 custom (node_modules)
{ key = ".", action = "toggle_dotfiles" }, -- Hide (dotfiles)
-- 文件操作
{ key = "<F5>", action = "refresh" },
{ key = "a", action = "create" },
{ key = "d", action = "remove" },
{ key = "r", action = "rename" },
{ key = "x", action = "cut" },
{ key = "c", action = "copy" },
{ key = "p", action = "paste" },
{ key = "s", action = "system_open" },
}
return pluginKeys
init.lua
添加
-- 插件配置
require("plugin-config.nvim-tree")
但是出现问题view.mappings.list has been deprecated in favour of on_attach.please run
,应该是某些插件更新:相关链接:Migrating To on_attach · nvim-tree/nvim-tree.lua Wiki (github.com)
表明view.mappings
and remove_keymaps
已经启用需要移除
解决方案:
注释掉view.mappings
执行:NvimTreeGenerateOnAttach
,复制nvim-tree-on-attach.lua
中的内容粘贴到 nvim-tree.lua
中(需要添加在setup之前)
添加
require("nvim-tree").setup({
...
on_attach = on_attach,
})
问题解决~
相关插件:
lua/plugins.lua
packer.startup({
function(use)
-- Packer 可以升级自己
use("wbthomason/packer.nvim")
-------------------------- plugins -------------------------------------------
-- nvim-tree
use({ "kyazdani42/nvim-tree.lua", requires = "kyazdani42/nvim-web-devicons" })
-- bufferline (新增)
use({ "akinsho/bufferline.nvim", requires = { "kyazdani42/nvim-web-devicons", "moll/vim-bbye" }})
...略
:w
保存,自动安装,安装完整按 q
退出
出现**GnuTLS recv error (-110)**问题
解决方案:
# 依次执行
apt-get install gnutls-bin
# 关闭 SSL 验证
git config --global http.sslVerify false
# 第二个命令是用于设置缓冲区大小
git config --global http.postBuffer 1048576000
# 或是
sudo update-alternatives --set fakeroot /usr/bin/fakeroot-tcp
这里我增加了一个 moll/vim-bbye 依赖,因为这个插件安装后会增加一个 :Bdelete
命令,相比内置的 :bdelete
, 它删除 buffer 的同时,并不会搞乱布局 。 待会儿我们会配置 Bdelete
为关闭 Tab 的命令。
新建lua/plugin-config/bufferline.lua
文件并添加内容
local status, bufferline = pcall(require, "bufferline")
if not status then
vim.notify("没有找到 bufferline")
return
end
-- bufferline 配置
-- https://github.com/akinsho/bufferline.nvim#configuration
bufferline.setup({
options = {
-- 关闭 Tab 的命令,这里使用 moll/vim-bbye 的 :Bdelete 命令
close_command = "Bdelete! %d",
right_mouse_command = "Bdelete! %d",
-- 侧边栏配置
-- 左侧让出 nvim-tree 的位置,显示文字 File Explorer
offsets = {
{
filetype = "NvimTree",
text = "File Explorer",
highlight = "Directory",
text_align = "left",
},
},
-- 使用 nvim 内置 LSP 后续课程会配置
diagnostics = "nvim_lsp",
-- 可选,显示 LSP 报错图标
---@diagnostic disable-next-line: unused-local
diagnostics_indicator = function(count, level, diagnostics_dict, context)
local s = " "
for e, n in pairs(diagnostics_dict) do
local sym = e == "error" and " " or (e == "warning" and " " or "")
s = s .. n .. sym
end
return s
end,
},
})
lua/keybindings.lua
-- bufferline
-- 左右Tab切换
map("n", "<C-h>", ":BufferLineCyclePrev<CR>", opt)
map("n", "<C-l>", ":BufferLineCycleNext<CR>", opt)
-- 关闭
--"moll/vim-bbye"
map("n", "<C-w>", ":Bdelete!<CR>", opt)
map("n", "<leader>bl", ":BufferLineCloseRight<CR>", opt)
map("n", "<leader>bh", ":BufferLineCloseLeft<CR>", opt)
map("n", "<leader>bc", ":BufferLinePickClose<CR>", opt)
init.lua
添加
require("plugin-config.bufferline")
lua/plugins.lua
-- lualine (新增)
use({ "nvim-lualine/lualine.nvim", requires = { "kyazdani42/nvim-web-devicons" } })
use("arkav/lualine-lsp-progress")
新建lua/plugin-config/lualine.lua
-- 如果找不到lualine 组件,就不继续执行
local status, lualine = pcall(require, "lualine")
if not status then
vim.notify("没有找到 lualine")
return
end
lualine.setup({
options = {
theme = "tokyonight",
component_separators = { left = "|", right = "|" },
-- https://github.com/ryanoasis/powerline-extra-symbols
section_separators = { left = " ", right = "" },
},
extensions = { "nvim-tree", "toggleterm" },
sections = {
lualine_c = {
"filename",
{
"lsp_progress",
spinner_symbols = { " ", " ", " ", " ", " ", " " },
},
},
lualine_x = {
"filesize",
{
"fileformat",
-- symbols = {
-- unix = '', -- e712
-- dos = '', -- e70f
-- mac = '', -- e711
-- },
symbols = {
unix = "LF",
dos = "CRLF",
mac = "CR",
},
},
"encoding",
"filetype",
},
},
})
init.lua
添加
require("plugin-config.lualine")
相关插件:nvim-telescope/telescope.nvim: Find, Filter, Preview, Pick. All lua, all the time. (github.com)
lua/plugins.lua
-- telescope (新增)
use { 'nvim-telescope/telescope.nvim', requires = { "nvim-lua/plenary.nvim" } }
:checkhealth telescope
检查依赖情况,这里通常会提示 ripgrep
不存在,因为 telescope
依赖以下两个项目。
解决方案:
# 20.04 安装 repgrep
sudo apt install ripgrep
# 18.04 安装 repgrep
sudo add-apt-repository ppa:x4121/ripgrep
sudo apt-get update
sudo apt install ripgrep
# 安装 fd
npm install -g fd-find
配置源,需要哪个版本可以将16替换为相应版本
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
安装
sudo apt-get update -y
sudo apt install -y nodejs
如果不想要自己配置指定版本源的情况下,可以直接执行
sudo apt update -y
sudo apt install nodejs npm
git clone nvm仓库时遇到如下错误
GnuTLS recv error (-110): The TLS connection 。。。
我是因为Ipv6的问题,可以git clone -4 指定使用Ipv4连接
但是执行ap-get update
遇到问题:
Err:12 http://ppa.launchpad.net/x4121/ripgrep/ubuntu focal Release
404 Not Found [IP: 185.125.190.52 80]
Reading package lists…
E: The repository ‘http://ppa.launchpad.net/x4121/ripgrep/ubuntu focal Release’ does not have a Release file.
这是因为之前我执行过sudo add-apt-repository ppa:x4121/ripgrep
所以可以直接手动删除
解决方案(自动移除再更新):
sudo apt-add-repository -r ppa:x4121/ripgrep
# 指的是先移除armagetronad-dev这个ppa包,再添加这个ppa包
sudo apt update -q
手动删除
cd /etc/apt/sources.list.d
rm x4121-ubuntu-ripgrep-focal.list
# .save 文件是备份,不需要管
后面我在使用更新插件包时爆出:Could not resolve host github.com
解决1(失败):
# 从全局配置文件中删除代理设置
git config --global --unset http.proxy
git config --global --unset https.proxy
解决2(成功):
我直接ping了下网络,发现不只是github连不上,而是整个WSL网络都不能使用,在宿主机中我查看WSL网络配置,发现未修复之前两个红框中的ip地址是没有的
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ey8Oa3Ol-1683939661824)(null)]
直接在宿主机上使用管理员权限执行netsh winsock reset
重启网络即可(注意:不需要重启)
下面解决方案没有试过,仅作为备用方案
解决3:
# 重启 WSL 指令
$ wsl --shutdown
# 之后就重新启动进入即可
$ wsl
当我们在命令行中输入 nvim
不带任何路径并敲击回车的时候,就会打开这个界面,通常我们会在这个界面中配置最常用功能,比如打开最近编辑过的文件,快速打开项目文件夹,快速修改快捷键等。
使用官方配置的图像: Ascii Header Text · nvimdev/dashboard-nvim Wiki (github.com)
使用字体生成器:[Text to ASCII Art Generator (TAAG) (patorjk.com)](http://patorjk.com/software/taag/#p=display&f=ANSI Shadow&t=rettmp)
同样 plugins.lua 中添加:
-- dashboard-nvim (新增)
use("glepnir/dashboard-nvim")
创建 lua/plugin-config/dashboard.lua ,并添加:
local status, db = pcall(require, "dashboard")
if not status then
vim.notify("没有找到 dashboard")
return
end
db.setup({
theme = 'doom',
config = {
header = {
[[ ]],
[[ ]],
[[██████╗ ███████╗████████╗████████╗███╗ ███╗██████╗ ]],
[[██╔══██╗██╔════╝╚══██╔══╝╚══██╔══╝████╗ ████║██╔══██╗]],
[[██████╔╝█████╗ ██║ ██║ ██╔████╔██║██████╔╝]],
[[██╔══██╗██╔══╝ ██║ ██║ ██║╚██╔╝██║██╔═══╝ ]],
[[██║ ██║███████╗ ██║ ██║ ██║ ╚═╝ ██║██║ ]],
[[╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ]],
[[ ]],
[[ [ version : 1.0.0 ] ]],
[[ ]],
}, --your header
center = {
{
icon = " ",
desc = "Projects ",
action = "Telescope projects",
},
{
icon = " ",
desc = "Recently files ",
action = "Telescope oldfiles",
},
{
icon = " ",
desc = "Edit keybindings ",
action = "edit ~/.config/nvim/lua/keybindings.lua",
},
{
icon = " ",
desc = "Edit Projects ",
action = "edit ~/.local/share/nvim/project_nvim/project_history",
},
},
footer = {} --your footer
}
})
但是里面的 Telescope projects
并不是 telescope 内置的命令。需要安装ahmedkhalf/project.nvim
插件,执行如下步骤
添加插件
-- project
use("ahmedkhalf/project.nvim")
确保lua/plugin-config/nvim-tree.lua
文件中有如下代码:
nvim_tree.setup({
--- 上略
-- project plugin 需要这样设置
update_cwd = true,
update_focused_file = {
enable = true,
update_cwd = true,
},
-- 下略
}
创建lua/plugin-config/project.lua
local status, project = pcall(require, "project_nvim")
if not status then
vim.notify("没有找到 project_nvim")
return
end
-- nvim-tree 支持
vim.g.nvim_tree_respect_buf_cwd = 1
project.setup({
detection_methods = { "pattern" },
patterns = { ".git", "_darcs", ".hg", ".bzr", ".svn", "Makefile", "package.json", ".sln" },
})
local status, telescope = pcall(require, "telescope")
if not status then
vim.notify("没有找到 telescope")
return
end
pcall(telescope.load_extension, "projects")
init.lua
require("plugin-config.dashboard")
require("plugin-config.project")
project_history
列表执行:lua print(require("project_nvim.utils.path").historyfile)
我得到了~/.local/share/nvim/project_nvim/project_history
这个文件,直接编辑即可
添加
/root/.config/nvim
以后的话可以方便编写nvim项目配置
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。