VIM: поиск и замена по сценарию?

Этот вопрос был задан почти 2 года назад, но ответов нет. Поэтому я опубликую решение, которое я нашел недавно.

Удалить файл после вызоваdh _auto _install:

override_dh_auto_install:
    dh_auto_install
    find./debian -type f -name "LICENSE" -delete

Или переопределить другую директиву, которая вызывается после размещения файлов, но до сборки пакета. Вот как я впервые сделал это, переопределив директивуdh _md5sums:

override_dh_md5sums:
    find./debian/<package_name> -type f -name "LICENSE.txt" -delete
    dh_md5sums

Переопределение других директивdh_также может работать.

1
16.02.2020, 04:27
2 ответа

Вряд ли найдется какой-либо редактор, более подходящий для написания сценариев, чем Vim, так что ответ — громкое да .

Возможны несколько подходов:

  1. Как уже ответил @Angelo, вы можете просто указать команды Vim (Ex, чтобы быть точным; то есть все, что вы вводите после :и заканчиваете <Enter>в Vim )в файле scriptname.vim, а затем :source path/to/scriptname.vimдля их загрузки и выполнения. Хорошая вещь здесь в том, что вы можете просто оставить скрипт открытым, внести изменения и сохранить, а затем сразу же перезапустить его. С другой стороны, вызов не является коротким и красивым, и это плохо масштабируется. (Можно :sourceдругой сценарий из одного, но это действительно уродливо.)
  2. В качестве альтернативы,вы можете пропустить внешний файл и просто поместить команды в регистр (:help quote_alpha). Вы можете вставить регистр во временный буфер, отредактировать, а затем скопировать(скопировать )обратно в регистр и выполнить с помощью:@. Именованные регистры обычно автоматически сохраняются между сеансами, но вы также можете поместить их в свой .vimrc(, см. далее ), чтобы предотвратить перезапись макросов.
  3. Наиболее распространенным подходом является создание нового пользовательского сопоставления или команды . Сопоставления вызываются короткими нажатиями клавиш и согласуются с модальным редактированием Vim (, поэтому одна и та же клавиша (s )может выполнять разные действия в зависимости от режима ); они используются для часто выполняемых действий. Команды являются Ex-командами, поэтому вводить их дольше, но вы получите завершение в строке команды Vim -. Подробные инструкции по написанию отображений и команд см. в :help usr_40.txt. Обычно вы помещаете их в ваш центральный конфигурационный файл ~/.vimrc, после чего они становятся доступными сразу после запуска Vim. По сравнению с предыдущими подходами сопоставления и команды легко вписываются в Vim и могут быть легко вызваны, поэтому они отлично подходят для вещей, которые вам понадобятся снова и снова в будущем. Недостатком является то, что редактирование и перезагрузка более сложны (перезапуск Vim требует времени, перезагрузка в текущий сеанс требует немного больше усилий ).
  4. Если ваши расширения полезны в целом, вы можете превратить их в плагин (:help write-plugin), который затем можно будет легко использовать для всех установок Vim, опубликовать (на GitHub или vim.org). Доступно множество плагинов; так что ищите, прежде чем изобретать велосипед!
3
28.04.2021, 23:23

Вы также можете создавать сценарии vim -для использования вне vim.

Пример:

$ cat trim-spaces

#!/usr/bin/vim -s
:%s/[ \t\r]*$//
:%s/[ \t\r\n]*\%$/\n/
G
:r ! echo "\#last changed by $USER in :" `date`
:x
  • строка2 :удалить пробелы в конце строки
  • строка3 :удалить пустые строки в конце файла
  • строка4,5 :добавить строку «последнее изменение»

Далее мы можем

$ trim-spaces file1

для очистки файла1

0
28.04.2021, 23:23

Теги

Похожие вопросы