Как в vim выбрать "до конца функции" для C -подобных языков? - PullRequest
0 голосов
/ 11 июля 2020

Скажем, курсор находится на звездочке:

void foo(int n) {
  int i;
  // the cursor is here: *
  for(i=0; i<n; i++) {
    bar(i);
  }
}

Какой самый простой способ выполнить оператор до конца функции? Если я запустил , когда Ω является этим оператором, я ожидал бы увидеть:

void foo(int n) {
  int i;
  // the cursor is here:* 
}

То есть, все от этой точки до конца функции будет удалено. Я знаю про di{, но это приведет к удалению всей функции.

Ответы [ 3 ]

3 голосов
/ 11 июля 2020
2 голосов
/ 12 июля 2020

Для C Vim уже предоставляет способы сделать это изначально.

В C ++ есть угловые случаи с функциями, определенными в определениях класса - в этих случаях определение функции не имеет отступа 0 , и Vim не знает, как обрабатывать границы функции обнаружения.

Требуются некоторые сценарии. В vi.SE я описал решение , которое я интегрировал через 2 поддерживаемых мной подключаемых модуля (lh-dev + lh-tags).

1 голос
/ 11 июля 2020

Альтернативой является использование RegEx:

d/^}<CR>

То есть: удаление до строки, начинающейся с "}" .

...