我的 .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>