Command-T如何使用当前文件自己的NERDTree书签作为搜索目录?

时间:2013-09-10 03:41:15

标签: vim nerdtree

我喜欢NERDTree和Command-T。 所以我想使用Command-T搜索文件进行当前项目。 (我使用NERDTree书签作为项目)。 因为Command-T使用:CommandT <path>来主动搜索,而默认<path>是pwd。我想将<path>更改为当前文件自己的NERDTree书签路径。

像这样:

我有一个名为TestProject的书签,路径为~/testproject

现在,我写的文件是~/testproject/class/test.php,如果使用:CommandT,我的搜索目录是~/testproject/class/。但我想要搜索全局项目(~/test/project),我不想输入:CommandT ~/testproject/

2 个答案:

答案 0 :(得分:0)

完全忽略NERDTree,您可以将CommandT映射配置为默认包含项目根目录。为了使其灵活,您可以从环境变量动态加载每个vim会话的项目根目录:

"If the $H environment variable is available, assume it contains CommandT's root dir
if !empty($H)
  nnoremap <silent> <Leader>t :CommandT $H<CR>
else
  nnoremap <silent> <Leader>t :CommandT<CR>
endif

或者更简单地说,您可以使用$ PWD,它应该反映您在vim会话中开始的目录。

关于您提出的解决方案,您可以在NERDTree中确实cd,方法是将光标放在您想要cd到的节点上,然后按cd(参见:h NERDTree-cd)。这会更改:pwd缓冲区:!pwd / NERDTree的输出,如果您在CommandT缓冲区中启动NERDTreeCommandT将使用新的搜索价值。 问题是,CommandT将尝试在最近访问的编辑缓冲区中打开您选择的文件,该缓冲区不会受cd缓冲区中NERDTree的影响。现在,由于CommandT版本1.3.1尝试使用相对路径(相对于:pwd中的NERDTree buffer)打开选择,因此很可能无效。

以下是CommandT v1.3.1的git-format补丁以使其正常工作:

From cf4569af2f5d06673d96ac0f798c22612b5579f5 Mon Sep 17 00:00:00 2001
From: Petr Skocik <pskocik@gmail.com>
Date: Fri, 1 Aug 2014 02:10:35 +0200
Subject: [PATCH] open selection by its absolute rather than relative path

---
 ruby/command-t/controller.rb | 1 +
 1 file changed, 1 insertion(+)

diff --git a/ruby/command-t/controller.rb b/ruby/command-t/controller.rb
index 6026aca..4774345 100644
--- a/ruby/command-t/controller.rb
+++ b/ruby/command-t/controller.rb
@@ -240,6 +240,7 @@ module CommandT
       selection = File.expand_path selection, @path
       selection = relative_path_under_working_directory selection
       selection = sanitize_path_string selection
+      selection = VIM::pwd + '/' + selection
       ensure_appropriate_window_selection
       ::VIM::command "silent #{command} #{selection}"
     end
-- 
1.9.1

答案 1 :(得分:0)

Command-T的“下一个”分支(尚未发布的版本),特别是此提交:

https://github.com/wincent/Command-T/commit/ebcda3ce2e90211345eab89fd972e22b75883440

添加选项,将搜索锚定到当前编辑文件中最近的SCM目录,或者从Vim的PWD(可配置)。这可能会解决这个用例。