Отрывки кода - PullRequest
       28

Отрывки кода

21 голосов
/ 14 января 2010

Временами у меня есть фрагмент кода, который я хочу опубликовать на трекере дефектов, вики, форуме и т. Д., Но он глубоко врезан в коде. Мне обычно приходится выделять фрагмент кода, нажимать - до тех пор, пока отступы не станут такими плохими, а затем скопировать / вставить, а затем восстановить код. Это становится несколько болезненным.

Существует ли инструмент, который может удалять вкладки перед каждой строкой? Обратите внимание, что я не хочу удалять все вкладки из всех строк, просто то же самое предыдущее количество вкладок из каждой строки. Я думаю, что некоторые функции Emacs могли бы сделать это.

Вот крайний пример:

До:

                            //This is usually some method in an anonymous inner class' anonymous inner class.
                            @Override
                            public void method(){
                                doSomething();
                            }

После того, как:

//This is usually some method in an anonymous inner class' anonymous inner class.
@Override
public void method(){
    doSomething();
}

Обратите внимание, что у doSomething () все еще есть одна вкладка перед ним.

Ответы [ 8 ]

40 голосов
/ 14 января 2010

Выбор прямоугольника - мой предпочтительный способ сделать это.

Поставьте себя в начале первой строки, C-пробел , перейдите на последнюю строку и конец отступа, который хотите удалить, и Cx r k (прямоугольное убийство). Это делает это.

13 голосов
/ 14 января 2010

Фактический метод сделать это в Emacs - использовать эту комбинацию клавиш.

Сначала выберите раздел, из которого вы хотите удалить вкладки.

Вы можете выбрать весь буфер:

CTRL + x h

Или, если вы просто хотите, чтобы регион просто установить отметку CTRL + ПРОБЕЛ , где вы хотите начать, а затем перейдите к месту, где вы хотите закончить.

Затем удалите пробелы, для 10 символов пробела сделайте это:

CTRL + - 1 0 CTRL + x TAB


Так как это довольно большое, я сломаю его для вас.

1) Сначала мы даем команду с отрицательным аргументом:

(отрицательный аргумент ARG)

kbd ярлык: CTRL + -

2) Далее введите числовой аргумент, в данном случае число 10:

1 0

3) Затем мы вызываем команду indent-жестко

(абзац с жестким отступом ARG)

kbd ярлык: CTRL + x TAB

Итак, мы передаем аргумент -10 команде indent-hardly, и в результате 10 пробельных символов будут удалены из начала каждой выбранной строки, в этом случае мы имеем выбран весь документ ( CTRL + x h ), поэтому 10 строк пробела будут удалены из начала каждой строки всего документа.

Если конкретная строка имеет менее 10 пробелов, она удалит только столько пробелов, сколько возможно, если пробелов больше 10, то некоторые могут остаться после ее завершения.

В вашем примере похоже, что у вас около 30 пробелов, так что это должно сработать:

CTRL + - 3 0 CTRL + x TAB

Попробуйте большее число, если хотите удалить больше.

7 голосов
/ 14 января 2010

Если у вас правильные настройки c-стиля в emacs, то просто выделите фрагмент и нажмите C-M-\, чтобы сделать правильный отступ (если вы находитесь в режиме c ++).

1 голос
/ 23 марта 2017

Самый простой ответ, я думаю. , сделать отступ для выбранного региона на 4:

C-u -4 C-x TAB

Это простая команда отступа региона с отрицательным аргументом. например, этот регион отступов на единицу:

C-x TAB

https://www.gnu.org/software/emacs/manual/html_node/emacs/Indentation-Commands.html

1 голос
/ 14 января 2010

Если вы точно знаете, сколько табуляторов имеют префикс каждой строки (как вы указали), вы можете использовать простой query-replace-regex для замены "^\t\t\t...\t" на "".

1 голос
/ 14 января 2010

Метод, который я использую в Kedit (который позволяет редактировать столбцы), - пометить первый символ первого столбца и строки с помощью Alt - B , расположите курсор на последнюю строку и символ, который я хочу удалить, Alt - B снова и затем Alt - G . Он ушел и до сих пор имеет все отступы за пределами удаленных столбцов.
В SQL Server это проще, пометьте блок и нажимайте Shift-Tab, пока код не будет там, где я хочу.

0 голосов
/ 14 января 2010

Используйте регулярное выражение для удаления начальных пробелов.

В Emacs:

C-M-%^<TAB><TAB><TAB><ENTER><ENTER>!

В Vim:

:%s/^\t\t\t//g
0 голосов
/ 14 января 2010

В vi это просто << смещение влево на одну ширину отступа, поэтому для удаления отступа в 10 строк вы должны сделать 10<<.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...