如何从目录中打开Vim时自动“设置路径”?

时间:2012-07-31 03:57:36

标签: ruby-on-rails macos vim macvim

我正试图在vim-rails中使用:A(例如在控制器和规格之间切换)。如果我导航到我的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打开目录时,如何设置最初的路径?

2 个答案:

答案 0 :(得分:1)

不完全是在打开目录时:由于您似乎正在使用项目,请尝试project plugin

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

来自插件说明:

  

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

答案 1 :(得分: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 命令应该只显示相对于项目根目录的文件和目录。