我知道可以做到这一点的插件几乎肯定是存在的。或者也许我可以使用像LSP这样的东西。但我想使我的简单命令,这将进入文件的组件/功能/类的定义在JS。这并不困难,因为在JS所有的导入是显式的,所以我写了这个命令在我的。vimrcautocmd FileType javascript nnoremap gd gd/from<CR>:noh<CR>5lgf
gd =转到定义(第一次出现的符号)
/from =在此字符串中查找(因为字符串将类似于“import smth from 'filename'”)
:noh =删除不必要的高亮显示
5l =从单词跳到文件名
gf = go文件
这工作得很好,它去所需的文件,但当我回到我的旧文件,我的光标显然是与导入行,但我想留在行例如(我运行gd命令),但不是在导入ComponentName从'./path/ComponentName'(例如).我听说过:keepjump,但我不明白我怎么能用它在那里.我该怎么做?
1条答案
按热度按时间8hhllhi21#
假设您没有重命名导入
使用Vim的默认设置,例如
$ vim --clean main.js
,您应该能够直接在缓冲区中的任何ComponentName
上使用gf
,只需正确设置:help 'path'
选项。在下面的例子中,我需要做的只是
:set path+=./x/y/z
(非常显式),但我可以简单地做:set path+=x/**
(更隐式):当然,手动添加每个组件目录是不可能的,但前端项目往往具有可预测的结构,因此编写自己的
set path+=components/**,src/**,<other directories>
并不太困难。假设您已重命名导入
你的Map不能满足它,因为它太脆弱了。相反,我们可以采取一种不同的方法:
这就给出了
---编辑---
根据您的意见,这里有一个不受引用限制的变体,它使用一个自定义函数来使增加的复杂性变得易于管理:
--结束--
您可能会对this article感兴趣。