0

我试图让:A(例如在控制器和规范之间切换)在 vim-rails 中工作。如果我导航到我的 rails 项目,运行vim .,打开控制器文件并运行:A,我会收到错误消息:

E345: Can't find file "app/controllers/widgets_controller.rb" in path 

如果我然后明确设置路径:

:set path=/Users/me/Documents/Code/my-project

然后:A按预期工作。当我用 Vim 打开一个目录时如何设置路径?

4

2 回答 2

1

不完全是在打开目录时:由于您似乎正在处理项目,请尝试使用项目插件。

使用它,您可以在进入或离开项目时执行任意命令。

从插件描述:

您可以使用此插件的基本功能来设置经常访问的文件列表以便于导航。文件列表将显示在 Vim 窗口左侧的窗口中,您可以按或双击列表中的文件名打开文件。这类似于我使用的一些 IDE 的工作方式。我发现这比使用文件浏览器导航目录层次结构更容易使用。它还消除了对缓冲区资源管理器的需要,因为您的文件列表位于 Vim 窗口的左侧。

于 2012-07-31T08:05:45.143 回答
0

这就是我为每个项目创建一个本地 .vimrc 文件所做的工作:

  • 在我的 ~/.vimrc 文件中,我定义了以下内容:
let s:project_root = finddir('.git/..', expand('%:p:h').';')
let s:local_vimrc = join([s:project_root, '.vimrc'], '/')

if filereadable(s:local_vimrc)
    exec "source " . s:local_vimrc
endif
  • 在项目根目录(通常有一个 .git 目录)中,我执行以下操作:
touch /path/to/project/.vimrc
  • 在 .vimrc 文件中,我预先添加了路径变量(注意 ^path)。使用 :set path^= 而不是 :set path+= 会将新目录添加到路径的开头,而不是将其附加到末尾。这使得 find 命令可以更快地搜索您的文件。
let s:project_root = finddir('.git/..', expand('%:p:h').';')
exec 'setlocal path^='.s:project_root

setlocal wildmode=longest,list,full
setlocal wildmenu
setlocal tags=/path/to/project/root/tags

现在 :find 命令应该只显示相对于项目根目录的文件和目录。

于 2021-03-29T16:34:30.463 回答