如何在Vim中按顺序选择表达式的一部分?

时间:2014-11-18 19:47:21

标签: operators expression vim operator-precedence

Vim中有一个功能我会发现它很棒..我可以问它是否存在或者是否有人知道我将如何开始实施它?

'灵感来自Mathematica的前端ctrl-.功能,人们可以在视觉模式中依次选择光标所在的表达式的连续图层。 。例如,如果我们在假想的语言中考虑以下表达式:

# enter visual mode at this position:
for(i in 1:n){
    a = append(a, b[i %% floor((n + 1) / 2)] + c - n * last(a));
                                        ^
}
---------------------------------------------------------------------------------
2                                                                 # selected text after first hit

(n + 1) / 2                                                       # second hit

floor((n + 1) / 2)                                                # third hit

i %% floor((n + 1) / 2)                                           # fourth hit

b[i %% floor((n + 1) / 2)]                                        # fifth hit

b[i %% floor((n + 1) / 2)] + c - n * last(a)                      # sixth hit

append(a, b[i %% floor((n + 1) / 2)] + c - n * last(a))           # seventh hit

a = append(a, b[i %% floor((n + 1) / 2)] + c - n * last(a));      # eight hit

for(i in 1:n){
    a = append(a, b[i %% floor((n + 1) / 2)] + c - n * last(a)); `# etc. until the whole file gets selected
}

我知道这需要该功能知道语言中的各种运算符及其各自的优先级,但这不是一个输入,是吗?

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

默认情况下,Vim无法做到这一点,但至少有一个插件符合您的要求:vim-expand-region