2013-09-11 2 views
1

Я имею эту функцию, чтобы сделать обратные запросы (из PDF в Vim) при работе с LaTeX документов в MS Windows:ВИМ: открытая складка с дистанционным немого

function! ViewTex() 
    if has('win32') || has('win64') 
     let execstr = 'silent! !start SumatraPDF -reuse-instance '. 
        \ '-inverse-search "gvim --remote-silent +\%l \%f"'. 
        \ '%:p:r.pdf' 
    endif 
    exec execstr 
endfunction 

Это работает отлично, за исключением того, что не будет открытые закрытые складки. Поэтому мой вопрос: как передать normal zv команду на --remote-silent? Я пытался (безуспешно) следующее:

"gvim --remote-silent +\%l|normal\ zv \%f" 

ответ

1

Назад к первой попытки, в большинстве ситуаций cmd.exe оболочки Windows, не использует «\», чтобы избежать ничего. Поэтому я думаю, что вам нужно окружить ваши команды init в кавычках вместо обратного слэша, избегая пробелов. Кроме того, согласно :help --remote, команды в init должны иметь следующую '|' чтобы отделить их, то есть normal не будет работать, если только он не окружен командой execute. Так что в вашем случае что-то вроде этого, возможно, потребуется выполнить в оболочке:

gvim --remote-silent +"%l|exe 'normal! zv'" %f (с включенными котировки)

Но я не уверен, что это позволяет ли расширение, как упросил% 1 и% F.

Edit:

Или используйте foldopen! вместо exe 'normal! zv', чтобы избежать необходимости в помещениях или exe на всех. Но, обратите внимание, что это фактически открывает больше складок, чем просто zv; возможно, это нормально для вас.

Из ваших комментариев, это выглядит как любую платформу вы используете требуют обратных косых черты, спасаясь любым «%» символов, так:

gvim --remote-silent +\%l|foldopen! \%f

1

Edit:Объяснение ниже немного неправильно но метод звук. Я пропустил, что семейство --remote принимает необязательный аргумент команды «init»; это часть команды --remote-silent, а не новый аргумент gvim. Объяснение ниже подходит, если это новый аргумент для gvim.


Проблема заключается в том, что Vim, который работает, чтобы отправить удаленный файл будет также выполнить команду +..., а не Vim, который на самом деле редактирует файл. Попробуйте использовать --remote-send или --remote-expr после --remote-silent, чтобы отправить команды, необходимые для запуска после загрузки файла.

I.e. что-то вроде:

gvim --remote-silent myfile 
gvim --remote-send zv 
etc. 
+0

Спасибо за ваш ответ. Я старался делать то, что вы предлагаете, но безуспешно. Мне нужно передать следующие параметры в программу просмотра PDF: 'gvim --remote-silent +% l; foldo! % f' – petobens

Смежные вопросы