Отзывчивая компиляция и запуск Vim Mapping - PullRequest
4 голосов
/ 08 марта 2012

В моем .vimrc есть следующее отображение.

:nmap <F5> :<C-U>make %:r && ./%:r<CR>

Я нажимаю F5 в VIM, и он компилируется, выходит из VIM и запускает мой код.Когда программа завершается, она просит меня «нажать клавишу ВВОД или ввести команду для продолжения».Затем он выводит меня на пустой экран с текстом (1 of 5): и той же подсказкой «нажмите клавишу ВВОД или введите команду для продолжения».Я нажимаю ввод, и он, наконец, возвращает меня обратно в VIM.Такое поведение является последовательным по всем направлениям.Есть ли способ удалить любое или оба из этих случаев?Возможно, после завершения программы отображение дважды нажмите ENTER.Если да, то как?

РЕДАКТИРОВАТЬ: Поэтому я понял, что добавление еще двух <CR> не совсем решает проблему.Как только программа завершается, она НЕМЕДЛЕННО возвращается к VIM, и у меня нет времени просматривать результаты.Могу ли я заставить отображение ждать, пока ME нажмет первый ввод, а затем автоматически нажать второе ENTER?

Ответы [ 3 ]

1 голос
/ 20 марта 2012

Будет ли это работать:

nmap <F5> :<C-U>silent make %:r<CR>:redraw!<CR>:!./%:r<CR>

Более длинное решение, но оно также позволяет увидеть ошибки ( ссылка ):

:function! MakeAndRun()
:        silent make %:r
:        redraw!
:        if len(getqflist()) == 1
:          !./%:r
:        else
:          for i in getqflist()
:            if i['valid']
:                 cwin
:                 winc p
:                 return
:            endif
:          endfor
:        endif
:endfunction
:nmap <F5> :call MakeAndRun()<cr>
1 голос
/ 08 марта 2012

Да и да (вы ответили на свой вопрос):

:nmap <F5> :<C-U>make %:r && ./%:r<CR><CR>
0 голосов
/ 27 апреля 2013

Для меня это прекрасно работает:

" Compile
noremap <F4> :<C-U>silent make<CR>:redraw!<CR>
" Automatically open, but do not go to (if there are errors) the quickfix /
" location list window, or close it when is has become empty.
autocmd QuickFixCmdPost [^l]* nested cwindow
autocmd QuickFixCmdPost    l* nested lwindow

Компилируется и сразу переходит к vim, показывая окно быстрого исправления.Промежуточное звено отсутствует.

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