números de linha de mapeamento vimrc

1

Eu tenho estas linhas no meu arquivo .vimrc:

:map <F9> :exe ':!gdbset bp "%:'.line(".").'"'<CR><CR>
:map <F8> :exe ':!gdbset clear bp "%:'.line(".").'"'<CR><CR>

Eles funcionam muito bem para adicionar e remover pontos de interrupção no gdb! Apenas um problema (que eu conheço) ... por algum motivo, números de linha nos anos 80 não funcionam. Se eu colocar meu cursor na linha 85 e pressionar F9, ele deve colocar um ponto de interrupção na linha 85. Se eu colocar meu cursor na linha 75 e pressionar F9, ele deverá colocar um ponto de interrupção na linha 75.

Os pontos de interrupção resultantes são assim:

b myfile.cc:5
b myfile.cc:75

A linha 85 não funcionou. Eu testei os anos 80. Nenhum deles funciona. Todas as outras linhas parecem funcionar. Por quê? Tenho certeza de que um de vocês, especialistas em VIM, pode explicar isso para mim. É quase como se o ": 8" estivesse sendo interpretado como algum outro comando ou algo assim.

    
por exvance 10.04.2012 / 09:52

1 resposta

2

%:8 é um modificador de nome de arquivo válido, por isso está sendo interpretado pelo Vim como parte do comando :! .

Você pode usar expand('%') para expandir manualmente % e, em seguida, citar corretamente com shellescape(…,1) :

:map <F9> :exe '!gdbset bp'       shellescape(expand('%').':'.line('.'),1)<CR><CR>
:map <F8> :exe '!gdbset clear bp' shellescape(expand('%').':'.line('.'),1)<CR><CR>
    
por 11.04.2012 / 09:28

Tags