Xcode-Zeile duplizieren / löschen

128

Aus Eclipse stammend und immer wieder zum Duplizieren von Zeilen verwendet, ist es ziemlich seltsam herauszufinden, dass Xcode keine solche Funktion hat. Oder doch?

Ich weiß, dass es möglich ist, die systemweiten Tastenkombinationen zu ändern, aber das ist nicht das, wonach ich suche.

Sommer
quelle
Mögliches Duplikat von Xcode: Zeilen-
Hotkey löschen
Dieses Setup funktioniert für 9.2 stackoverflow.com/a/34195483/1348522
Zumry Mohamed

Antworten:

91

Der springende Punkt ist NICHT, die Verknüpfungen Cmd-C/ zu verwenden Cmd-V. Ich habe das gleiche Problem von IntelliJ, und es ist eine große Zeitersparnis, Zeilen nur mit zu duplizieren und mit Cmd-Dihnen zu löschen Cmd-Y.

Es nervt mich seitdem. Es sieht jedoch so aus, als hätte jemand anderes eine Lösung gefunden , die funktioniert.

Kurz gesagt, erstellen Sie eine Datei ~/Library/KeyBindings/PBKeyBinding.dictmit dem folgenden Inhalt und starten Sie Xcode neu.

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

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

Dadurch werden zwei Verknüpfungen erstellt: Ctrl- Shift- Kzum Löschen der aktuellen Zeile und Ctrl- Shift- Dzum Duplizieren der aktuellen Zeile. Bitte beachten Sie, dass dies nur funktioniert, wenn Sie KEINE in Xcode festgelegte benutzerdefinierte Schlüsselbindung verwenden. Wechseln Sie zu "XCode Default" und die Dinge sollten funktionieren. Getestet auf XCode 3.2 auf Snow Leopard.

Weitere Informationen zu Mac OS X-Tastenkombinationen: http://funkworks.blogspot.it/2013/03/republishing-of-wwwerasetotheleftcompos.html

Frank Schröder
quelle
5
Dies sollte die wahre Antwort sein. Übrigens - Wenn Sie die Verknüpfung cmd-d (Zeile löschen) aus Eclipse importieren möchten, müssen Sie zuerst die Verknüpfung Lesezeichen hinzufügen im Bearbeitungsmenü in XCode ändern
Chris R
@ Joshperry, irgendetwas, das mit Xcode 4+ funktioniert? Der DuplicateBefehl (in Edit -> Duplicate) scheint "immer" ausgegraut zu sein (und nicht zum Duplizieren von Zeilen gedacht).
Blaz
Ich habe OS X seit dem ersten Tag verwendet und wusste nichts über Tastenkombinationen. Was für ein cooles Feature. Schauen Sie sich diesen sehr schönen GUI-Editor für Tastenkombinationen an, auf den ich gestoßen bin .
Alex Gray
Weitere Informationen finden Sie auf der Entwickler-Website von Apple .
Aleclarson
klang großartig, aber es scheint, als hätte es bei mir in Xcode 5.0.2 nicht funktioniert :(
voghDev
105

So löschen Sie eine Zeile : Ctrl-A Gehen Sie zum Zeilenanfang, dann Ctrl-K Löschen und ein anderes Mal Ctrl-K Entfernen der leeren Zeile. (Ich verwende Xcode nicht sehr oft, aber ich bin daran in Emacs und anderen Texteingaben mit Emacs-ähnlichen Bindungen gewöhnt, und es scheint auch in Xcode zu funktionieren.)

Und um eine Zeile zu duplizieren : Ich kenne nicht viele Programme, die einen Befehl dafür haben, aber normalerweise verwende ich einfach Kopieren + Einfügen - in Xcode ist es CUA-ähnlich: Ctrl+A um zum Zeilenanfang zu gelangen, Shift+ um auszuwählen it, Befehl + Czum Kopieren und Befehl + * Vzum zweimaligen Einfügen (einmal Überschreiben der Zeile und einmal Anhängen).

(von einer Person, die ständig Text eingibt und bearbeitet, so oft in verschiedenen Programmen, und gelegentlich sauer ist, sich mit einem dummen Widget ablenken zu müssen, während sie eine kleine Korrektur in einer Texteingabe vornimmt, dass sie es einfach nicht vermeiden kann, sich an diese Sequenzen zu erinnern und Gewohnheiten)

Tom Alsberg
quelle
3
Dies funktioniert in allen Anwendungen, in denen Cocoa für die Texteingabe verwendet wird, da dies eine Funktion des Cocoa-Textsystems ist. Es gibt viele weitere Verknüpfungen wie diese, eine Liste davon finden Sie hier: hcs.harvard.edu/~jrus/Site/System%20Bindings.html :)
Ahti
2
'yank' sollte auf modernen Macs Strg + Y sein.
CarmeloS
Befehl-V zum Einfügen und erneuten Einrücken. Mit Strg -Y wird der eingefügte Text ebenfalls eingefügt, aber nicht erneut eingerückt.
Scott Gardner
77

