Xcodeでホットキーを「カーソルがある行を削除する」ようにマップする方法を探しています。テキスト キー バインドに「行末まで削除」と「行頭まで削除」が見つかりましたが、何を選択しても行を完全に削除する方法がありません。TextMate にはこの機能が Ctrl+Shift+D にマッピングされており、可能であれば同じものが欲しいです。何か案は?
8 に答える
助けてくれてありがとう、アシュリー。いくつかの実験の後、お気に入りの TextMate コマンド (行の複製、行の削除) をマップしました。ファイル~/Library/KeyBindings/PBKeyBinding.dictを作成し、以下を追加しました。
{
"^$K" = (
"selectLine:",
"cut:"
);
"^$D" = (
"selectLine:",
"copy:",
"moveToEndOfLine:",
"insertNewline:",
"paste:"
);
}
追加された「deleteBackward:」は、行の内容を削除した後に 1 行をバックアップします。おそらく「selectLine:」も使用できます。
私はいつも同じ xcode で作業しているわけではないので、スクリプトをインストールしたくありません。
Xcode はいくつかの emacs コマンドのサブセットを使用します。このアプローチを使用して、行をすばやく削除します。^k (control-k) は、カーソルから行末までを削除します。2 回実行すると、キャリッジ リターンも削除され、次の行が使用されます。^a 行頭に移動します。
したがって、行全体を最初から削除するには、^a^k^k を使用できます。
これに対する解決策を探していて、Ashley Clark のものを試してみましたが、delete Line と呼ばれる付属のユーザー スクリプトを使用するより簡単なオプションがあることがわかりました。
- 「ヘルプ」の左側にスクロールのような奇妙なメニューを開きます。
- [ユーザー スクリプトの編集...] を選択します。
- [キー バインディング] タブをクリックします。
- テキストセクションを展開します
- [行の削除] の横にある ⌘ 列をダブルクリックし、ホットキーを入力します。他のコマンドから盗んだことを警告するかもしれませんが、それは問題ありません。
終わり!私のような Eclipse ジャンキーであれば、Move Line Up と Move Line Down についても同じことができます。
<key>Custom Keyword Set</key>
<dict>
<key>Delete Current Line In One Hit</key>
<string>moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:</string>
</dict>
ファイルIDETextKeyBindingSet.plistにカスタマイズした辞書を作成することをお勧めします。
そう:
- Xcode を閉じます。
- ターミナルを開きます。
- sudo nano /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist
- 最上部のコードなど、新しいカスタム セクションを追加します。
- Xcode を保存、終了、および開く。
- [Xcode > 設定 > キーバインド]
- 「削除..」を検索し、新しいショートカットを作成します。
最新の Xcode (私がそうでした) で問題が発生している場合、Xcode 7.2 でこれを解決するには、OpenaがここでスクリーンショットまたはVelthune の回答を介してテキスト形式で言及したことを実行します。より直接的なコマンドが必要だったので、コマンドを次のように単純化しました。
selectLine:, delete:, moveToBeginningOfLine:
もちろん、Xcode の Preferences >> Key Bindings で、Key 列の下にあるコマンドをダブルクリックして、Ctrl+Shift+D の独自のバインドを指定できます。
これは私にとってはうまくいきます(Xcode 4.4.1):
ここで説明されているのと同じ手順: Xcode duplicate line (Halley's answer)
しかし、代わりに:
selectLine:、copy:、moveToEndOfLine:、insertNewline:、paste:、deleteBackward:
使用する:
selectLine:、moveToBeginningOfLine:、deleteToEndOfLine: