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>

関連情報