Как отформатировать JSON из буфера обмена одной командой: улучшаем трюк с jq
Using jq to format JSON on the clipboard
Автор делится полезным трюком: использование jq для форматирования JSON, скопированного в буфер обмена, и возврата результата обратно. Он адаптирует команду для Linux (заменяя pbcopy/pbpaste на xclip) и исправляет недостаток: если в буфере не JSON, команда затирает его пустой строкой. Добавляя проверку ошибок, он делает команду безопасной: она форматирует JSON, если это возможно, и оставляет содержимое без изменений в противном случае.
Теперь jsontidy отформатирует всё, что находится в буфере обмена, если это можно распарсить как JSON, а в противном случае оставит его как есть.
- 1-more
Я часто делаю такое и использую `pbpaste | sed s/^ // | pbcopy` и тому подобное. Мне так проще. Что приятно в raycast как менеджере буфера обмена для macOS, так это то, что то, что вы последним выбрали через Cmd-Shift-V, становится выводом `pbpaste`. Не совсем уверен, как на это влияет копирование изображений.
- _flux
Я использую похожий подход для исправления содержимого буфера обмена с помощью
tr '\n' ' ' | sed 's/\t/ /g; s/ */ /g'
Но также я в какой-то момент перешел на xsel, так как xclip, похоже, хуже справляется с юникодом. Возможно, с тех пор xclip уже исправили.
- 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, оно должно сразу заработать