【问题标题】:Why does ci` jump into the backticks but ci( does not jump into braces? [duplicate]为什么 ci` 跳入反引号但 ci( 不跳入大括号? [重复]
【发布时间】:2017-06-10 04:50:21
【问题描述】:

假设我有一个这样的文本文件:

this is some test `more test` 
this is some test (more test)

如果我在第一行的开头并输入 ci`,光标会跳到反引号,替换里面的内容,让我编辑。

但是,如果我在第二行的开头输入 ci( 什么都不会发生。

这种行为的原因是什么?有没有可能改变它的设置?

【问题讨论】:

标签: vim


【解决方案1】:

关于 vim 7.4 的内部行为:

  • 对于区块(),{},[],<>:

Vim 从当前位置开始向后搜索,然后向前搜索以匹配开始和结束字符。

  • 对于报价""''``

Vim 跨越光标所在的整行,直到找到引号。

这是光标下没有引号字符的最后一种情况:

/* Search backward for a starting quote. */
    col_start = find_prev_quote(line, col_start, quotechar, curbuf->b_p_qe);
    if (line[col_start] != quotechar)
    {
        /* No quote before the cursor, look after the cursor. */
        col_start = find_next_quote(line, col_start, quotechar, NULL);
        if (col_start < 0)
        return FALSE;
    }

    /* Find close quote character. */
    col_end = find_next_quote(line, col_start + 1, quotechar,curbuf->b_p_qe);

【讨论】:

    猜你喜欢
    • 2019-08-18
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 2017-04-26
    • 2015-02-26
    • 1970-01-01
    • 2017-09-29
    相关资源
    最近更新 更多