Как в Eclipse JDT можно преобразовать многострочное выделение в String. Как следующие
Из:
xxxx
yyyy
zzz
К:
"xxxx " +
"yyyy " +
"zzz"
Я попробовал следующий шаблон
"${line_selection}${cursor}"+
но таким образом я получаю только весь блок, а не каждую строку отдельно. Как я могу добиться многострочной обработки, такой как комментирование выбранного блока?





Возможно, это не совсем тот ответ, который вы ищете. Вы можете легко добиться того, о чем просите, с помощью редактора потока sed. Это доступно во всех разновидностях Unix, а также в Windows, если загрузить такой набор инструментов, как Cygwin. В командной строке оболочки Unix выполните команду
sed 's/^/"/;s/$/"+/'
и вставьте текст, который хотите преобразовать. На его выходе вы получите преобразованный текст. Аргумент, переданный в sed, говорит, что нужно заменить начало строки (^) цитатой и заменить конец каждой строки ($) кавычкой и плюсом.
Если текст, который вы хотите преобразовать, большой, вы можете перенаправить ввод и вывод sed через файлы. В таком случае запустите что-то вроде
sed 's/^/"/;s/$/"+/' <inputfile >outputfile
В Windows вы также можете использовать команду winclip из набора инструментов Перехитрить, чтобы напрямую изменять содержимое буфера обмена. Просто беги
winclip -p | sed 's/^/"/;s/$/"+/' | winclip -c
Приведенная выше команда вставит содержимое буфера обмена в sed, а результат - обратно в буфер обмена.
Наконец, если вы часто используете эту команду, имеет смысл поместить ее в файл сценария оболочки, чтобы вы могли легко ее запустить. Затем вы даже можете назначить ему сочетание клавиш Eclipse.
Найти / заменить с включенной опцией регулярного выражения. Находить:
^(.*)$
Заменить:
"" +
Ну и в последней строчке будет лишний +, придется вручную удалить.
Может быть, вы не это имеете в виду, но ...
Если я нахожусь в строке в Eclipse и ввожу двойные кавычки, то внутри этой вставки многострочный выделенный фрагмент (как в вашем примере xyz) будет вставлен следующим образом:
"xxxx\n" +
"yyyy\n" +
"zzz"
Затем вы могли бы просто найти / заменить в выделенном фрагменте для "\n" на "", если вы не намеревались вводить новые строки.
Я думаю, что возможность включить это есть в Window/Preferences, в разделе Java/Editor/Typing/ установите флажок рядом с "Escape text when pasting into a string literal". (Eclipse 3.4 Ganymede)
Спасибо! К вашему сведению - мне также пришлось перезапустить Eclipse после изменения настроек.
Я бы пошел с помощью Find / Replace eclipse в режиме регулярного выражения:
Находить:
^ ((?: \ s (?) \ S?) ((?: \ S (?! [\ R \ n])))
Заменить
\ 1 "\ 2" \ 3 +
Сохранит точно независимо от того, какие пробелы или табуляции у вас есть до и после каждой строки, и окружит их необходимыми двойными кавычками. (последний знак "+" необходимо удалить)
У меня есть смешное дополнение, которое, я думаю, вы могли бы оценить как седер. Вы можете избежать дополнительного
+в последней строке с помощьюsed 's/^/"/; s/$/"/; $! s/$/+/'---$означает Последняя линия, а$!означает не последняя строчка.