Xcode7でオリジナルショットカットキーを作成

はじめに
---
普段Atom等のエディターを使っていてよく使うショットカットキーがXcode7にはなかった(自分が知らないだけかも)ので参考サイトを見ながら自分で作成してみました。備忘録として書き記します。
<br>
欲しいショートカットキー
---
1.行の削除
2.行の入れ替え（カーソルがある行を上下へ移動）
3.行の複製
4.カーソルの位置を問わず改行
<br>
設定方法
---

1.Finder を起動して <code>Command</code> ＋ <code>Shift</code> ＋ <code>u</code> 
ユーティリティーディレクトリーが開かれるので、ターミナルを選択して起動。



下記のコマンドをターミナルにコピペ。

```
cp /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions
/A/Resources/IDETextKeyBindingSet.plist ~/Desktop/

```

<img width="130" alt="スクリーンショット 2016-08-12 19.46.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/134872/4654fef7-00ae-5850-6241-ee46695b0f5b.png">

デスクトップに上記のファイルが作成されます。  
※編集権限が必要なので、一度デスクトップに設定ファイルをコピーしてきて編集します。
<br>

2.1で作ったファイル（IDETextKeyBindingSet.plist）を適当なエディターで開きます。
  (ここではAtomで開いています。https://atom.io/)

<img width="928" alt="スクリーンショット 2016-08-14 19.48.37.png" src="https://qiita-image-store.s3.amazonaws.com/0/134872/fee348bd-7dc0-9aed-3d10-7e46dabebfbc.png">

ファイルの中身はXML形式のデータになっています。
開いたファイルの一番したのほうに(一番下にある`</dict>`タグの一行上に)下記に
記述したコードをコピペします。
 ・`<key>`タグはコマンドの名前
 ・`<string>`タグは実現したい機能の命令

```

    <key>Original Direction</key>
    <dict>
        // 行の削除
        <key>Delete Line Original</key>
        <string>selectLine:, delete:</string>
        // 行の複製
        <key>Duplicate Line Original</key>
        <string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:</string>
        // 行を上に移動
        <key>Move Line Up Original</key>
        <string>selectParagraph:, cut:, moveBackward:, moveToBeginningOfParagraph:, paste:, moveBackward:, moveToBeginningOfParagraph:</string>
        // 行を下に移動
        <key>Move Line Down Original</key>
        <string>selectParagraph:, cut:, moveToEndOfParagraph:, moveRight:, paste:, moveBackward:, moveToBeginningOfParagraph:</string>
        // カーソルの位置を問わず改行
        <key>Continue Newline Original</key>
        <string>moveToEndOfLine:, insertNewline:</string>
    </dict>
```

編集が完了したら、デスクトップにあるファイル（IDETextKeyBindingSet.plist）を
元の場所に戻します。

1の手順でターミナルを開き下記のコマンドをコピペします。

```
sudo cp ~/Desktop/IDETextKeyBindingSet.plist /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions
/A/Resources/IDETextKeyBindingSet.plist 
```

※ここで編集したファイルはXcodeをバージョンアップした際に、デフォルトの
状態に戻ってしまうようなので、どこかにバックアップとして保存しておきます。

3.Xcodeを起動して、キーバインドの設定

Xcodeを起動して<code>command</code>+<code>,</code>で設定画面を開き
Key Bindingsを選択

![スクリーンショット 2016-08-14 20.32.30.png](https://qiita-image-store.s3.amazonaws.com/0/134872/eec4170d-01c5-acd0-1bfc-1f6014988548.png)

Key Bindingsを選択し、下のほうへスクロールすると先程作成した
Original Directionという項目があるので
それぞれのCommandに任意のKeyを設定する。

ここでは
・Move Line Up Original(カーソルがある行を上へ)
<code>command</code>+<code>option</code>+<code>shift</code>+<code>↑</code>

・Move Line Down Original（カーソルがある行を下へ）
<code>command</code>+<code>option</code>+<code>shift</code>+<code>↓</code>

・Delete Line Original(カーソルがある行の削除)
<code>command</code>+<code>D</code>

・Continue Newline Original(カーソルの位置を問わずに改行)
<code>shift</code>+<code>enter</code>

・Duplicate Line Original（カーソルがある行の複製）
<code>command</code>+<code>shift</code>+<code>V</code>


おわりに
---
カーソルの位置を問わずに改行などは、特に重宝しています。
任意のKeyを設定する際に、デフォルトで設定されているKeyと同じKeyを設定しようとすると、Xcodeが警告を出します。使わないKeyならデフォルトKeyを削除してしまっても構いませんが、デフォルトKeyを削除、変更する際はよく確認してから編集しましょう。
一度いつのまにか、deletekeyに違うKeyが設定されていて泣きをみました・・・。
下記のサイトを参考にさせていただきました。ありがとうございます。

参考サイト
---
http://matome.naver.jp/odai/2139467376649890801