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>

相关内容