vimrc отображение номеров строк

vimrc отображение номеров строк

У меня в файле .vimrc есть следующие строки:

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

Они отлично работают для добавления и удаления точек останова в gdb! Только одна проблема (о которой я знаю)... по какой-то причине не работают номера строк в 80-х. Если я поставлю курсор на строку 85 и нажму F9, то это должно поставить точку останова на строку 85. Если я поставлю курсор на строку 75 и нажму F9, то это должно поставить точку останова на строку 75.

Полученные точки останова выглядят следующим образом:

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

Строка 85 не работает. Я проверил 80-е. Ни одна из них не работает. Все остальные строки, похоже, работают. Почему? Я уверен, что один из вас, экспертов VIM, может мне это объяснить. Это почти как если бы ":8" интерпретировались как какая-то другая команда или что-то в этом роде.

решение1

%:8является действительнымимя файла-модификатор, поэтому Vim интерпретирует его как часть команды :!.

Вы можете использоватьexpand('%')вручную развернуть %, а затем правильно заключить его в кавычки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>

Связанный контент