Как отформатировать JSON из буфера обмена одной командой: улучшаем трюк с jq

Using jq to format JSON on the clipboard

Автор делится полезным трюком: использование jq для форматирования JSON, скопированного в буфер обмена, и возврата результата обратно. Он адаптирует команду для Linux (заменяя pbcopy/pbpaste на xclip) и исправляет недостаток: если в буфере не JSON, команда затирает его пустой строкой. Добавляя проверку ошибок, он делает команду безопасной: она форматирует JSON, если это возможно, и оставляет содержимое без изменений в противном случае.

Теперь jsontidy отформатирует всё, что находится в буфере обмена, если это можно распарсить как JSON, а в противном случае оставит его как есть.
  1. 1-more

    Я часто делаю такое и использую `pbpaste | sed s/^ // | pbcopy` и тому подобное. Мне так проще. Что приятно в raycast как менеджере буфера обмена для macOS, так это то, что то, что вы последним выбрали через Cmd-Shift-V, становится выводом `pbpaste`. Не совсем уверен, как на это влияет копирование изображений.

  2. _flux

    Я использую похожий подход для исправления содержимого буфера обмена с помощью

    tr '\n' ' ' | sed 's/\t/ /g; s/ */ /g'

    Но также я в какой-то момент перешел на xsel, так как xclip, похоже, хуже справляется с юникодом. Возможно, с тех пор xclip уже исправили.

  3. bilkow

    Отлично! Я сделал эту версию для `fish` и `wl-clipboard`:

    function clipboard-format-json

    # Вдохновлено https://chris48s.github.io/blogmarks/posts/2021/jsontidy/

    if set -l formatted "$(wl-paste | jq '.')"

    wl-copy $formatted

    end

    end

    Сохранив это в .config/fish/functions/clipboard-format-json.fish, оно должно сразу заработать

Ещё за этот день

2026-09-02