web-dev-qa-db-ja.com

Xcodeの複製/削除行

Eclipseから来て、常に行を複製するために使用されていたので、Xcodeにはそのような機能がないことがわかりました。それともそうですか?

システム全体のキーバインドを変更することは可能ですが、それは私が望んでいることではありません。

122
Summer

全体のポイントは、Cmd-C/Cmd-Vショートカットを使用しないことです。 IntelliJからも同じ問題があり、Cmd-Dで行を複製してCmd-Yでそれらを削除できるので、時間を大幅に節約できます。

それ以来ずっと私を悩ませてきました。ただし、他の誰かが ソリューション を見つけたようです。

要するに、次の内容のファイル~/Library/KeyBindings/PBKeyBinding.dictを作成し、Xcodeを再起動します。

{
    "^$K" = (
        "selectLine:",
        "cut:"
    );

    "^$D" = (
        "selectLine:",
        "copy:",
        "moveToEndOfLine:",
        "insertNewline:",
        "paste:",
        "deleteBackward:"
    );
}

これにより、2つのショートカットが作成されます。 Ctrl-Shift-K 現在の行を削除するため Ctrl-Shift-D 現在の行を複製します。これは、カスタムキーバインディングを使用している[〜#〜] not [〜#〜]である場合にのみ動作することに注意してください。 Xcodeで設定します。 「XCode Default」に切り替えると、動作するはずです。 Snow LeopardのXCode 3.2でテスト済み。

Mac OS Xのキーバインディングの詳細: http://funkworks.blogspot.it/2013/03/republishing-of-wwwerasetotheleftcompos.html

90
Frank Schröder

行を削除するにはCtrl-A行の先頭に移動してからCtrl-Kそれを削除し、別の時間Ctrl-K空行を削除します。 (私はXcodeをあまり頻繁に使用しませんが、EmacsやEmacsのようなバインディングを持つ他のテキスト入力ではこれに慣れており、Xcodeでも動作するようです。)

そして、行を複製するために:そのためのコマンドを持つ多くのプログラムを知りませんが、通常はXcodeでコピー+貼り付けを使用しますそれはCUAのようなものです:Ctrl+A行の先頭に移動するには、Shift+選択して、コマンド +C コピーしてコマンド + *V 2回貼り付けます(1回行を上書きし、1回追加します)。

(多くの場合、さまざまなプログラムでテキストを常に入力および編集し、テキスト入力を少し修正している間、愚かなウィジェットで気を散らさなければならないことに時々腹を立てます。と習慣)

100
Tom Alsberg

Eclipse CTRL + Dのような行を削除します(Xcode 4.5.1でテスト済み):

まず、これらの権利を変更します。

Sudo chmod 666 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist

Sudo chmod 777 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/

開いた /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist自身でXcodeを使用し、この新しいエントリを追加します。

deleteToBeginningOfLine:, moveToEndOfLine:, deleteToBeginningOfLine:, deleteBackward:, moveDown:, moveToBeginningOfLine:

enter image description here

Xcodeを再起動し、Xcode> Preferences> KeyBindingsを開きます。マクロを見つけて、ショートキーを定義します。

enter image description here

76
Opena

キーバインディングソリューションを試しましたが、動作させることができませんでした。ただし、XCodeキーバインディングの編集は魅力のように機能します。これが私が作った方法です。

このソリューションは、クリップボードの内容を変更しません!

XCodeキーバインドを開く:

alt text

ユーザースクリプトの編集ダイアログ:

  1. 「行を下に移動」スクリプトを複製し、名前を変更します
  2. 「Move Line Down.scpt」ファイルを複製し、スクリプトの名前を変更し、スクリプトエディターでファイルを選択(ダブルクリック)します
  3. スクリプトを編集し(「AppleScript Editor」を開きます)、「delete(段落startLineからendLineまで)」パッセージを削除します。
  4. XCodeを再起動したくない場合は、スクリプトを削除して再度追加する必要があるようです。 「出力」が「出力を破棄」に設定されていることを確認してください。そうしないと、ソースファイルに「(null)」が含まれます。
  5. 正しい行が選択されるように、スクリプトを少し変更しました。

ラインアップの複製:

using terms from application "Xcode"
tell first text document
    set {startLine, endLine} to selected paragraph range

    if startLine > 1 then
        set theText to (paragraphs startLine through endLine)
        set theText to (theText as string)
        make new paragraph at beginning of paragraph (startLine) with data theText
        set selected paragraph range to {endLine + 1, endLine + endLine - startLine + 1}
    else
        beep 1
    end if
end tell
end using terms from

重複行:

using terms from application "Xcode"
tell first text document
    set {startLine, endLine} to selected paragraph range
    if endLine < (count paragraphs) then
        set theText to (paragraphs startLine through endLine)
        set theText to (theText as string)
        (* delete (paragraphs startLine through endLine) *)
        make new paragraph at beginning of paragraph (endLine + 1) with data theText
        set selected paragraph range to {startLine, endLine}
    else
        beep 1
    end if
end tell
end using terms from

alt text

9
leviathan

OK、だから私はしばらくこれを動かしていたが、突然壊れた。ここでさまざまな投稿を組み合わせて、XCode 6.3.1で機能するソリューションを見つけました。

  1. Finderで/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/に移動します。

  2. resourcesという名前のフォルダーを見つけます。右クリックして[情報を見る]を押し、共有とアクセス許可の設定のロックを解除して(ロックを押す)、すべての読み取りと書き込みに設定します。

  3. フォルダーに入り、ファイルIDETextKeyBindingSet.plistを見つけます。右クリックして[情報を見る]を押し、共有とアクセス許可の設定のロックを解除して(ロックを押す)、すべての読み取りと書き込みに設定します。

  4. XCodeでファイルを開きます(デフォルト)

  5. 削除を見つけ、右クリックして新しい行を追加します。たとえば、Delete Lineという名前を付けます。値フィールドにselectLine:, deleteBackward:と入力します。 (これは、重複する行に対しても実行できます:selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:

  1. XCodeを起動し、設定/キーバインドに移動して、行の削除を検索します。ショートカットを設定します。楽しい。
6
Joakim

Xcode 4では、キーバインディングを使用してこれを実装するのが難しくなるため、 Keyboard Maestro を使用することに頼りました( Quickeys もうまく機能するはずですが、Lionと完全には互換性がありません)。たとえば、キーボードマエストロのショートカット(here-⇧-Dにバインド)は次のとおりです。

http://bit.ly/thC6yf

6
raheel

私はこのスレッドがかなり古いことを知っていますが、 BetterTouchTool を使用して別のソリューションを見つけました。Ctrl+ACtrl+KCtrl+K BTTで次のように設定することにより、1つのショートカットでシーケンスを作成します。

enter image description here

(2番目と3番目のショートカットを追加するには、[追加のアクションボタンを添付]を使用します)

PS:Cmd+Dは行の削除です^^

5
Laurent Meyer

ユーザースクリプトを使用します。

行を移動および削除するスクリプトはまだあります。これらのスクリプトのキーバインドを定義する必要があります(メニュースクリプト-> ユーザースクリプトの編集...、xCode 3.2の下)。

行を複製するには、独自のスクリプトを作成する必要があります。しかし、それは非常に簡単です! 「行を下に移動」スクリプトを複製し、選択したテキストを削除する行を削除します。

delete (paragraphs startLine through endLine)
4
Damien Flament

トリプルクリックして行全体を選択し、command-cを選択してcommand-vを2回クリックして複製します。これはXcode関数ではなく、OSの一部にすぎません。

4
Paul Tomblin

here を介したXCode4行複製の解決策があります。

また、plistに行の削除を追加しました。

<key>Remove Line</key> <string>selectLine:, deleteBackward:</string>

3
MartinMcB

Xcodeを変更する必要はありません。 Xcode拡張機能を使用できます Linex

enter image description here

3
Aladin

これは BetterTouchTool を使用して可能です。 CMD + Dは行を複製します。次のような新しいショートカットを作成します。

enter image description here

[追加のアクションボタンを添付]を使用して、2番目と3番目のショートカットを追加します

2
Adam Studenic

damien.flament による解決策はうまく機能し、「(出力出力を破棄)」にoutputを設定する必要があるかもしれません

Userscripts setting

追伸:彼の答えをコメントする方法がわかりません。

2
palaniraja

Xcode 10.1で行を削除するには、以下のスクリーンショットの手順に従ってショートカットキーを追加してください。

enter image description here

2

上記のように、XCodeを閉じて、~/Library/Application Support/Xcode/Key Bindings/ <user>.pbxkeysセクションの<dict>内の<key>text</key>に以下を挿入します。

    <key>^D</key>                                                                                                      
    <array>                                                                                                            
        <string>moveToLeftEndOfLine:</string>                                                                               
        <string>deleteToEndOfLine:</string>                                                                                      
    </array>                                                                                                           
    <key>^K</key>                                                                                                      
    <array>                                                                                                            
       <string>selectLine:</string>                                                                               
       <string>copy:</string>                                                                                     
       <string>moveToEndOfLine:</string>                                                                          
       <string>insertNewline:</string>                                                                            
       <string>paste:</string>                                                                                    
       <string>deleteBackward:</string>                                                                           
    </array>

XCodeを起動してお楽しみください CTRL-SHIFT-D そして CTRL-SHIFT-K
お望みならば CTRL-D そして CTRL-K、代わりにキー定義で^dおよび^kを使用します。ファイルに重複したキーバインディングがないことを確認してください。

XCode 3.2でうまく動作します

2
askh

Xcodeキーバインディングを既にカスタマイズしている場合は、ファイル~/Library/Application Support/Xcode/Key Bindings/<user>.pbxkeysを編集する必要があります。 2つの配列(上記)をRoot/text辞書に追加するだけです。

1
MonsieurDart

現在の行を削除する3つのステップ(長すぎますが、非常に高速です:D)

Cmd +  :行末に移動
Cmd + Delete :行頭まで削除
Delete :空行を削除

1
huync

Xcode 9.0を使用していますが、キーバインドはまだ機能していません。はぁ。

this Gist が非常に役立つので、今後の参考のためにここに再投稿しました。

  1. 開いた /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
  2. このファイルの一番下の</dict>
  3. Xcodeの設定->キーバインド->テキストタブ->に移動して、複製が表示されるまでスクロールします。
  4. [現在の行を複製]をクリックして、ショートカットを追加します。 Cmnd + D(重複するバインディングを解決します)
  5. Xcodeを開く

<key>Duplication</key> <dict> <key>Duplicate Current Line</key> <string>moveToBeginningOfLine:, deleteToEndOfLine:, yank:, insertNewline:, moveToBeginningOfLine:, yank:</string> <key>Duplicate Lines</key> <string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:</string> <key>Delete Line</key> <string>selectLine:, deleteBackward:</string> </dict>

1

XCodePlus削除行プラグインは、これを行うXCodeです。アルカトラズパッケージマネージャーが事前にインストールされています...

https://github.com/payliu/XcodePlus

0
Joakim

Xcode 6.1の場合、Xcode> Preferences> KeyBindings> Textに移動し、「行末まで削除」があり、必要なキーを割り当てます。

0
SpyZip

Xcode 9では、行を複製する組み込みの方法はまだありません。また、カスタムキーバインディングには問題があるようです。

更新: Xcode 10.0 beta 6(10L232m)は同じです。

0
erkanyildiz