代码之家  ›  专栏  ›  技术社区  ›  opsb

传统的项目导航方式是什么

  •  4
  • opsb  · 技术社区  · 15 年前

    刚从textmate搬到vim,我很好奇。为了能够有效地导航我的项目,我安装了command-t和确认vim. 这两个看起来都是vim历史上相对较新的项目。当人们在vim中工作时,传统上是如何在项目中移动的,他们是仅仅使用文件资源管理器还是有一些我不知道的老派把戏?

    8 回复  |  直到 15 年前
        1
  •  9
  •   dash-tom-bang    14 年前

    我准备好了 path 正确使用 find 对于大多数事情。有时我只是依靠标签。标签允许制表符完成,但find不允许。

    set path=src/**;c:/work,scripts/**;c:/work
    

    然后

    :find foobar.cpp
    

    会出现的foobar.cpp文件如果它存在于我当前目录的某个src/文件夹下(在点击c:/work之前递归查找它),然后检查脚本层次结构。

    :tag FooBar
    

    直接跳到这个类的定义,因为我使用ctag标记我的C源代码,还编写了一个脚本为内部DSL生成标记。

        2
  •  4
  •   kfl62    15 年前

    NerdTree 我可以用它处理几乎所有的事情。

        3
  •  4
  •   François    15 年前

    我通常使用的是:

    1. 打开新文件: :e :Ex (在当前文件的目录中打开资源管理器)。

    2. 用于在缓冲区列表中的文件之间跳转( :ls ):标记列表插件,或 :b 以及它的制表符完成。注意,对于 :b ,子字符串的制表符完成工作。例如,如果缓冲区列表中有两个文件:module.h和module.h模块.cpp,您可以键入 :b cpp 选项卡将完成模块.cpp. 非常方便!

    对于制表符完成,我还推荐必备的wildmenu( :set wildmenu :set wildmode=full )

        4
  •  4
  •   jkerian    15 年前

        5
  •  3
  •   DrAl    15 年前

    很多人只是在bash命令行中使用普通的文件资源管理器,或者Windows资源管理器,或者其他什么,然后根据需要打开文件。对于导航现有的源代码树,cscope和ctag都非常有用。我找到了 project plugin

        6
  •  3
  •   sleepynate    15 年前

    :Sex 好几年了。这和文件名的制表符完成并没有让它变得那么糟糕。即使在8或9深的目录嵌套中,使用 /mo o 打开它。。。等等等等。

    netrw

        7
  •  3
  •   Neg_EV    14 年前

    我也只使用基本的文件和缓冲区命令来管理我的项目。不过,我发现以下插件也让事情变得更简单:

    • 模糊查找器(使打开文件更愉快)
    • 标记列表(用于在文件中导航)
    • MiniBufExplorer(更容易跟踪缓冲区)

    此外,简单地将:bn和:bp重新映射到更容易的位置,可以让切换缓冲区更加愉快。例如:

    nmap <C-n> :bn<cr>

    nmap <C-p> :bp<cr>

    最后,它没有提到,但它是与项目管理类型的东西,一定要检查内置的编译编辑的东西

    • :帮助快速修复

    我发现很多第一次来vim的人并没有马上注意到。

        8
  •  1
  •   vireulgr    10 年前

    我们有大约1000个C/C++代码、PHP和shell文件的工作比较大的项目。

    要浏览文件,我使用以下选项。

    弗斯特 ,我使用简单的grep包装器,存储在我的 .vimrc

    function MyGrep( pattern, path, case, whole )
        execute "normal! GoSearch text " . a:pattern . " in " . a:path . " and subdirs, case: " .a:case. " whole: ".a:whole
        "E - extended regexp, l - display filenames only, r - search recursively
        let l:keys = "Elr"
        if a:case == 0
            "case-sensitive
            let l:keys = l:keys . "i"
        endif
        if a:whole != 0
            "whole words only
            let l:keys = l:keys . "w"
        endif
        let l:cmd = "r!grep -" . keys . " -e \"" . a:pattern ."\" "
        let l:cmd2 = a:path . " --exclude=*.ncb --exclude=*.o --exclude=*.d --exclude-dir=.svn --exclude-dir=.d --exclude-dir=rc.d --binary-files=without-match"
        echo l:cmd . l:cmd2
        execute l:cmd . l:cmd2
    endfunction
    
    com -nargs=1 GrepHere          call MyGrep( <q-args>, "./", 0, 0)
    com -nargs=1 GrepHereCaseWhole call MyGrep( <q-args>, "./", 1, 1)
    com -nargs=1 GrepHereCase      call MyGrep( <q-args>, "./", 1, 0)
    com -nargs=1 GrepHereWhole     call MyGrep( <q-args>, "./", 0, 1)
    

    vimrc先生 ):

    command -nargs=1 VGCodeHere :vimgrep /<args>/j ./**/*.{c,cpp,h,rc} | copen
    

    我通常在Vim中打开一个新的未命名选项卡,并在那里使用这个搜索命令转储文件 我感兴趣的名字,搜索结果,日志位置和其他信息。

    第二 ,一个cscope实用程序和用于Vim的插件-它是浏览文件的非常方便的方法,

    第三 ,本机Vim技巧,例如

    • :e ./**/filename.cpp
    • :tabe %<.h 打开相应的头文件(您可以随意更改.h扩展名)
    • :Ex
    • Ctrl-O,Ctrl-I在Vim跳转列表中前后移动

    会议 . :mksession sessionname.vis ,并使用会话启动vim: vim -S sessionname.vis