Vim: Инвертировать порядок параметров функции? - PullRequest
2 голосов
/ 03 января 2011

Предположим, я получил вызов этой функции:

cook("rice", kitchen->pot);

После написания этого я замечаю, что порядок параметров неправильный, я должен был сделать

cook(kitchen->pot, "rice");

Чтобы исправить это, я мог бы сделать:

    1: move cursor over "rice": $b
    2: delete a ": da"
    3: move to (: %
    4: paste "rice": p
    5: insert new ,: a, 
    6: find and delete spare ,: f,x

Но я использую VIM! Мы быстрее редактируем код с vim, есть идеи?

Ответы [ 5 ]

2 голосов
/ 23 ноября 2011

:map <F9> "qdt,dwep"qp

Плагины не требуются. Основываясь на ответе soulemerge , я обнаружил, что это работает немного лучше, когда вы имеете дело с кодом. Другими словами, iw не работал для меня хорошо в случае:

Assert.AreEqual(myProp.ToString(), 0xcccc);

Если бы я начал с myProp, он бы захватил только до .. Этот код просто приводит вас к запятой, что особенно полезно, если вы меняете параметры.

2 голосов
/ 03 января 2011

С omap-param (из lh-cpp) + плагином обмена вещами , я бы набрал f(ldi,lvi,g".Где di, говорит удалить внутренний параметр , vi, говорит выбрать внутренний параметр , а g" говорит поменять выделение на то, что мы только что удалили .

Этот подход может показаться излишним, однако в отличие от наивных подходов он по-прежнему будет работать с такими параметрами, как kitchen->getPot(medium, blue).

2 голосов
/ 03 января 2011

Ваши ответы действительно полезны, но я сам нашел решение:

:s/\v(\w+\()([^,]+)(,\s*)([^\),]+)/\1\4\3\2

Это будет работать с большинством типов параметров, особенно для моих php-подобных вызовов функций.

2 голосов
/ 03 января 2011

Здесь есть похожий вопрос, специфичный для Ruby, но который должен работать для вас:

Какой самый быстрый способ отменить список через запятую в vim?

Видимо серебряной пули нет.

Лично мне очень нравится решение Соулмерге.

0 голосов
/ 17 января 2014

Здесь есть попытка (которая на самом деле вызывает Руби): https://github.com/vim-scripts/reorder.vim

Она может быть вызвана: :Reorder 3,2,1

Лично я думаю, что мы можем добиться большего!Я могу попытаться написать плагин для этого ... Думая, что сочетания клавиш могут быть mcl и mch для Move Claus Right / Left.

Помимо аргументов функций, я также хочу изменитьпорядок статей в английских предложениях.«Я также обнаружил, что хочу изменить порядок предложений в английских предложениях, а также аргументов функций».

Другой вариант использования - это элементы в списках, которые разделены строкой, но для которых последний аргумент долженпропустите завершающую запятую.

...