Löschen Sie eine Zeile wie eclipse CTRL+ D(getestet mit Xcode 4.5.1):

Ändern Sie zunächst diese Rechte:

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

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

Öffnen Sie /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plistmit Xcode selbst und fügen Sie diesen neuen Eintrag hinzu:

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

Geben Sie hier die Bildbeschreibung ein

Starten Sie Xcode neu und öffnen Sie Xcode> Einstellungen> Tastenkombinationen. Suchen Sie Ihr Makro und definieren Sie einen Shortkey:

Geben Sie hier die Bildbeschreibung ein

Öffne ein
quelle
5
Wenn Sie eine Möglichkeit zum Duplizieren einer Zeile hinzufügen möchten, gehen Sie genauso vor. Fügen Sie jedoch beim Einfügen des neuen Werts in die Datei IDETextKeyBindingSet.plist den folgenden Code ein: "selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward: ".
jollyr0ger
+1 Diese Lösung funktionierte, stand jedoch in Xcode 4.6.1 ^ D in Konflikt mit anderen vorhandenen Tastenkombinationen.
Bernard
Wie können Sie das für 'Aktuelle Zeile duplizieren' erhalten?
Markus
Dies funktioniert nicht in xcode 6. Nur die erste Funktion wird aus der Liste
aufgerufen
1
Ich liebe es, funktioniert wie ein Zauber für mich unter XCode 6.3.1.
Fwielstra
9

Ich habe die Lösung für Schlüsselbindungen ausprobiert, aber ich konnte sie nicht zum Laufen bringen. Das Bearbeiten meiner XCode-Tastenkombinationen funktioniert jedoch wie ein Zauber. So habe ich es gemacht.

Diese Lösung ändert den Inhalt der Zwischenablage nicht!

Öffnen Sie die XCode-Tastenkombinationen:

Alt-Text

Im Dialogfeld "Benutzerskripte bearbeiten":

  1. Duplizieren Sie das Skript "Zeile nach unten verschieben" und benennen Sie es um
  2. Duplizieren Sie die Datei "Move Line Down.scpt", benennen Sie das Skript um und wählen Sie die Datei über (Doppelklick) im Skript-Editor aus
  3. Bearbeiten Sie das Skript (öffnet den "AppleScript-Editor") und entfernen Sie die Passage "Löschen (Absätze Startlinie bis Endlinie)".
  4. Wenn Sie XCode nicht neu starten möchten, müssen Sie das Skript anscheinend entfernen und erneut hinzufügen. Stellen Sie sicher, dass "Ausgabe" auf "Ausgabe verwerfen" eingestellt ist. Andernfalls wird in Ihrer Quelldatei ein "(null)" angezeigt
  5. Ich habe die Skripte etwas weiter modifiziert, um die richtigen Zeilen auszuwählen:

Doppelte Aufstellung:

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

Doppelte Zeile nach unten:

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

Leviathan
quelle
2
Wie oben nicht klar erwähnt, gibt es vorhandene Skripte für Zeile löschen, Zeile nach oben verschieben und Zeile nach unten verschieben. Die akzeptierte Antwort hat den Nachteil, dass sie nur funktioniert, wenn Sie Ihre Tastenkombinationen auf XCode Default eingestellt haben. Durch die Verwendung von Skripten können Sie Ihre benutzerdefinierten Tastenkombinationen beibehalten, da die Tastenkombinationen für Skripte getrennt von denen für den Rest von XCode behandelt werden.
Pathogen
7

