標準入力をクリップボードにコピーするAppleScript
うーむ…ありそうでなかった。もしかしたら再発明してしまったかも?
※と思ったらやっぱり ^_^;) Mac OS Xの標準で「pbcopy」というコマンドが入っていました。↓でもせっかく書いたので残しておきます。
#!/bin/sh pass="" while [ $# -gt 0 ]; do case $1 in -p) pass=yes ;; *) echo "usage: `basename $0` [-p]" exit 1 ;; esac shift done temp=`mktemp /tmp/clip.XXXXXXXX` if [ -n "$pass" ]; then tee $temp else cat > $temp fi echo " on run argv set posixPath to item 1 of argv set macPath to POSIX file posixPath set tempFile to open for access macPath without write permission set fileBody to read tempFile close access tempFile set the clipboard to fileBody end run " | osascript - $temp rm -f $temp
↑こういう風に貼り付けたいときに便利です。
[frsyuki@viver]$ cat ~/self/local/bin/clip | clip
↓クリップボードの内容を標準出力に出力するスクリプト。
#!/bin/sh while [ $# -gt 0 ]; do case $1 in *) echo "usage: `basename $0`" exit 1 ;; esac shift done temp=`mktemp /tmp/clip.XXXXXXXX` echo " on run argv set posixPath to item 1 of argv set macPath to POSIX file posixPath set tempFile to open for access macPath with write permission set fileBody to the clipboard write fileBody to tempFile close access tempFile end run " | osascript - $temp cat $temp rm -f $temp
vimな方は、↓こんなmapを~/.vimrcに書いておくと、Ctrl-Kでvisualモードで選択した行をクリップボードにコピーできます。
vmap <C-K> !clip -p<CR>
ただこのmapだと、「選択した範囲」ではなくて、「選択された文字を含む行全体」をコピーしてしまいます。行の途中までをコピーできない。なにかいい方法ありませんか?