Подтвердить что ты не робот

Необязательные фрагменты кода

Есть моменты, когда у меня есть фрагмент кода, который я хочу публиковать на трекер-дефекторе, вики, форуме и т.д., но он глубоко отступом в коде. Обычно мне нужно выделить фрагмент кода, нажать <shift> - <tab> , пока отступы не будут такими плохими, затем скопируйте/вставьте и затем верните код. Это становится несколько болезненным.

Есть ли инструмент, который может удалять вкладки перед каждой строкой? Обратите внимание, что я не хочу удалять все вкладки со всех строк, как и предыдущее количество вкладок из каждой строки. Я думаю, что некоторые функции 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() все еще имеет перед собой одну вкладку.

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

CTRL + x h

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

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

CTRL + - 1 0 CTRL + x TAB


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

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

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

kbd ярлык: CTRL + -

2) Затем поставьте числовой аргумент, в этом случае число 10:

1 0

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

(отступ-жестко START END ARG)

kbd shortcut: CTRL + x TAB

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

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

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

CTRL + - 3 0 CTRL + x TAB

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

В Emacs:

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

В Vim:

:%s/^\t\t\t//g

Ответ 7

Простейший ответ я думаю., к выделенному региону UN-отступ на 4:

C-u -4 C-x TAB

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

C-x TAB

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

Ответ 8

В vi это просто << для сдвига влево на одну ширину отступа, так что для неинъекционных 10 строк вы бы сделали 10<<.