OK, ich hatte das für eine Weile arbeiten und dann brach es plötzlich. Jetzt habe ich hier verschiedene Beiträge zusammengefasst und eine Lösung gefunden, die für XCode 6.3.1 funktioniert.

  1. Gehe /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/mit Finder.

  2. Suchen Sie den Ordner mit dem Namen Ressourcen. Klicken Sie mit der rechten Maustaste darauf, drücken Sie auf Informationen abrufen, entsperren Sie die Freigabe- und Berechtigungseinstellung (durch Drücken der Sperre) und setzen Sie sie für alle auf Lesen und Schreiben.

  3. Geben Sie den Ordner ein und suchen Sie die Datei IDETextKeyBindingSet.plist. Klicken Sie mit der rechten Maustaste darauf, drücken Sie auf Informationen abrufen, entsperren Sie die Freigabe- und Berechtigungseinstellung (durch Drücken der Sperre) und setzen Sie sie für alle auf Lesen und Schreiben.

  4. Öffnen Sie die Datei mit XCode (Standard)

  5. Suchen Sie nach Löschungen, klicken Sie mit der rechten Maustaste und fügen Sie eine neue Zeile hinzu. Nennen Sie es zum Beispiel Zeile löschen. Geben Sie im Wertefeld Folgendes ein : selectLine:, deleteBackward:. (Dies kann auch für doppelte Linie erfolgen: selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:)

  1. Starten Sie XCode, gehen Sie zu Einstellungen / Tastenkombinationen und suchen Sie nach Zeile löschen. Verknüpfung festlegen. Genießen.
Joakim
quelle
6

Da die Implementierung von Xcode 4 mithilfe von Tastenkombinationen schwierig ist, habe ich auf Keyboard Maestro zurückgegriffen ( Quickeys sollten ebenfalls gut funktionieren, sind jedoch nicht vollständig Lion-kompatibel). Zum Beispiel ist hier meine Keyboard Maestro-Verknüpfung (gebunden an ⌘-⇧-D):

http://bit.ly/thC6yf

Raheel
quelle
3
"Jetzt kaufen für $ 36" ... was für ein Schnäppchen) lol ... bis ich das auf der Maestro-Website sah, dachte ich, es könnte eine gute Lösung sein
ycomp
@ycomp, hier ist eine kostenlose Lösung .
Blaz
5

Befolgen Sie zum Löschen der Zeile in Xcode 10.1 die Schritte des folgenden Screenshots, um eine Tastenkombination hinzuzufügen.

Geben Sie hier die Bildbeschreibung ein

Gagandeep Gambhir
quelle
5

Ich weiß, dass dieser Thread ziemlich alt ist, aber ich habe mit BetterTouchTool eine andere Lösung gefunden . Sie können die Sequenz Ctrl+ A, Ctrl+ K, Ctrl+ Kin einer Verknüpfung ausführen , indem Sie sie in BTT folgendermaßen konfigurieren:

Geben Sie hier die Bildbeschreibung ein

(Verwenden Sie die Schaltfläche Zusätzliche Aktion anhängen, um die zweite und dritte Verknüpfung anzuhängen.)

PS: Kommt von Eclipse, wobei Cmd+ die DZeile ^^ ist

Laurent Meyer
quelle
4

Dreifacher Klick, um die gesamte Zeile auszuwählen, Befehl-c zum Auswählen und Befehl-v zweimal zum Duplizieren. Es ist keine Xcode-Funktion, sondern nur ein Teil des Betriebssystems.

Paul Tomblin
quelle
2
Mausklick und noch schlimmer, dreifach? Das ist sicherlich nicht die Lösung, nach der Leute suchen, die Tastaturkürzel verwenden möchten.
Ixx
4

Verwenden Sie Benutzerskripte.

Es gibt noch Skripte zum Verschieben und Löschen von Zeilen. Sie müssen Schlüsselbindungen für diese Skripte definieren (Menü Skripte -> Benutzerskripte bearbeiten ... unter xCode 3.2).

Um eine Zeile zu duplizieren, müssen Sie ein eigenes Skript erstellen. Aber es ist sehr einfach! Duplizieren Sie das Skript "Zeile nach unten verschieben" und entfernen Sie die Zeile, in der der ausgewählte Text gelöscht wird:

delete (paragraphs startLine through endLine)
Damien Flament
quelle
3

Es gibt eine Lösung für XCode4 Linie Vervielfältigung über hier

Ich habe der Liste auch das Löschen von Zeilen hinzugefügt:

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

MartinMcB
quelle
3

Wir sind auf Xcode 9.0 und die Tastenkombinationen funktionieren immer noch nicht. Seufzer.

Ich fand dieses Wesentliche sehr hilfreich, daher habe ich es hier erneut veröffentlicht, um später darauf zurückgreifen zu können:

  1. Öffnen /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
  2. Fügen Sie dieser Datei das folgende XML-Snippet direkt über dem unteren Rand hinzu </dict>
  3. Gehen Sie zu Xcode-Einstellungen -> Tastenkombinationen -> Registerkarte Text -> Scrollen Sie, bis Duplizierung angezeigt wird
  4. Klicken Sie auf Aktuelle Zeile duplizieren und fügen Sie eine Verknüpfung dazu hinzu, z. Befehl + D (doppelte Bindungen auflösen)
  5. Öffnen Sie 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>

