繁体   English   中英

缺省打开project.vim中的所有折叠

[英]open all folds in project.vim by default

在vim中首次打开项目窗口时,所有折叠均关闭。 我觉得这很烦人。 有没有办法让它们默认都打开? 我已经阅读了project.vim的所有文档,但找不到相应的设置。

将其放在.vimrc中以设置打开文件时所有折叠的打开:

set foldlevel=99

这将导致所有第99级折页都被关闭,我希望这些都不是。 如果您有超过99个级别的弃牌,则有99个问题笑话。

autocmd怎么样?

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

autocmd BufEnter .vimprojects silent! %foldopen!

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

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

编辑

似乎project.vim创建了缓冲区,然后添加了内容。 结果,上面的autocmds仅在第二次及以后打开项目窗口时起作用。 我知道解决这个问题的唯一方法是编辑project.vimsilent! %foldopen! silent! %foldopen! 在函数s:Project(filename)的结尾处。 可能值得向作者发送电子邮件,并询问他是否可以在标准发行版中添加这样做的方法(带有选项)。

我知道这个问题有点陈旧,但是另一个解决方案是在.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

这使我可以简单地发出“项目”命令并使用制表符完成名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM