Как создать макрос в Notepad ++, который сохранит файл под другим именем?

Как в Notepad ++ создать макрос, который сохранит текущий файл под другим именем?

Когда я использую средство записи макросов в Notepad ++, кажется, что он не записывает никаких Save операция.

В идеале я хотел бы, чтобы Notepad ++ сохранял текущий файл в том же месте, где он был открыт, но удалял последние 9 символов в имени файла. Например, если текущий файл:

c:foobar123456789.c

Я хотел бы, чтобы макрос Notepad ++ сохранил его как:

c:foobar.c

(перезапись любого файла с таким именем)

Это идеальная цель, но даже если я смогу просто заставить макрос Notepad ++ приблизиться к этому, это будет лучше, чем выполнение этой операции вручную.

1 ответ
1

Вы можете запустить скрипт Python в плагине PythonScript.

Если он еще не установлен, выполните следующие действия. гид

Создайте скрипт (Плагины >> PythonScript >> Новый скрипт)

Скопируйте этот код и сохраните файл (например replace.py):

import re

# Define the new filename
newFilename = notepad.getCurrentFilename()

# remove up to 9 characters before extension
newFilename = re.sub(r'.{1,9}(?=.w+$)', '', newFilename)

# Save current file with new name
notepad.saveAs(newFilename);
  • Откройте файл, который хотите изменить
  • Запустите скрипт (Плагины >> PythonScript >> Скрипты >> заменить)
  • Выполнено

Объяснение регулярного выражения:

.{1,9}          # 1 upto 9 any characters
(?=             # positive lookahead, make sure we have after (without capturing)
    .              # a dot
    w+             # 1 or more word characters
  $               # end of string
)               # end lookahead

Если там есть всегда 9 знаков, которые нужно удалить, используйте .{9} вместо .{1,9}

  • Большое спасибо. Выглядит отлично. Проголосовали. Сценарий легко назначить сочетанию клавиш, но можно ли его запустить как часть макроса (вероятно, последняя команда в макросе)?

    — RockPaperLz — Маска или шкатулка
    4 часа назад

  • @ RockPaperLz-MaskitorCasket: Пожалуйста, рад помочь. Я не пробовал запускать его в макросе, но уверен, что это можно сделать.

    — Тото
    4 часа назад

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *