【クリップボード・スニペット詳細解説】いまから始めるRaycast vol.２ 【生産性向上】

# はじめに
今回は前回の記事の続きとなります。
Raycastがそもそも何なのかわからない、という方はぜひ前回の記事を閲覧してみてください！

https://qiita.com/hikagami/items/d4b88d8e99d40dbf7287

## 今回紹介する内容
- Clipboard history (クリップボード機能)
- Snippets (スニペット機能)

今回は、この２つの機能について詳しく紹介していこうと思います。
これらの機能はRaycastにデフォルトで入っているため、拡張機能をインストールする必要はありません！

## Clipboard history (クリップボード機能)

数ある機能の中でも、最も高頻度で使う機能のうちの1つであろう`Clipboard history (クリップボード機能)`について紹介していきます。

### 機能概要
Raycastを起動して、`Clipboard history`を選んで使用します。

![スクリーンショット 2024-05-24 15.43.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2778030/61fbcea1-fe51-bf17-9f2f-29e1df6080ef.png)

ここには、今までにコピーしたものの履歴が並んでいます。
矢印キーで上下して、使いたい履歴の上で`Enter`することによって、その文言をコピーできます！

また、上部の検索バーで検索をかけることもできます。

### 仕様
対応する形式は現時点で**文字列・画像・リンク(URL)・ファイル・カラーコード**の5種類です。

画面右上部にプレビューが表示されます。
下部にはその項目に対するinformationが表示されており、
どのアプリでコピーしたものか、やテキストの場合それが何文字なのか、何単語なのかが表示されます。
簡易的な文字数カウンターとしても使用できますね。

ファイル・画像の場合、ファイルサイズを表示してくれたりもします。

### アクション
`⌘+K`でその項目に対してさまざまなアクションをすることができます。

- `Paste to ~~`
今アクティブなウィンドウに対してその項目を貼り付けます。

- `Copy to Clipboard`
貼り付けは行わず、クリップボードの先頭にコピーします。

- `Share`
名の通り共有ができる機能ですが、選択できるアプリがあまり多くないので使う機会は少ないかもしれません...

- `Append to Clipboard`
"こんにちは" というテキストが先頭(`⌘+V`で貼り付けされる状態)の時、
`Clipboard history`で"こんばんは"を選択すると、"こんにちは こんばんは"というテキストが先頭に追加されます。

- `Edit Content`
その名の通り、これを実行したテキストを編集できます。

- `Pin Entry`
いわゆる固定機能です。
ただ、固定するぐらい使うものなら後述するSnippet機能を使用した方がいいかもですね。

- `Save as Snippet`
名の通り、これを実行したテキストをSnippetへ登録するショートカットです。

- `Save as File`
実行したテキストをファイルとして保存できます。
スクリプトなんかをサイトからコピーした時、そのままファイルへ出力、何てことができますね。

- `Delete Entry`
実行した項目を履歴から削除します。

- `Delete Entries...`
これを選択すると、過去５、15、30分間の履歴を消すことができます。

- `Delete All Entries `
名の通り、全ての履歴を消すことができます。使用には注意です！


## Snippets (スニペット機能)
続いてはスニペット機能の紹介です。

### スニペットとは
例えば、`git commit -m "first commit"`と毎回タイピングするのが面倒だったとします。

スニペット機能を使用すれば、`gcm`という文字列を入力すれば`git commit -m "first commit"`と自動で展開されるようにできます。

### 機能概要
- `Create Snippet` (スニペットを作成)
- `Search Snippet` (スニペットを検索)
- `Export Snippet` (スニペットをエクスポート)
- `import Snippet` (スニペットをインポート)

の4つのコマンドがあります。

### 仕様
ここからは、４つそれぞれの仕様と使い方について紹介していきます。

#### Create Snippet (スニペットを作成)
スニペットを作成するコマンドです。
実行すると、以下のような画面が開かれます。

![スクリーンショット 2024-05-25 14.53.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2778030/8e8c2460-6b76-6680-12d1-1a4815d3e2e4.png)

- `Name` : スニペットに対する名前をつけます。スニペットを検索するときに使用します
- `Snippet` : Keywordを入力した際に展開されるテキストを入力します。前述のgitコマンドの例なら`git commit -m "first commit"`と入力します
- `Keyword` : このスニペットを発火させるキーワードを入力します。前述のgitコマンドの例なら`gcm`を入れます

また、`Snippet`には`Dynamic Placeholders`という機能があります。
これは、Snippetsを展開する際に一部を変更できたり、日付やクリップボードの内容を自動で挿入できたりする機能です。

かなり多機能かつニッチな機能もあるので、詳しくは以下のリンクから確認してください。

https://manual.raycast.com/dynamic-placeholders

今回は`{cursor}`と`{argument}`の二つだけを解説していきます

##### cursor
以下の画像のように、展開した後カーソルを移動させたい位置に`{cursor}`を置きます。
そうすると、keyword入力後に自動でカーソルが移動します。

![スクリーンショット 2024-05-25 16.11.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2778030/d06bbc3d-0a20-5167-69e5-10566df113e0.png)

`git commit -m ""`や`console.log()`のように、何かを追加で入力する必要があるスニペットを作るときに非常に便利な機能です。

##### argument
以下の画像のように、展開した後に追加で入力する必要がある箇所に`{argument}`を置きます。
`name="name"`は、必ず入力する必要はないですが、適当に名前をつけておくと後で便利です。

![スクリーンショット 2024-05-25 16.16.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2778030/aef52c71-a334-676c-d09f-e0a38a25f813.png)

`{argument}`を含めたスニペットを展開すると、実際に展開される前に以下のような画面が開きます。

![スクリーンショット 2024-05-25 16.20.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2778030/26fb1fe5-c5ca-80bd-971d-eee0ea38105e.png)

ここで`{argument}`の部分にテキストを挿入できるというわけですね。

`{cursor}`との使い分けですが、`{cursor}`はひとつしか設定できないのに対し、`{argument}`は複数設定ができます。

展開後に追加で挿入する部分が複数である場合には`{argument}`が便利、ということですね。

#### `Search Snippet` (スニペットを検索)
作成したスニペットを一覧で表示して、確認できるコマンドです。
既存のスニペットの編集や削除もここから行います。

![スクリーンショット 2024-05-25 16.50.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2778030/a1ba7082-5bb0-452b-6fb1-f3c06af30af9.png)

画像の通り、作成したスニペットが表示されています。

左側のリストには、`スニペットの名前 キーワード`のリストが表示されています。
右にはフォーカスされているスニペットの展開後のテキストや情報が表示されています。

##### アクション
クリップボードと同じく、`⌘+K`でその項目に対してさまざまなアクションをすることができます。

- `Paste to ~~`
今アクティブなウィンドウに対してその項目を貼り付けます。

- `Copy to Clipboard`
選択されているスニペットをクリップボードの先頭にコピーします。

- `Pin Snippet`
選択されているスニペットをリストの一番上に表示されるようにします。

- `Edit Snippet`
選択されているスニペットを編集します。

- `Duplicate Snippet`
選択されているスニペットを複製します。
その場で複製されるのではなく、中身をいじれるので既存のスニペットをもとに新しいスニペットを作成するときに便利な機能です。

- `Create Snippet`
新規のスニペットを作成します。

- `Shere Snippet`
選択されているスニペットをURLを通して他の人へシェアできます。
このアクションを起こすとブラウザが立ち上がります。その際URLにそのスニペットの情報がパラメーターに付与されているので、そのままURLをコピーしてメッセージアプリなどで他の人に送信します。

https://snippets.ray.so/shared?snippet=%7B%22text%22:%22git%20commit%20-m%20%5C%22%7Bcursor%7D%5C%22%22,%22keyword%22:%22gcim%22,%22name%22:%22git%20commit%22%7D

　　受け取る側は、サイト右上の`Add to Raycast`ボタンを押すことで自分のRaycastへ登録することができます。

- `Export Snippet`
選択されているスニペットをJson形式でエクスポートできます。
後述する`Export Snippet`コマンドとの違いは、アクションで起こす`Export Snippet`はその項目だけなのに対し、`Export Snippet`コマンドは全てのスニペットを出力する点にあります。

- `Import Snippet`
`Export Snippet`で作成されたJsonファイルからスニペットをimportできます。

- `Delete Snippet`
選択されているスニペットを削除します。

- `Delete All Snippet`
全てのスニペットを削除します。

#### `Export Snippet` (スニペットをエクスポート)
今ある全てのスニペットをJson形式でファイルに出力します。
バックアップや複数台Macがある場合に、スニペットを揃える目的として使用できます。

#### `Import Snippet` (スニペットをインポート)
`Export Snippet`で出力されたJsonファイルを選択してインポートします。
新しいMacへ移行した時などに便利です。

## おわりに
最後まで見ていただきありがとうございました！
次回のネタは未定ですが、 電卓機能やSearch Filesなどのビルトイン機能を紹介していく予定です！