改行をより適切に処理する更新:
function copy --description 'Trim new lines and copy to clipboard'
cat $argv ^/dev/null | while read -l line
set argv $argv $line
end
test -z "$argv"; and return
for i in $argv
echo -n $i
end | tr -d '\n' | pbcopy
end
これはかなりの挑戦でしたが、ちょっとした工夫で可能になりました。この関数は、説明したとおりに機能し、さらに 1 つの注意点がありますcopy
。引数を指定せずに記述すると、入力を無期限に待機します。
複数行のコピーを気にしない場合は、| tr -d '\n'
beforeread
を削除してからcopy
も機能します。読み取りは改行で終了するためです。したがって、最初の改行まで自動的に受け入れられます。たとえばcopy\nme
、copy
.
コード:
function copy --description 'Trim new lines and copy to clipboard'
cat $argv ^/dev/null | tr -d '\n' | read -l input
set -ql input; or set -l input $argv
if test -n "$input"
echo $input | tr -d '\n' | pbcopy
end
end
例:
➤ echo copy\nme | copy
Clipboard: copyme
➤ copy copy\nyou
Clipboard: copyyou
➤ echo | copy
Clipboard: copyyou
➤ copy
(Waiting for command indefinitely...)