VIM Marks и управление проектами - PullRequest
4 голосов
/ 24 декабря 2009

Так что я использовал NERDTree в vim, так как он добавляет отличную функциональность, позволяя просматривать файловую систему. А с возможностями Закладок он отлично подходит для переключения между проектами.

Тем не менее, я начал использовать Marks все больше и больше в vim и хотел знать, знает ли кто-нибудь о плагине, который позволяет вам иметь наборы меток. Как будто я хочу, чтобы `C перешел к файлу конфигурации в проекте, над которым я сейчас работаю. Я могу установить его каждый раз, когда меняю проекты, но мне было интересно, знает ли кто-нибудь о хорошем способе их упаковать.

Просто подумав об этом, я думаю, было бы здорово, если бы он просто прочитал файл, когда вы попали в каталог (например, переключение между закладками с помощью NERDTree ...).

В любом случае, кто-нибудь знает что-нибудь подобное?

Ответы [ 2 ]

4 голосов
/ 26 декабря 2009

Получается, что отметки не сохраняются в сеансе , а сохраняются в файле viminfo! Поэтому я использовал код из вашего vimrc в качестве основы и код, найденный в нижней части раздела о сессиях в файлах справки vim , чтобы создать функцию, которая позволит мне сохранить сессию и файл viminfo. , Создание базового управления проектами, которое отлично работает для меня!

Вот код, которым я закончил.

if version >= 700
    " localoptions has to be here:
    " for some reason, new session loading code fails to set filetype of files in session
  set sessionoptions=blank,tabpages,folds,localoptions,curdir,resize,winsize,winpos
endif

command! -nargs=1 Project :call LoadProject('<args>')
command! -nargs=+ SaveProject :call SaveProject('<args>')

let s:projectloaded = 0
let s:loadingproject = 0
let s:projectname = ''

function! LoadProject(name)

    let s:projectloaded = 1
    let s:projectname = a:name
    exe "source ~/vimfiles/projects/".a:name.".vim"
    exe "rviminfo! ~/vimfiles/projects/".a:name.".viminfo"

endfunction

function! SaveProject(name)

    if a:name ==# ''
        if s:projectloaded == 1
            let pname = s:projectname
        endif
    else
        let pname = a:name
    endif

    if pname !=# ''
        let s:projectloaded = 0
        let s:projectname = ''
        exe "mksession! ~\\vimfiles\\projects\\".pname.".vim"
        exe "wviminfo! ~\\vimfiles\\projects\\".pname.".viminfo"
    endif

endfunction

autocmd VimLeave * call SaveProject()
3 голосов
/ 24 декабря 2009

Я считаю, что метки хранятся в файлах сеансов, что может позволить вам делать то, что вы хотите. Управление сессиями само по себе является другой темой, но вы можете найти некоторые идеи здесь . Этот код был обновлен, чтобы включить поддержку нескольких файлов сеансов, поэтому получите последнюю версию в этом файле vimrc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...