我的 .vimrc 檔案中有這些行:
:map <F9> :exe ':!gdbset bp "%:'.line(".").'"'<CR><CR>
:map <F8> :exe ':!gdbset clear bp "%:'.line(".").'"'<CR><CR>
它們非常適合在 gdb 中新增和刪除斷點!只有一個問題(據我所知)...由於某種原因,80 年代的行號不起作用。如果我將遊標放在第 85 行並按 F9,那麼它應該在第 85 行放置一個斷點。
產生的斷點如下圖所示:
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>