Выполнять собственные команды над открытым файлом в less. Возможно ли это?

Выполнять собственные команды над открытым файлом в less. Возможно ли это?

Мне было интересно, можно ли будет запускать собственные команды поверх lessкоманды. Под этим я подразумеваю возможность открыть файл lessи затем запустить какую-то свою команду поверх того, что я вижу (или даже над всем файлом, если это необходимо), сохраняя при этом экран таким, какой он есть. Например, я хотел бы иметь возможность запускать различные скрипты, которые будут раскрашивать то, что я вижу в данный момент, разными способами или показывать/скрывать определенные строки в файле.

Я знаю, что могу каждый раз делать что-то новое, cat <file> | my-script | less -Rно это не дает мне того опыта, который lessдает редактор.

решение1

Вы можете использовать |команду в less для передачи файла через другую программу.

  1. Нажимать |.
  2. Введите букву знака или ^или $или ..
  3. Введите команду оболочки для выполнения.
  4. Нажимать Enter.

Только часть файла между текущей позицией и меткой передается по конвейеру. Метка может быть либо ^или , $что означает начало и конец файла соответственно, либо позиция, заданная командой m. Текущая позиция — это строка на экране, если метка находится перед ней, и строка внизу экрана в противном случае. В частности, чтобы передать по конвейеру весь файл, используйте <|$mycommandили , >|^mycommandчтобы установить позицию на один конец файла, а метку — на другой конец. Чтобы передать по конвейеру только те строки, которые отображаются на экране, используйте метку ..

Вывод команды не останется на экране; если вы хотите просмотреть вывод с помощью less, вам нужно будет запустить другой экземпляр, например rot13 | less. Когда вы выйдете из второго экземпляра less, вы вернетесь к первому. Невозможно заменить содержимое текущего экземпляра данными, переданными из него. Чтобы увидеть цвета, не забудьте запустить less -R.

Связанный контент