默认情况下,在project.vim中打开所有折叠

时间:2011-01-06 14:12:52

标签: vim

首次在vim中打开项目窗口时,所有折叠都将关闭。我觉得这很烦人。是否有任何方法可以将它们全部打开?我已经阅读了project.vim的所有文档,但找不到此设置。

3 个答案:

答案 0 :(得分:3)

autocmd怎么样?

假设您使用默认项目文件名,您可以执行以下操作:

autocmd BufEnter .vimprojects silent! %foldopen!

如果你想保持光标位置,你可以破坏标记或使用变量:

autocmd BufEnter .vimprojects let PreFoldPosition = getpos('.') | silent! %foldopen! | call setpos('.', PreFoldPosition)

修改

似乎project.vim创建缓冲区然后添加内容。因此,上面的autocmds仅在项目窗口打开的第二次和随后的时间工作。我知道绕过此方法的唯一方法是编辑project.vim并将silent! %foldopen!放在函数s:Project(filename)的末尾附近。可能值得向作者发送一封电子邮件,询问他是否可以在标准发行版中添加一种方法(带选项)。

答案 1 :(得分:3)

将此文件放入.vimrc中,以便在打开文件时将所有折叠设置为打开:

set foldlevel=99

这将导致所有99级折叠被关闭,我希望这些折叠都不是。如果你有超过99级的折叠,你有99个问题的笑话。

答案 2 :(得分:0)

我知道这个问题有点陈旧,但另一个解决方案是在.bashrc(或类似代码)中创建一个函数来执行以下操作:

vim +"Project $1" +'silent! %foldopen!'

例如,在我的.bashrc中,我有以下内容:

export PROJECT_DIR="$HOME/devel/projects"

project()
{
    if test -z "$1"
    then
        echo "Usage: project <project name>"
    else
        if [ ! -e "$PROJECT_DIR/$1" ]
        then
            echo "Project not found. Available projects:"
            find $PROJECT_DIR/* | xargs -l basename
        else
            vim +"Project $PROJECT_DIR/$1" +'silent! %foldopen!'
        fi
    fi
}

_project()
{
    local cur
    local PROJECTS=`find $PROJECT_DIR/projects/* | xargs -l basename`
    COMPREPLY=()
    cur=${COMP_WORDS[COMP_CWORD]}
    COMPREPLY=( $( compgen -W "$PROJECTS" -- $cur ) )
}
complete -F _project project

这使我可以简单地发出'project'命令并选项卡 - 完成名称。