【问题标题】:What's the best (Linux-compatible) buffer/session manager for Vim?Vim 最好的(Linux 兼容的)缓冲区/会话管理器是什么?
【发布时间】:2011-03-20 15:36:22
【问题描述】:

vim 有没有好的项目/会话管理器? session(或项目)是一个命名的文件列表,例如“bitonic_sort”可以识别文件“~/A/bitonic_sort.sk”、“~/B/bitonic_sort.smt2”等

(原理) 我有一个项目,我需要从许多不同的位置编辑文件,每次恢复工作时手动打开它们太麻烦了。 (所以,看起来像 nerdtree 在这个姊妹问题Favorite (G)Vim plugins/scripts? 中提出的东西不起作用)。我还需要针对不同项目的单独会话(即文件列表),而不仅仅是最近的文档列表。

在所有文档都作为缓冲区加载后,任何在它们之间切换的增强都是一个加分项(例如,开始输入名称,并显示匹配的文档)。提前致谢。

【问题讨论】:

    标签: vim


    【解决方案1】:

    我不确定您到底要什么...但是如果您想在 vim 中打开文件时打开制表符补全,请将其添加到您的 ~/.vimrc:

    " Auto-complete file names after <TAB> like bash does.
    set wildmode=longest,list
    set wildignore=.svn,CVS,*.swp
    

    另外,看看screen。从手册页:

    screen 被调用时,它会创建一个带有 shell(或指定的命令)的窗口,并且 然后离开你的方式,以便你可以像往常一样使用该程序。那么,任何时候, 您可以创建新的(全屏)窗口,其中包含其他程序(包括更多外壳),杀死 现有窗口,查看窗口列表,打开和关闭输出日志,复制和粘贴文本 窗口,查看回滚历史,以您希望的任何方式在窗口之间切换,等等。 Windows 完全独立地运行它们的程序。当他们的程序继续运行时 窗口当前不可见,即使整个屏幕会话与用户的分离 终端。当程序终止时,屏幕(默认情况下)会终止包含它的窗口。如果 这个窗口在前台,显示切换到前一个窗口;如果一个都没有, 屏幕退出。

    这很像打开多个 xterm,除了与图形 xterm 不同的是,如果您远程访问您的机器(例如通过 ssh 连接到它),您可以访问您的屏幕会话。您可以在单独的屏幕中留下几个不同的 vim 实例,其中包含您想要打开的所有文件,并且永远不要退出它们。

    我使用的非常基本的设置是一个 vim 窗口、一个编译窗口和一个测试/调试窗口。


    既然我们在谈论 vim,请查看这篇文章:Post your Vim config. 里面有很多很酷的调整和漂亮的东西。

    【讨论】:

    • 我想要一个“项目”/“会话”概念(命名的文件列表,例如“双音排序项目”),可能带有备用文档列表/切换器。如果有不清楚的地方,请澄清问题。屏幕是个好主意,有时间我得学习一下 :)
    • 哦,呵呵,就像 IDE 一样。我不知道该怎么做。
    【解决方案2】:

    Vim 有内置的会话管理器。要保存当前会话,请使用:

    :mks session1.vim
    

    这基本上创建了一个名为 session1.vim 的 Vim 脚本,如果你源文件或像这样启动 Vim,它将恢复你打开的文件:

    vim -S session1.vim
    

    要覆盖您保存的会话,请使用:mks! your_saved_session.vim。结合自定义键映射,这将是解决方案。有关 Vim 会话的更多信息,请阅读 :help :mks。 Vim 也有非常相似的 views 管理器。阅读更多来自::help :mkview

    缓冲区之间的切换,可以使用FuzzyFinder;但我更喜欢这个键映射:

    nmap <C-tab> :bn<CR>
    imap <C-tab> <ESC>:bn<CR>i
    

    将其添加到.vimrc,我可以使用 Ctrl + Tab 在缓冲区之间切换,就像 Firefox 选项卡一样。希望对您有所帮助。

    【讨论】:

    • 太好了,谢谢!我确实处理了大量文件,FuzzyFinder 看起来很棒!一件小事——vim 的文件名补全很有用,但我希望它只是在退出时保存活动会话......你碰巧知道怎么做吗?
    • 是的,这是个好主意。谷歌搜索了一下后,我找到了这个 Vim 脚本vim-session。它带有一些我不需要的额外功能,所以我借用了一些代码并提出了这个:au VimLeavePre * if v:this_session != '' | exec "mks! " . v:this_session | endif。将其添加到您的 .vimrc 中,退出时将自动保存当前会话。
    【解决方案3】:

    你可以试试 vim-workspace 插件,它的会话管理功能是自动化的并且相对简单(与 vim-session 相比):https://github.com/thaerkh/vim-workspace

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多