如何让Neovim支持查找无文件后缀的路径并实现文件跳转
Neovim JavaScript项目无后缀文件跳转解决方案
问题根源
Neovim默认的文件查找逻辑仅识别系统通用后缀,未内置前端生态常用的.js/.ts/.jsx/.tsx等后缀规则,也不会主动匹配目录下的index入口文件,因此无后缀导入时无法完成路径识别与跳转。
内置gf跳转配置
gf是Neovim自带的路径跳转命令,通过修改suffixesadd参数添加前端常用后缀匹配规则即可实现无后缀跳转:
- 在
init.lua中添加如下自动命令配置:
vim.api.nvim_create_autocmd("FileType", { pattern = { "javascript", "typescript", "javascriptreact", "typescriptreact", "vue" }, callback = function() -- 匹配单文件后缀 vim.opt_local.suffixesadd:prepend(".js") vim.opt_local.suffixesadd:prepend(".ts") vim.opt_local.suffixesadd:prepend(".jsx") vim.opt_local.suffixesadd:prepend(".tsx") vim.opt_local.suffixesadd:prepend(".vue") -- 匹配目录下的index入口文件 vim.opt_local.suffixesadd:prepend("/index.js") vim.opt_local.suffixesadd:prepend("/index.ts") vim.opt_local.suffixesadd:prepend("/index.jsx") vim.opt_local.suffixesadd:prepend("/index.tsx") end, })
LSP跳转配置
如果使用tsserver作为JS/TS语言服务实现gd(跳转到定义)操作,需要额外修改LSP配置适配无后缀导入:
- 若使用nvim-lspconfig管理LSP,修改tsserver的初始化配置如下:
require('lspconfig').tsserver.setup{ -- 保留原有其他配置不变 settings = { javascript = { preferences = { allowJs = true, }, }, typescript = { preferences = { allowJs = true, }, }, } }
验证方法
- 打开任意JS/TS项目,在导入语句
import utils from './utils'上执行gf命令,即可直接跳转至对应utils.js/utils.ts文件 - 在目录导入语句
import Button from './components/Button'上执行跳转操作,会自动匹配Button/index.js/Button/index.ts等入口文件
内容的提问来源于stack exchange,提问作者Beicker
相关产品推荐
相关产品推荐

