C 搜索文件中提到的每个变量

C 搜索文件中提到的每个变量,c,editor,sublimetext2,notepad++,sublimetext,C,Editor,Sublimetext2,Notepad++,Sublimetext,我有一个巨大的文件,长度超过4000行。声明了200多个变量,其中一些变量的定义非常糟糕:例如 int s; int waste; 现在,我需要一些工具来帮助我找到变量s。我不能使用ctrl+F,因为这会让我每次提到字母s,而不是每次提到变量s。因此,s也会在waste中被检测到 例如,当我搜索s时,我希望检测到: if(abc == 2 && s == 3) if(abc == 2 && waste == 3) 但这不应被检测到: if(abc == 2

我有一个巨大的文件,长度超过4000行。声明了200多个变量,其中一些变量的定义非常糟糕:例如

int s;
int waste;
现在,我需要一些工具来帮助我找到变量
s
。我不能使用
ctrl+F
,因为这会让我每次提到字母
s
,而不是每次提到变量
s
。因此,
s
也会在
waste
中被检测到

例如,当我搜索
s
时,我希望检测到:

if(abc == 2 && s == 3)
if(abc == 2 && waste == 3)
但这不应被检测到:

if(abc == 2 && s == 3)
if(abc == 2 && waste == 3)
我目前正在使用
Notepad++
,我想知道
Notepad++
上是否有允许我这样做的功能

如果没有,你能推荐其他的编辑器/工具/软件来帮我吗

如果我有类似于:

int x;
struct a
{
    int x;
    int y;
} st;

我不想只找到
x
struct
之外声明的所有出现的
x
,那么
Notepad++
ctrl+F match-whole-word
功能将不起作用,因为即使
st->x
也会被匹配。

尝试在vim

/\

如果您想用
bar
替换出现的每个单词
foo
,那么

:%s/\/bar/g

在单词周围使用
\
只匹配完整的单词

编辑:

  • 将光标移动到要保留的块内
  • 使用
    di{
    将块终止到临时寄存器
  • 使用
    :%s/\/bar/g
    将每次出现的“foo”替换为“bar”
  • `
    转到上次编辑的位置
  • P
    将文本拉回到大括号内

尝试在vim中使用此选项

/\

如果您想用
bar
替换出现的每个单词
foo
,那么

:%s/\/bar/g

在单词周围使用
\
只匹配完整的单词

编辑:

  • 将光标移动到要保留的块内
  • 使用
    di{
    将块终止到临时寄存器
  • 使用
    :%s/\/bar/g
    将每次出现的“foo”替换为“bar”
  • `
    转到上次编辑的位置
  • P
    将文本拉回到大括号内

在记事本++中,按Ctrl+F,选中“仅匹配整个单词”复选框,然后单击“查找”或“在当前文档中查找所有内容”。我使用的是记事本++v6.2.2(UNICODE)。我尝试了您在问题中提出的方案,使用这种方法对我有效。

在记事本++中,按Ctrl+F,选中“仅匹配整个单词”复选框,然后单击“查找”或“在当前文档中查找所有内容”。我使用的是Notepad++v6.2.2(UNICODE)。我尝试了您在问题中提出的方案,使用这种方法对我很有效。

将光标放在变量上(不要选择它)然后多次按Command+D,直到它在每个匹配项前面添加了一个光标,然后您可以编辑变量并按ESC退出多光标模式。

将光标放在您的变量上(不要选择它)然后多次按Command+D,直到它在每个匹配项前面添加了一个光标,然后您可以编辑变量并按ESC退出多光标模式。

是的,非常感谢@BookHuntess。但是有一些场景不匹配。我在阅读了您的解决方案后编辑了这个问题,因为我意识到我没有像您那样ar就像我应该做的那样。在Eclipse中,用户可以突出显示一个变量,然后按Ctrl+Shift+G来搜索该变量的所有匹配项。搜索结果将显示在底部的搜索选项卡中。您也可以尝试一下。我使用Eclipse for Java尝试过这些方法,但我认为C/C++也有Eclipse版本。是的,谢谢@bookhuntress的内容太多了。但是有几个场景不匹配。我在阅读了您的解决方案后编辑了这个问题,因为我意识到我没有像应该的那么清楚。在Eclipse中,用户可以突出显示一个变量,然后按Ctrl+Shift+G来搜索该变量的所有匹配项。搜索结果将显示在搜索中标签。你也可以试试。我用Eclipse for Java尝试过这些方法,但我认为C/C++也有一个Eclipse版本。是的,非常感谢@Lakshay。但是有一些场景是不匹配的。我在阅读了你的解决方案后编辑了这个问题,因为我意识到我没有像应该的那样清楚een.如果您有任何其他解决此问题的方法,请告诉我。@RandomlyNamedUser您可以通过临时将希望保持不变的零件移动到寄存器来实现此目的。这可以在vim中使用
di来完成{
选择大括号内的部分。然后重复上述命令,然后将删除的部分粘贴回其位置。是的,非常感谢@Lakshay。但是有一些情况不匹配。我在阅读了你的解决方案后编辑了这个问题,因为我意识到我没有像应该的那样清楚。请让我知道你是否有任何其他方法来解决这个问题。@RandomlyNamedUser你可以通过暂时将你想要保持不变的部分移动到寄存器来实现。这可以在vim中使用
di来实现{
选择大括号内的零件。然后重复上述命令,然后将删除的零件粘贴回其位置。