Jannie Theunissen
quelle
3

Xcode muss nicht geändert werden. Sie können einfach die Xcode-Erweiterung Linex verwenden

Geben Sie hier die Bildbeschreibung ein

Aladin
quelle
genial ! großartige Lösung
Thomas Besnehard
2

Die Lösung von damien.flament funktioniert hervorragend und Sie müssen möglicherweise die Ausgabe auf "Ausgabe verwerfen " setzen (siehe Abbildung unten)

Einstellung für Benutzerskripte

PS: Ich weiß nicht, wie ich seine Antwort kommentieren soll.

Palaniraja
quelle
2

Schließen Sie wie oben beschrieben XCode und fügen Sie im Abschnitt Folgendes nach ~/Library/Application Support/Xcode/Key Bindings/ <user>.pbxkeysinnen ein:<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>

Starten Sie XCode und genießen Sie CTRL- SHIFT- Dund CTRL- SHIFT- K.
Wenn Sie CTRL- Dund CTRL- möchten K, verwenden Sie stattdessen ^dund ^kin Schlüsseldefinitionen. Stellen Sie sicher, dass die Datei keine doppelten Schlüsselbindungen enthält.

Funktioniert gut mit XCode 3.2

askh
quelle
2

Dies ist mit BetterTouchTool möglich . CMD + D dupliziert eine Zeile. Erstellen Sie eine neue Verknüpfung wie folgt:

Geben Sie hier die Bildbeschreibung ein

Verwenden Sie die Schaltfläche Zusätzliche Aktion anhängen, um die zweite und dritte Verknüpfung anzuhängen

Adam Studenic
quelle
1

Wenn Sie Ihre Xcode-Tastenkombinationen bereits angepasst haben, müssen Sie die Datei bearbeiten : ~/Library/Application Support/Xcode/Key Bindings/<user>.pbxkeys. Fügen Sie einfach die beiden Arrays (oben beschrieben) zum Root/textWörterbuch hinzu.

MonsieurDart
quelle
Hiya. Ich folge dem nicht ganz, das pbxkey-Dokument ist XML, während die oben beschriebene Datei ~ / Library / KeyBindings / PBKeyBinding.dict ein völlig anderes Format hat (sieht ein bisschen wie JSON aus). Das pbxkeys-Dokument enthält keinen Root- / Texteintrag. Liegt es daran, dass ich eine spätere Version verwende?
Ben Clayton
1

Drei Schritte zum Löschen der aktuellen Zeile (siehe zu lang, aber sehr schnell: D)

Cmd+ : zum Zeilenende gehen
Cmd+ Delete: zum Zeilenanfang
Deletelöschen: leere Zeile löschen

huync
quelle
0

Für Xcode 6.1 gehen Sie zu Xcode> Einstellungen> Tastenkombinationen> Text und es gibt "Löschen bis zum Zeilenende" und weisen Sie einen gewünschten Schlüssel zu.

SpyZip
quelle
0

Das XCodePlus-Plugin zum Löschen von Zeilen ist ein XCode, der dies für Sie erledigt. Es wurde mit Alcatraz Package Manager vorinstalliert ...

https://github.com/payliu/XcodePlus

Joakim
quelle
0

Ab Xcode 9 gibt es noch keine integrierte Möglichkeit, Zeilen zu duplizieren. Benutzerdefinierte Tastenkombinationen scheinen Probleme zu haben.

Update: Xcode 10.0 Beta 6 (10L232m) ist das gleiche.

erkanyildiz
quelle
0

Gehen Sie zu dieser Adresse:

/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet

Kopieren Sie dann die Datei IDETextKeyBindingSet.plist an eine beliebige Stelle, öffnen Sie die kopierte Datei und fügen Sie sie ein

selectLine:, copy:, paste:, paste: Geben Sie wie in diesem Bild die Bildbeschreibung hier ein, speichern Sie sie und ersetzen Sie die kopierte Datei unter dieser Adresse /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet

Starten Sie dann xcode neu, öffnen Sie die xcode-Einstellungen, gehen Sie zur Registerkarte Tastenkombination, suchen Sie nach doppelten Zeilen (angepasst) und definieren Sie einen kurzen Schlüssel dafür wie im Bild unten

[1]: https://i.stack.imgur.com/UTeZu.png

Khatereh
quelle
Aus der Rezension: Hallo, dieser Beitrag scheint keine qualitativ hochwertige Antwort auf die Frage zu geben. Bitte bearbeiten Sie Ihre Antwort und verbessern Sie sie oder posten Sie sie einfach als Kommentar.
sɐunıɔ ןɐ qɐp