我喜欢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/
。
答案 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
缓冲区中启动NERDTree
,CommandT
将使用新的搜索价值。
问题是,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(可配置)。这可能会解决这个用例。