Команду удалить весь метод? - PullRequest
5 голосов
/ 24 ноября 2010

Я использую viemu в VS 2010. Есть ли надежная команда для удаления всего метода в исходном коде C #?

Вот что я пробовал:

  • Команды перемещения } и ]] недостаточно умны, чтобы выбрать метод.Хотя иногда они действительно получают правильное количество текста.

  • Изнутри метода я могу сделать diB, который удалит все тело метода.Это не так уж плохо, но тогда мне осталось удалить подпись и внешние скобки.

  • Если я наведу курсор на модификатор видимости (т. Е. public, private и т. Д.), Тогда сделаю d*, он уничтожит весь метод, если следующий метод имееттакая же видимость.

У каких-нибудь экспертов vi / viemu есть способ сделать это?

Ответы [ 3 ]

2 голосов
/ 02 декабря 2010

Мне нравится использовать zadd, чтобы сложить его и удалить этот сгиб (который тоже получит объявление).

Еще один способ сделать это, если вы находитесь внутри уровня метода / if, который вы хотите удалить, это da{dd, который я считаю немного проще набрать, чем некоторые другие предложения. В нем говорится, что нужно удалить вокруг пары скобок {, в которой находится курсор, затем dd, чтобы удалить оставшееся объявление функции.

Если вы вложены в управляющие структуры в методе, вы можете поставить перед ним число, чтобы удалить столько уровней вверх.

2 голосов
/ 24 ноября 2010

В Vim вот как я это делаю. Я не уверен, достаточно ли совместим viemu, но:

  1. Перейти к началу объявления метода (модификатор доступности и т. Д.).
  2. Нажмите v , чтобы войти в визуальный режим.
  3. Поместите курсор на фигурную скобку, которая запускает тело метода.
  4. Нажмите % , чтобы переместить курсор к соответствующей скобке.
  5. Нажмите d , чтобы удалить все, что выбрано.

Это не супер-автомат или что-то в этом роде, но он работает и его относительно легко сделать, как только начнет работать мышечная память.

1 голос
/ 30 ноября 2010

dap (удалить абзац) будет работать для простых методов, которые не содержат пустых строк.Для методов, которые содержат пустые строки, вам нужно будет использовать diBdap (удалить внутренний блок, затем удалить абзац).Для более легкого использования вы можете создать отображение в вашем файле RC.например: :nmap <C-d> diBdap

...