LINUX.ORG.RU

if isdirectory($PWD . '/.vim/view')
    set viewdir=$PWD/.vim/view
endif
anonymous
()

Как-то так (у анонимуса неточности):

if isdirectory(getcwd().'/.vim/view')
    let viewdir = getcwd().'/.vim/view'
else
    let viewdir = $HOME.'/.vim/view'
endif
echo viewdir
" let &viewdir = viewdir

xaizek ★★★★★
()
Ответ на: комментарий от anonymous

Да, извиняюсь, глянул справку (значение опции по умолчанию) и ещё раз на присвоение (думал, что там let), всё там верно. Но я бы всё же не полагался на значение по умолчанию (на офтопике будет в другом месте) и создавал бы директорию при необходимости, на всякий случай.

xaizek ★★★★★
()
Ответ на: комментарий от xaizek

xD, я альтернативный бранч не расписал потому что лень. Батек конечно тупой, но продолжить аналогию сможет, я верю в него!

anonymous
()
Ответ на: комментарий от xaizek

работает, только сессию почему-то всё равно сохраняет в ~/.vim/view

у меня там ниже такое написано:

au BufWinLeave *.{c,cpp,hpp,bash} mkview
au BufWinEnter *.{c,cpp,hpp,bash} silent loadview

emulek
() автор топика
Ответ на: комментарий от xaizek

на офтопике будет в другом месте

вот это мне пофигу.

emulek
() автор топика
Ответ на: комментарий от emulek

В :help :mkview:

An existing file is always overwritten then.
Может в этом дело, т.е. сессия старая и записывается туда, где уже есть.

xaizek ★★★★★
()
Ответ на: комментарий от emulek

работает, только сессию почему-то всё равно сохраняет в ~/.vim/view

Я конечно глупость спрошу, но точно viewdir в нужное значение выставляется?

anonymous
()
Ответ на: комментарий от emulek

чувака с непроизносимой фамилией хочется распять и боготворить одновременно. Vim конечно годный редактор, но когда я вижу его скрипты, мне хочется открыть emacs…

emulek
() автор топика
Ответ на: комментарий от emulek

да, а как быть если хочется взять имя каталога из имени файла? В доке написано про %:p:h но я что-то туплю, и не понимаю, куда его вклячить? В expand(), да?

emulek
() автор топика
Ответ на: комментарий от anonymous

Повангую, если хочешь написать cmap для разворачивания %/ в командном режиме, то вот готовый:

cmap %/ <c-r>=expand('%:p:h')<cr>/
anonymous
()
Ответ на: комментарий от anonymous

Смотря в каком контексте

в этом: if isdirectory(getcwd().'/.vim/view')

Что-бы когда я открываю файл *.cpp, view брался-бы оттуда, где *.cpp лежит.

UPD: да, именно так работает. Попробуй каталог создать, если его нет...

emulek
() автор топика
Ответ на: комментарий от emulek

не, создание директории я не осилил, увы.

call mkdir(viewdir)

не может создать директорию. Нужен --parent видимо...

emulek
() автор топика
Ответ на: комментарий от anonymous

ага, спасибо. Так всё работает.

if isdirectory(expand("%:p:h").'/.vim/view')
·   ·   let viewdir = expand("%:p:h").'/.vim/view'
·   else
·   ·   let viewdir = expand("%:p:h").'/.vim/view'
·   ·   if !isdirectory(viewdir)
·   ·   ·   call mkdir(viewdir, 'p')
·   ·   endif
·   ·   if !isdirectory(viewdir)
·   ·   ·   echo "can't create " . viewdir
·   ·   ·   let viewdir = $HOME.'/.vim/view'
·   ·   endif
endif
echo viewdir
let &viewdir = viewdir

пока так оставлю, потом подчищу...

emulek
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.