Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在VIM中将文件夹添加到项目(如Sublime文本)?_Vim_Sublimetext3_Sublimetext_Vim Plugin_Ctrlp - Fatal编程技术网

如何在VIM中将文件夹添加到项目(如Sublime文本)?

如何在VIM中将文件夹添加到项目(如Sublime文本)?,vim,sublimetext3,sublimetext,vim-plugin,ctrlp,Vim,Sublimetext3,Sublimetext,Vim Plugin,Ctrlp,我刚从Sublime文本切换到GVIM(在Windows上)。我仍然在争论我是应该继续ST还是完全转向VIM。我迫切需要(或错过)的一个功能是 Ctrl+P转到文件夹列表中所需的任何文件 Ctrl+Shift+f查找(并替换)这些文件夹列表中的任何文本 我使用Sublime Text 3中的将文件夹添加到项目功能添加了大量文件夹。这真的很有帮助。现在,我知道VIM的CtrlPplugin可以做类似的事情,但我不知道如何让它搜索我想要的文件夹,而不是当前文件的根目录 我在vimrc文件中设置了一点

我刚从Sublime文本切换到GVIM(在Windows上)。我仍然在争论我是应该继续ST还是完全转向VIM。我迫切需要(或错过)的一个功能是

  • Ctrl+P
    转到文件夹列表中所需的任何文件
  • Ctrl+Shift+f
    查找(并替换)这些文件夹列表中的任何文本 我使用Sublime Text 3中的
    将文件夹添加到项目
    功能添加了大量文件夹。这真的很有帮助。现在,我知道VIM的
    CtrlP
    plugin可以做类似的事情,但我不知道如何让它搜索我想要的文件夹,而不是当前文件的根目录

    我在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
    
    “你真正关心的人。。。
    “将root设置为CWD。另一个好的选择是VCS模式的“r”。
    “您应该在项目树的根目录中启动vim
    设g:ctrlp_工作路径_模式=0
    “你可以切换目录
    设g:ctrlp_extensions=['dir']
    “避免大型/不重要的项目区域
    设置wildignore+=*/node\u modules/*,*/build/*,*/components/*,*/\u public/*,*/tmp/*,*/vendor/*
    “缓存--习惯于在树更改/添加时按F5键
    让g:ctrlp_使用_缓存=1
    设g:ctrlp\u清除\u退出时的\u缓存=0
    “有些不言自明
    设g:ctrlp\u show\u hidden=1
    设g:ctrlp_开关_缓冲器=2
    设g:ctrlp_最大深度=6
    设g:ctrlp_最大高度=50
    “打开*h*orizontally和*j*ump以获得第一场胜利。
    让g:ctrlp_open_多个文件='hj'
    “用于切换
    “设g:ctrlp_by_filename=1
    
    要进一步控制在工作树之外查找文件的位置,请参阅
    g:ctrlp\u user\u命令
    。在使用
    dir
    时,会出现错误。您可以使用它,但需要使用所需的额外路径

    您可能还想添加一个很好的CtrlP补充。这让人想起圣彼得堡的侧边栏。使用其
    获取帮助。它有一个菜单,可以让你快速添加文件和目录,就像你想从“向项目添加文件夹”中解脱出来一样

    有关搜索和替换,请参阅。我把它映射到
    g
    (意思是“grep”)


    上面提到的是我的一些最爱,但是您应该探索Vim插件的世界,以决定哪些其他插件值得采用。我建议你在新的时候一次尝试一个,而不是一个有时不透明的“分发”。使插件管理更容易的工具是/(选择一个)。

    AFAIK,ctrlp plugin只在一个目录(及其子目录)内搜索。使用Unix功能:创建一个目录,其中包含指向您感兴趣的项目外目录的链接。这样,与项目外目录的关联不仅是编辑器知道的,而且是实际项目中记录的

    搜索和替换是一件比较棘手的事情。您希望处理所有感兴趣的文件,然后对所有文件重复replace命令。例如,如果要在此处和下方的所有C文件上搜索
    foo
    并替换为
    bar

    :args **/*.c
    :argdo %s/foo/bar/g
    
  • Ctrl+p
    转到文件夹列表中所需的任何文件。

    :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
    
    nnoremap:find*”在每个目录中搜索
    “在‘路径’中”
    nnoremap:find=expand('%:p:h')。/***''从目录开始
    “当前文件的
    
  • Ctrl+Shift+f
    查找(并替换)这些文件夹列表中的任何文本。

    阿玛丹上面说的


  • 尤里卡

    在不知疲倦地搜寻了几天(和不眠之夜)之后,我找到了我的答案(请继续阅读)

    首先是一些愚蠢的哲学

    我是如此渴望不放弃维姆。但这个问题正从内部困扰着我,并且扰乱了我的工作流程。我希望vim在windows中搜索许多项目文件夹。由于某种原因,Ctrl+p从未真正起作用。我有一些放弃Vim的不太好的想法。然后我发现了这个

    我的答案

    这和我预期的有点不同。但答案是一切(通过工具)。它允许从任何地方搜索,并在几秒钟内给出结果。它是迄今为止Windows中最好的文件名搜索工具。它支持Regex。(虽然它不是文本搜索工具)。它有一个名为

    es.exe

    使用Vim的
    FindEverything.Vim
    plugin(),我不仅可以在我的项目文件夹中搜索,而且几乎可以在任何地方搜索。它在vim缓冲区中返回结果


    谢谢你们的帮助。我知道不是每个人都同意这个解决方案。但在Windows上,这是迄今为止最好的解决方案,我发现!希望这对其他人来说是有用的,为什么他们在同一条船上

    CtrlP的所有文件都不能满足OP对项目外目录的需求,Ag无法替代。谢谢Micah。正如Amadan提到的,我通读了CtrlP文档,但我找不到一种方法将其用于多个目录。有谁能给我举一个例子,告诉我如何使用
    let g:ctrlp\u user\u command='dir%s/-n/b/s/a-d'
    来运行具有多个目录的Windows。我没有一台Windows机器可以试验,但是(