Мне нужен способ удалить ведущие отступы (табуляции и пробелы) из данных, скопированных в буфер обмена из Notepad ++.
Данные в самом документе Notepad ++ должны иметь эти ведущие отступы, а данные, скопированные в буфер обмена, не должны.
Такое поведение должно инициироваться только CTRL + C и только когда я нахожусь внутри Notepad ++.
Вот что происходит в Notepad ++, когда я регулярно отмечаю текст мышью:
Вот что должно быть в буфере обмена после того, как я регулярно отмечаю текст и копирую его:
Примечания:
- Изображения только для того, чтобы лучше проиллюстрировать мою потребность - мои реальные коды длиннее.
- Я также спросил об этом здесь .
- Я спрашиваю об этом, потому что не могу вставить блоки кода с отступом в терминал Linux, если эти кодовые блоки включают в себя
cat
heredocuments (имеет отношение к обработке разделителей heredocument, длинная история).
windows-10
notepad++
clipboard
JohnDoea
источник
источник
:set paste
.cat
heredocs - это так .Ответы:
Рассмотрим следующий скрипт AutoHotKey (AHK). См. Учебное пособие по AutoHotkey и документацию для более подробного объяснения сценариев AutoHotkey.
После установки AutoHotKey нажмите Ctrl+ Shift+ cили xв Блокноте ++, чтобы скопировать (или вырезать) в буфер обмена с обрезанными линиями.
Примечание: я использовал Ctrl+, Shiftчтобы вы все еще могли использовать оригинальную копию и вырезать только с помощью Ctrl. Если вам не нравится это поведение, просто удалите
+
в обоих+^c::
и+^v::
.Смотрите комментарии (начиная с
;
) для объяснения. Как и при любом кодировании, лучше оставить в комментариях, чтобы лучше понять сценарий, когда вы вернетесь к нему позже.источник
ctrl+z
чтобы извлечь удаленный контент. Это немного проблематично. Я понимаю, что-то вроде следующего кода может быть использовано?if !LangID := EN { return }
, Добавление его в начало скрипта привело к ошибке, а завершение скрипта с аналогичной версией плюсelse { return }
после закрытия не было ошибки, но не работало.TrimClipboard(){ ... }
внутриif
оператора. Поместитеif
оператор внутри функции или вокруг командSend, ... TrimClipboard()
Просто используйте
Alt + Mouse dragging
или,Alt + Shift + Arrow keys
чтобы выбрать столбец, а затемCtrl+C
скопировать столбец.Посмотрите этот пример: https://notepad-plus-plus.org/fr/features/column-mode-editing.html
Редактировать:
Мы также можем выбрать весь столбец или даже более одного столбца, также мы можем выбрать одну или несколько строк.
Вот простой способ сделать это:
Щелчок левой кнопкой мыши в начале требуемого выделения.
Перейти к месту, где должен быть остановлен требуемый выбор
Переместите курсор в это второе и последнее местоположение, используя:
ALT
+SHIFT
ключи иleft click
, одновременно, чтобы выбрать нужные столбцы и строки.Надеюсь это поможет
источник
Вот портативное решение с использованием Java
Первый шаг, конечно же, установка Java
Затем вставьте следующее в файл с именем
Trimmer.java
в вашем пользовательском каталоге (C: \ Users \ your_name)Затем откройте командную строку и введите
Теперь у вас должен быть файл Trimmer.class в той же папке. Вы можете удалить файл Trimmer.java прямо сейчас.
На данный момент у нас есть программа, которая удалит все начальные и конечные пробелы из каждой строки в буфере обмена, но нам все еще нужен способ ее удобного запуска. Давайте сделаем горячую клавишу для этого!
Сначала создайте ярлык для командной строки (щелкните правой кнопкой мыши C: \ Windows \ System32 \ cmd.exe)
Затем щелкните правой кнопкой мыши этот ярлык и выберите «Свойства». В этом окне нам нужно сделать несколько вещей. На вкладке «Ярлык» должна быть опция «Цель», которая говорит что-то вроде
Измени это, чтобы сказать
Это заставит командную строку просто запустить нашу программу и завершить работу при использовании этого ярлыка.
Затем нажмите на поле «Сочетание клавиш» и нажмите горячую клавишу, которую вы хотите запустить для замены текста. Я рекомендую Ctrl+ Shift+ Cдля простоты использования!
Наконец, измените опцию «Run» на «Minimized», так как мы не хотим, чтобы окно мигало на экране каждый раз, когда мы используем ярлык.
После всего этого вы сможете использовать следующий рабочий процесс:
источник
Может быть, я что-то упускаю, но все остальные ответы, кажется, слишком усложняют решение. Если я правильно понял, все, что вы хотите сделать, это удалить начальные пробелы (пробелы или табуляции), и у вас есть данные, доступные в Notepad ++
В этом случае решение простое. Откройте свой файл в
Notepad++ >> Search >> Replace... or Ctrl+H
Найдите что :
^( *)[ ]|^\t*
Заменить на : оставьте пустым
Чтобы найти все начальные пробелы, которые мы используем,
^( *)[ ]
и чтобы найти все ведущие вкладки, мы используем их^\t*
как таковые, чтобы найти все начальные пробелы или все ведущие вкладки, которые мы используем, или оператор|
. Убедитесь, что в окне замены выбрано « Регулярное выражение» .Это должно закончиться довольно быстро, даже если это большой файл. Закройте окно замены и просто выберите все (Ctrl + A) >> Копировать (Ctrl + C)
источник
Мой ответ основан на ответе Стивена, который я пометил как правильный (но у меня было несколько проблем с ним, и я попытался редактировать, хотя мое редактирование было отклонено).
Это код, который работал лучше всего для меня:
Отличия от оригинального кода Стивена:
Send, ^c
иSend, ^x
наSend, ^{sc02e}
иSend, ^{sc02d}
, соответственно. Это предотвращает ошибку удаления текста в режиме на иврите и в некоторых других режимах, кроме английского.источник