2017-02-18 5 views
0

Я хочу, когда я изменить некоторые исходный файл в директории, нажмите вызовет CMake и сделать сборку, как показано ниже:VIM пользователем отображение определенная функция не работает, как я ожидал

command -bang -nargs=? Umake call Myfunction(<bang>0) 
function! Myfunction(forced) 
    lcd %:p:h 
    call system('cmake && make') 
endfunction 
nmap <F5> :Umake<cr> 

Этот фрагмент кода копируется из Интернета и сделал небольшую модификацию, не очень уверен, что все в порядке. После повторного ввода vim, нажмите, окна с левым нижним окном показывают «: Su», и ничего не произошло.

(1) Почему ничего не произошло, какая-либо проблема синтаксиса в Myfunction? (2) Нужна ли строка «command -bang»? В чем смысл 0 здесь?

Спасибо.

+0

' 0' означает либо'! 0' который это '1' или' 0', которые проверяют наличие перерыва (т.е. 'Umake' или' Umake! ') –

ответ

1

Вы не хотите компилировать с system()

Установить вместо :let &makeprg = 'cd "compilation/dir" && make $*'. Затем :make target -j 12.

Опять же, строить-инструмент-упаковщики плагин уже обрабатывает вне источника дерева компиляции (с несколькими каталогами компиляции), обнаружение цели, фон сборник ...

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