gpt4 book ai didi

c++ - 在 vim 中,如何创建一个命令来记住光标下的单词?

转载 作者:行者123 更新时间:2023-11-30 05:47:54 26 4
gpt4 key购买 nike

我目前正在编写一些 C++ 代码,这些代码通过宏定义了很多东西,我已经想出了以下正则表达式,在查找符号定义时,它在包含这些宏方面效果很好:

egrep -nrw --include=*.{c,h,i}{pp,xx} '^ *((struct|class|using|namespace) |typedef.*|[A-Z][_A-Z]*.)Symbol' .

我正在尝试将 Ctrl+F 映射到 vim 中的此命令,目前有以下内容:

map <C-F> :tabnew<CR>:redraw!<CR>:r! egrep -nrw --include=*.{c,h,i}{pp,xx} '^ *((struct<bar>class<bar>using<bar>namespace) <bar>typedef.*<bar>[A-Z][_A-Z]*.)Symbol' .

这行得通,但自动替换 Symbol 会很棒当我按 Ctrl+F 时光标下的单词。我最好的猜测是替换 Symbol<C-r><C-w> , 但这似乎失败了,因为前面的命令将光标从我想要查找的符号上移开。

如何让 vim 记住 <C-r><C-w>以便我以后可以插入它?

(此外,我猜想这种方法可以进行一些改进。我看到一个显示编译器错误的特殊窗口,之前它作为拆分缓冲区打开,当我按下回车键时,它会跳转到该位置。类似的东西是也很有帮助。)

最佳答案

您可以使用 <expr>为此的映射。这允许您将键绑定(bind)到函数的输出。将此与@Zach 的回答结合起来时,这应该可以满足您的要求:

map <expr> <C-F> ":tabnew<CR>:redraw!<CR>:r! egrep -nrw --include=*.{c,h,i}{pp,xx} '^ *((struct<bar>class<bar>using<bar>namespace) <bar>typedef.*<bar>[A-Z][_A-Z]*.)" . expand("<cword>") . "' ."

相关帮助主题:

:help :map-<expr>
:help matchstr()
:help getline()
:help col()

关于c++ - 在 vim 中,如何创建一个命令来记住光标下的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28444395/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com