Знаки VIM и управление проектами

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

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

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

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


person Boushley    schedule 24.12.2009    source источник


Ответы (2)


Вот и получается, что отметки не сохраняются в сеансе, а сохраняются в файле виминфо! Поэтому я использовал код из вашего 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()
person Boushley    schedule 26.12.2009
comment
Спасибо. Этот фрагмент кода отлично работает для меня, +1. Знаки в верхнем регистре прекрасны, и теперь я не потеряю ни одного из них. - person Birei; 05.10.2013

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

person Lucas Oman    schedule 24.12.2009
comment
Похоже, это отлично сработает I. Комбинация с закладками NERDTree. С NERDTree вы можете легко переключить cwd на закладку, а затем вы можете легко загрузить сеанс из этого рабочего каталога. Я попробую, спасибо. - person Boushley; 26.12.2009