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>

관련 정보