首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vim -更改到并包含已搜索的字符串

Vim -更改到并包含已搜索的字符串
EN

Stack Overflow用户
提问于 2019-12-16 12:31:33
回答 2查看 428关注 0票数 4

假设我有以下代码:

代码语言:javascript
复制
bool myCopiedFunc() {
    Some code that I've written;
    The cursor is on this line; <<<<<<<<<<<<<<
    if (something) {
        bool aValue;
        some of this is inside braces;
        return aValue;
    }
    if (somethingElse) {
        this is also inside braces;
        bool anotherValue;
        {
            more braces;
        }
        return anotherValue;
    }
    return false;
}

我决定从带有光标的行中重写函数的其余部分。

要替换同一行的字符,我可以使用ct<char> (例如ct; )

要在同一行中替换和包含一个字符,我可以使用cf<char>,例如,cf;

要替换跨越多行的字符串,我可以使用c/<string> (例如c/return false )

用于替换多行的字符串,并包含多行字符串,我可以使用.??例如??

我不能只搜索分号,因为在光标和函数的末尾之间有一个未知的分号,计算它们的速度会很慢。我不能只搜索一个结束大括号,因为光标和函数的末尾之间有几个块,所有结束大括号的计数都会很慢。在代码突出显示的帮助下,我可以很容易地看到,我可以搜索的唯一字符串是return false

是否有一个删除或更改字符串模式的优雅解决方案?

我已经看过几个相关的问题了。

Make Vim treat forward search as "up to and including"有一个公认的答案,但没有回答我的问题。

在我的例子中,我决定删除搜索字符串,然后单独删除分号,但是它感觉效率很低,就像更快地触及鼠标。#世界第一问题

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-16 12:35:57

用于替换多行的字符串,并包含多行字符串,我可以使用.??例如?

/支持偏移。

在您的例子中,您需要e偏移量,即c/foo/e

您可能想了解有关“搜索偏移量”的更多详细信息:

代码语言:javascript
复制
:h offset
票数 4
EN

Stack Overflow用户

发布于 2019-12-16 17:19:58

如果要替换到与当前作用域相关联的大括号,则有c]}

如果您正在寻找函数的末尾,即使它意味着跨越到上作用域,如果函数可能不是0缩进的,就需要一个插件,就像C++,Java.参见相关的Q/A on vi.SE

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59356691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档