如何在 VIM 中将文件夹添加到项目(如 Sublime Text)?
How to get add folder to Projects (like Sublime Text) in VIM?
我刚从 Sublime Text 切换到 GVIM(在 Windows 上)。我还在纠结是继续ST还是完全转到VIM。我迫切需要(或错过)的一项功能是
Ctrl+P
转到文件夹列表中我想要的任何文件。
Ctrl+Shift+f
查找(并替换)这些文件夹列表中的任何文本。
我在 Sublime Text 3 中使用 Add Folders to Project
功能添加了一些文件夹。这真的很有帮助。现在,我知道 VIM 的 CtrlP
插件可以做类似的事情,但我不知道如何让它搜索我想要的文件夹,而不是当前文件的根目录。
我试了一下在我的 vimrc 文件中设置路径,但没有成功。
你能帮忙吗?如果这是一个重复的问题,请原谅。
谢谢。
好转!所以你发现了 CtrlP。它内置了大量文档。使用 :h ctrlp
查看解释各种选项的完整 vimdocs。它将解释工作目录的一些重要设置,这对于良好的使用体验非常重要。以我使用的一些设置为例:
" The one you really care about...
" Set root to CWD. Another good option is 'r' for VCS mode.
" You should start vim in the root of your project tree
let g:ctrlp_working_path_mode = 0
" You _can_ switch dirs
let g:ctrlp_extensions = ['dir']
" Avoid big/unimportant project areas
set wildignore+=*/node_modules/*,*/build/*,*/components/*,*/_public/*,*/tmp/*,*/vendor/*
" Cache -- get used to pressing F5 on tree changes/additions
let g:ctrlp_use_caching = 1
let g:ctrlp_clear_cache_on_exit = 0
" Somewhat self-explanatory
let g:ctrlp_show_hidden = 1
let g:ctrlp_switch_buffer = 2
let g:ctrlp_max_depth = 6
let g:ctrlp_max_height = 50
" Open *h*orizontally and *j*ump to first win.
let g:ctrlp_open_multiple_files = 'hj'
" Use <C-d> to toggle
"let g:ctrlp_by_filename = 1
要进一步控制在工作树之外查找文件的位置,请参阅 g:ctrlp_user_command
。有 a Windows example 使用 dir
。你会使用它,但有你想要的额外路径。
您可能还想添加 NerdTree,这是对 CtrlP 的一个很好的补充。这让人想起 ST 的侧边栏。使用其 ?
获得帮助。它有一个菜单,可让您快速添加文件和目录,也许就像您想要“将文件夹添加到项目”一样。
对于搜索和替换,请查看 ag.vim。我将它映射到 <leader>g
(意思是“grep”)。
提到的是我最喜欢的一些插件,但您应该探索 Vim 插件的世界,以决定哪些其他插件值得采用。我建议您在新手时一次尝试一个,而不是有时不透明的“分发”。使插件管理更容易的工具是 Vundle / Pathogen(选择一个)。
据我所知,ctrlp 插件仅在一个目录(及其后代)中搜索。使用 Unix 特性:创建一个包含您感兴趣的项目外目录链接的目录。这样,与项目外目录的关联不仅仅是编辑器知道的,而是实际项目中记录的内容.
搜索和替换有点棘手。您想要处理您感兴趣的所有文件,然后对所有这些文件重复替换命令。例如,如果您想搜索 foo
并在此处及下方的所有 C 文件上替换为 bar
,
:args **/*.c
:argdo %s/foo/bar/g
Ctrl+P
转到文件夹列表中我想要的任何文件。
:find
命令可用于 "find" 'path'
选项中指定目录中的文件:
set path+=/some/arbitrary/path
set path+=/another/one
:find *foo
我发现这两个映射非常方便:
nnoremap <key> :find * " search in every directory
" in 'path'
nnoremap <key> :find <C-R>=expand('%:p:h').'/**/*'<CR> " start from the directory
" of the current file
Ctrl+Shift+f
查找(并替换)这些文件夹列表中的任何文本。
amadan 上面说的。
尤里卡...!!!!!
在不知疲倦地搜索了好几天(和不眠之夜)之后,我找到了答案(请继续阅读)。
先来点傻瓜式的
我非常不想放弃 Vim。但这个问题只是从内部吞噬了我,并且扰乱了我的工作流程。我希望 vim 搜索 windows 中的许多项目文件夹。出于某种原因,Ctrl+p 从未真正起作用。我有一些不太好的放弃 Vim 的想法。然后我发现了这个!
我的回答
这与我的预期有点不同。但答案是一切(通过 VoidTools)。它允许从任何地方搜索并在几分之一秒内给出结果。它是迄今为止 Windows 中最好的文件名搜索工具。它支持正则表达式。 (尽管它不是文本搜索工具)。它有一个名为
的命令行界面
es.exe
使用 Vim 的 FindEverything.vim
插件 (FindEverything),我不仅可以搜索我的项目文件夹,还可以搜索几乎任何地方。它 returns vim 缓冲区中的结果。
感谢大家的帮助。我知道不是每个人都同意这个解决方案。但是在 Windows 上,这是迄今为止我发现的最佳解决方案!希望它对其他人有用,为什么在同一条船上!!!
我刚从 Sublime Text 切换到 GVIM(在 Windows 上)。我还在纠结是继续ST还是完全转到VIM。我迫切需要(或错过)的一项功能是
Ctrl+P
转到文件夹列表中我想要的任何文件。Ctrl+Shift+f
查找(并替换)这些文件夹列表中的任何文本。
我在 Sublime Text 3 中使用 Add Folders to Project
功能添加了一些文件夹。这真的很有帮助。现在,我知道 VIM 的 CtrlP
插件可以做类似的事情,但我不知道如何让它搜索我想要的文件夹,而不是当前文件的根目录。
我试了一下在我的 vimrc 文件中设置路径,但没有成功。
你能帮忙吗?如果这是一个重复的问题,请原谅。
谢谢。
好转!所以你发现了 CtrlP。它内置了大量文档。使用 :h ctrlp
查看解释各种选项的完整 vimdocs。它将解释工作目录的一些重要设置,这对于良好的使用体验非常重要。以我使用的一些设置为例:
" The one you really care about...
" Set root to CWD. Another good option is 'r' for VCS mode.
" You should start vim in the root of your project tree
let g:ctrlp_working_path_mode = 0
" You _can_ switch dirs
let g:ctrlp_extensions = ['dir']
" Avoid big/unimportant project areas
set wildignore+=*/node_modules/*,*/build/*,*/components/*,*/_public/*,*/tmp/*,*/vendor/*
" Cache -- get used to pressing F5 on tree changes/additions
let g:ctrlp_use_caching = 1
let g:ctrlp_clear_cache_on_exit = 0
" Somewhat self-explanatory
let g:ctrlp_show_hidden = 1
let g:ctrlp_switch_buffer = 2
let g:ctrlp_max_depth = 6
let g:ctrlp_max_height = 50
" Open *h*orizontally and *j*ump to first win.
let g:ctrlp_open_multiple_files = 'hj'
" Use <C-d> to toggle
"let g:ctrlp_by_filename = 1
要进一步控制在工作树之外查找文件的位置,请参阅 g:ctrlp_user_command
。有 a Windows example 使用 dir
。你会使用它,但有你想要的额外路径。
您可能还想添加 NerdTree,这是对 CtrlP 的一个很好的补充。这让人想起 ST 的侧边栏。使用其 ?
获得帮助。它有一个菜单,可让您快速添加文件和目录,也许就像您想要“将文件夹添加到项目”一样。
对于搜索和替换,请查看 ag.vim。我将它映射到 <leader>g
(意思是“grep”)。
提到的是我最喜欢的一些插件,但您应该探索 Vim 插件的世界,以决定哪些其他插件值得采用。我建议您在新手时一次尝试一个,而不是有时不透明的“分发”。使插件管理更容易的工具是 Vundle / Pathogen(选择一个)。
据我所知,ctrlp 插件仅在一个目录(及其后代)中搜索。使用 Unix 特性:创建一个包含您感兴趣的项目外目录链接的目录。这样,与项目外目录的关联不仅仅是编辑器知道的,而是实际项目中记录的内容.
搜索和替换有点棘手。您想要处理您感兴趣的所有文件,然后对所有这些文件重复替换命令。例如,如果您想搜索 foo
并在此处及下方的所有 C 文件上替换为 bar
,
:args **/*.c
:argdo %s/foo/bar/g
Ctrl+P
转到文件夹列表中我想要的任何文件。:find
命令可用于 "find"'path'
选项中指定目录中的文件:set path+=/some/arbitrary/path set path+=/another/one :find *foo
我发现这两个映射非常方便:
nnoremap <key> :find * " search in every directory " in 'path' nnoremap <key> :find <C-R>=expand('%:p:h').'/**/*'<CR> " start from the directory " of the current file
Ctrl+Shift+f
查找(并替换)这些文件夹列表中的任何文本。amadan 上面说的。
尤里卡...!!!!!
在不知疲倦地搜索了好几天(和不眠之夜)之后,我找到了答案(请继续阅读)。
先来点傻瓜式的
我非常不想放弃 Vim。但这个问题只是从内部吞噬了我,并且扰乱了我的工作流程。我希望 vim 搜索 windows 中的许多项目文件夹。出于某种原因,Ctrl+p 从未真正起作用。我有一些不太好的放弃 Vim 的想法。然后我发现了这个!
我的回答
这与我的预期有点不同。但答案是一切(通过 VoidTools)。它允许从任何地方搜索并在几分之一秒内给出结果。它是迄今为止 Windows 中最好的文件名搜索工具。它支持正则表达式。 (尽管它不是文本搜索工具)。它有一个名为
的命令行界面es.exe
使用 Vim 的 FindEverything.vim
插件 (FindEverything),我不仅可以搜索我的项目文件夹,还可以搜索几乎任何地方。它 returns vim 缓冲区中的结果。
感谢大家的帮助。我知道不是每个人都同意这个解决方案。但是在 Windows 上,这是迄今为止我发现的最佳解决方案!希望它对其他人有用,为什么在同一条船上!!!