Es gibt einen Duplicate
Befehl im Bearbeitungsmenü (mit der Standardverknüpfung von ⌘D), der jedoch (wie Halley hervorhob) zum Duplizieren im Interface Builder-Teil von Xcode gedacht ist.
Wie dupliziert man ( einfach ) eine Zeile in Xcode 4?
Verwandte Frage (mit einer funktionierenden Antwort) für Xcode 3 ... und die für Xcode 4 nicht funktioniert.
Warum nicht einfach kopieren und einfügen?
Weil es langweilig ist und zu viel Handakrobatik mit sich bringt:
entweder (1) : zum Zeilenanfang gehen und dann drücken ⇧^E, dann kopieren ⌘C, zur neuen Zeile wechseln, den Cursor zuweisen und schließlich mit einfügen ⌘V;
oder (2) : ^A(Cursor auf Zeilenanfang setzen), ^SPACE(Markierung setzen), ^E(Cursor auf Zeilenende setzen), ⇧^W( Select to Mark
; angepasst), Kopieren, neue Zeile usw.
Wie Frank Schröder (in der verwandten Frage ) es ausdrückte:
Der springende Punkt ist NICHT, die Cmd-C / Cmd-V-Verknüpfungen zu verwenden.
Antworten:
Gehen Sie zu diesem Ordner, der die dunkle Seite der Kraft enthält:
/Developer/Library/PrivateFrameworks/IDEKit.framework/Resources
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources
.Öffnen
IDETextKeyBindingSet.plist
.Fügen Sie im folgenden Screenshot ein neues Wörterbuch und ein neues Befehlselement hinzu (benennen Sie sie wie gewünscht):
Das ist:
selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:
Starten Sie Xcode neu und gehen Sie zu Einstellungen - Tastenkombinationen. Suchen Sie nach Ihrem Befehl.
Legen Sie eine Tastenkombination für den Befehl fest:
Endlich die Kraft der Tastenkombinationen auf Xcode freigesetzt ... Viel Spaß!
quelle
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources
Alias verweist. Ansonsten habe ich Halleys Schritte in Version 4.3.2 erfolgreich ausgeführt. Ich schlage vor, dass Sie die Originaldatei sichern und sie dann in Xcode selbst (und nicht in TextEdit) öffnen. Auch in Bezug auf die Berechtigungen: Das Ändern (nur für die Datei selbst; keine Rekursion erforderlich) im Finder funktionierte einwandfrei.<key>Custom</key> <dict> <key>Duplicate Current Line</key> <string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:</string> </dict>
Update 2020
Funktioniert auch mit Xcode-Versionen: 11.3.1
Funktioniert in Xcode-Versionen: 7.1, 7.3, 7.3.1, 8.0, 8.1, 8.2, 8.3, 9.0, 9.1, 9.2, 10.0, 10.1, 10.2.1
Anweisung
für Version 11.3.1
unter 11.3 Versionen
für 11.3.1
für unten stehende Versionen
Screenshots
Starten Sie Xcode neu und
Preferences - Key Bindings
suchen Sie nach dem von uns eingegebenen Befehl (Zeilen duplizieren und aktuelle Zeile duplizieren).Das ist es.
Für Unix-Benutzer gilt Folgendes: -
quelle
IDETextKeyBindingSet.plist
Wörterbuch bearbeitet und hinzugefügt und dann die Schlüssel in den Einstellungen von XCode zugeordnet.Ok, ich habe mir das ausgedacht:
Version für XCode 11:
Da ich diese Änderung nach jedem XCode-Update anwende, habe ich dafür ein Skript erstellt. Möglicherweise kann es einige Schäden verursachen, aber ich habe versucht, es relativ sicher zu machen. Es erstellt eine Kopie der Datei und ersetzt dann die Zeile durch die Kopie und den zusätzlichen Befehl unter Verwendung von Perl. Erfordert die Installation von XCode unter
/Applications/Xcode.app
Ältere Version (Ich bin nicht sicher, ob die neue mit älteren Versionen kompatibel ist, daher werde ich sie hier behalten):
und Skript für ältere Versionen, um manuelle Dateibearbeitung zu vermeiden:
edit: minor fix edit2: geändert in Absatzauswahl edit3: Version für XCode 11 hinzugefügt
quelle
Heute habe ich ein sehr kleines Plugin für Xcode 5 geschrieben, das Zeilen und Auswahlen löscht und dupliziert.
Sie können es von meinem GitHub-Repo herunterladen: XcodeKit-Plugin - https://github.com/ptfly/XcodeKit
quelle
@ Haileis Antwort war ziemlich gut, hatte aber den unglücklichen Nebeneffekt, dass der Inhalt der Zwischenablage überfüllt war (so dass er mit dem Inhalt der duplizierten Zeile gefüllt war), was genau der Teil des manuellen Kopier- / Einfüge-Ansatzes ist, den ich vermeiden wollte .
Also habe ich die Befehlssequenz folgendermaßen geändert:
Die 2
yank:
s funktionieren möglicherweise nicht wie beabsichtigt, wenn SieNSTextKillRingSize
etwas anderes als festgelegt haben1
, aber ich bin mir ziemlich sicher, dass dies1
die Standardeinstellung ist, und Sie müssen einige nicht triviale Arbeiten ausführen, um sie zu ändern (es muss ein Eintrag hinzugefügt werden~/Library/Preferences/.GlobalPreferences.plist
).quelle
defaults write -g NSTextKillRingSize 1
anstatt mit der GlobalPreferences.plist zu spielen. ;)moveToBeginningOfLine:, deleteToEndOfLine:, yank:, insertNewline:, setMark:, moveToBeginningOfLine:, selectToMark:, yank:
Ich frage mich, warum niemand erwähnt hat, ⌘zusammen mit den Pfeiltasten ( ←↑→↓) sowohl den Cursor zu bewegen als auch ganze Zeilen auszuwählen (durch Hinzufügen ⇧).
Ich kopiere regelmäßig ganze Zeilen (duplizieren), indem ich den Cursor mit ⌘+ ←(anstelle von ctrl+ A) an den Anfang einer Zeile bewege und dann mit ⌘+ ⇧+ →(anstelle von ctrl+ ⇧+ E) die gesamte Zeile bis zum Ende auswähle und dann kopiere / einfüge.
Ich bin auf andere Threads gestoßen, in denen niemand diese Tastaturkürzel zu verwenden scheint. Sie sind in OS X global und ich benutze sie die ganze Zeit! Viel weniger Handakrobatik;)
quelle
EDIT: 12. Juli 2020 Nach dem erneuten Update auf Xcode 11.5 war mein
duplicate line
Schlüsseleintrag aus derplist
Datei weg. Ich musste es noch einmal hinzufügen. Die Schlüsselbindung war jedoch noch vorhanden.EDIT: 17. September 2019 Nach dem erneuten Update auf Xcode 10.3 war mein
duplicate line
Schlüsseleintrag aus derplist
Datei weg. Ich musste es noch einmal hinzufügen. Die Schlüsselbindung war jedoch noch vorhanden.EDIT: 28. Mai 2019 Nach dem erneuten Update auf Xcode 10.2 war mein
duplicate line
Schlüsseleintrag aus derplist
Datei weg. Ich musste es noch einmal hinzufügen. Die Schlüsselbindung war jedoch noch vorhanden.EDIT: 23. Dezember 2018 Nach dem Update auf Xcode 10.1 sind alle meine Verknüpfungen wieder kaputt gegangen. Aber etwas anderes war, dass ich nach dem Aktualisieren der Plist-Datei für die Zeilenvervielfältigung meine Schlüsselbindungen nicht definieren musste, sie waren bereits vorhanden. Seltsam.
BEARBEITEN: 14. OKTOBER 2018 Xcode 10: Jemand hoch oben bei Apple liebt das Kopieren / Einfügen und stellt sicher, dass bei jeder Version des Xcode-Updates die Zeilenduplizierung aus der Installation aller entfernt wird. Wir Entwickler sind seit jeher äußerst frustriert über diesen Unsinn in Xcode, der einzigen IDE ohne Option zum Duplizieren von Zeilen. Ich habe gerade auf Xcode 10 aktualisiert, und wie Sie es erraten haben, werden alle meine Tastenkombinationen zusammen mit meiner Funktion zum Duplizieren von Zeilen entfernt. Es kann jedoch wie in der ursprünglichen Antwort behoben werden. Ein kleiner Unterschied ist diesmal, dass Sie die folgende Zeile benötigen:
EDIT: Xcode 9: Ich musste meine Verknüpfungen wiederholen und Zeilen duplizieren und löschen, aber das Gute ist, dass Sie jetzt IDETextKeyBindingSet.plist erneut bearbeiten können. Dieser hochkarätige Apple-Typ muss im Urlaub sein, als er diese Version veröffentlichte.
EDIT: Xcode 8: Buggy, Sie können die Datei IDETextKeyBindingSet.plist überhaupt nicht ändern. Xcode setzt es beim Start zurück. Dieser High-Up-Typ bei Apple ist wirklich entschlossen, uns dazu zu bringen, Copy / Paste anstelle von einfachen Zeilenverdopplungen wie in allen anderen IDEs zu verwenden.
BEARBEITEN: Xcode 7.1 und es gibt immer noch keine Verknüpfungen zum Duplizieren und Löschen von Zeilen. Dies ist die einzige IDE, mit der ich jemals ohne solche Verknüpfungen gearbeitet habe. Und ich kann mir das Leben eines Entwicklers ohne diese beiden kritischen Abkürzungen nicht vorstellen.
So geht's:
Zuerst müssen wir eine plist-Datei ändern, die sich im Xcode.app-Bundle befindet (benötigt sudo zum Bearbeiten).
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist
Suchen Sie dann nach
<key>Insertions and Indentations</key>
dem<dict>
Tag und fügen Sie unter dem Tag Folgendes hinzu:Dann finden Sie die und diese im Abschnitt
<key>Deletions</key>
unter dem<dict>
Tag:Öffnen Sie nun Xcode / starten Sie ihn neu, gehen Sie zu Einstellungen und gehen Sie zur Registerkarte „Tastenkombinationen“. Verwenden Sie die Suchleiste, um nach neuen Verknüpfungen zu filtern und zu suchen. Klicken Sie dann vor die Verknüpfungsbeschreibung, um eine Verknüpfung nach Ihren Wünschen zuzuweisen. Stellen Sie sicher, dass Ihre Verknüpfung nicht mit vorhandenen Verknüpfungen in Konflikt steht.
quelle
Warum eine einzelne Zeile duplizieren? Das Duplizieren des gesamten Absatzes ist besser. Meine Sequenz:
Aktuellen Absatz duplizieren
Aktuellen Absatz löschen
Funktioniert gut in Xcode 4.6
quelle
Ich würde in Betracht ziehen, die Befehlssequenz zu überarbeiten, um:
Das hinzugefügte
deleteToBeginningOfLine
Element behält den Einzug der duplizierten Zeile bei.quelle
insertLineBreak brauchte zumindest eine Kopie in einer neuen Zeile, ohne die ich eine Kopie in derselben Zeile bekam
quelle
Ich hatte große Probleme, die .plist-Datei unter MacOS Sierra und Xcode 9 freizuschalten, selbst die @ Tim-Entscheidung hat bei mir nicht funktioniert. Wenn Sie das gleiche Problem haben, gehen Sie zum Terminal und gehen Sie folgendermaßen vor:
Ein paar andere Möglichkeiten , dies zu tun , werden ebenfalls beschrieben hier .
Klicken Sie dann im Nano-Editor auf
^W
und geben Sie "Einfügungen" ein, um zum Teil "Einfügungen und Einrückungen" zu springen.<dict>
Fügen Sie direkt unter dem Tag dieses XML-Snippet ein:Drücken Sie
control + X
dannY
, dannEnter
, um die Datei im Nano-Editor zu speichern.UPD: Ich habe eine bessere Entscheidung getroffen, bei der vor dem Duplizieren eine zusätzliche Zeile hinzugefügt wird (nützlich, wenn Sie eine Zeile duplizieren möchten, unter der sich eine weitere Zeile befindet):
quelle
Hier sind meine Einträge Löschen ( CTRL+ D) und Duplizieren ( CMD+ SHIFT+ D) aus meiner IDETextKeyBindingSet.plist. (in /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources)
Ich habe diese gerade in Xcode 4.6.1 eingerichtet (basierend auf der Antwort von user570753 oben und anderswo).
quelle
Alle Benutzer von erhabenem Text, die mit duplicateLineUp und duplicateLineDown von sublime in XCode übereinstimmen möchten , fügen Ihrer IDETextKeyBindingSet.plist- Datei Folgendes hinzu
quelle
Falls anderen Personen der Zugriff zum Bearbeiten von IDETextKeyBindingSet.plist verweigert wird, können Sie sich Lese- / Schreibberechtigungen erteilen, indem Sie:
quelle
Um Haileis Antwort zu ergänzen, waren die Befehle, die für mich am besten funktionierten:
Seine vorgeschlagenen Befehle kopierten für mich die gewünschte Zeile zwei Zeilen weiter unten.
quelle
Doppelte Zeile (n) unterstützt. (Dies funktioniert in Xcode 9.2)
quelle
Was Xcode 11 betrifft, hat keiner der oben genannten Punkte bei mir funktioniert. Die erste Antwort hatte ein seltsames Verhalten, da die Zeile nach der nächsten eingefügt wurde. Die folgende Antwort hat jedoch für mich funktioniert.
quelle