Xcode doppelte Zeile

127

Es gibt einen DuplicateBefehl 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.

Blaz
quelle
1
Zeile auswählen und kopieren einfügen?
Dani
1
@Dani, CP ist einfach zu viel Arbeit (und das Duplizieren von Zeilen ist nichts, wofür nur selten Bedarf besteht). :) Ich habe die Frage aktualisiert.
Blaz
1
Befehl-D dient zum Duplizieren von Steuerelementen in Interface Builder.
Hailei
@ Halley, das ist gut zu wissen. Und ist es das Äquivalent von ⌥-mouse-drag (das auch Schnittstellenelemente kopiert)?
Blaz
@ Courteous denke ich schon. Der Abschnitt Modifikatortasten in disanji.net/iOS_Doc/#documentation/DeveloperTools/Conceptual/… besagt, dass "das Drücken der Wahltaste während Drag & Drop-Vorgängen die ausgewählten Objekte kopiert, anstatt sie zu verschieben".
Hailei

Antworten:

173
  1. Gehen Sie zu diesem Ordner, der die dunkle Seite der Kraft enthält:

    • Xcode 4.2 oder früher: /Developer/Library/PrivateFrameworks/IDEKit.framework/Resources
    • Xcode 4.3 oder höher : /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources.
  2. Öffnen IDETextKeyBindingSet.plist.

  3. Fügen Sie im folgenden Screenshot ein neues Wörterbuch und ein neues Befehlselement hinzu (benennen Sie sie wie gewünscht): Plist bearbeiten

    Das ist: selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:

  4. Starten Sie Xcode neu und gehen Sie zu Einstellungen - Tastenkombinationen. Suchen Sie nach Ihrem Befehl.

  5. Legen Sie eine Tastenkombination für den Befehl fest: Tastenbelegungen

  6. Endlich die Kraft der Tastenkombinationen auf Xcode freigesetzt ... Viel Spaß!

Hailei
quelle
3
@MichalStefanow, der Ort, den Sie geschrieben haben, ist tatsächlich derselbe Ort , auf den der /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/ResourcesAlias ​​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.
Blaz
29
Vielen Dank! Für faule Benutzer - selectLine:, copy:, moveToEndOfLine:, insertNewline:, insert:, deleteBackward:
Vlad Tsepelev
15
Wenn Ihr xCode abstürzt! Schließen Sie xCode, öffnen Sie die Datei mit einem beliebigen Texteditor und fügen Sie Ihr Wörterbuch hinzu: <key>Custom</key> <dict> <key>Duplicate Current Line</key> <string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:</string> </dict>
Vlad Tsepelev
2
Funktioniert für mich in XCode 4.4.1! Hatte einige Probleme beim Ändern der Berechtigungen (Finder oder chmod 777 und Start mit sudo vom Terminal funktionierten aus irgendeinem Grund nicht). Ich habe die Datei an einen anderen Ort kopiert, bearbeitet und die ursprüngliche Datei überschrieben, die funktioniert hat.
Ixx
2
Ich bin Android Dev und als ich anfing, iOS Dev auszuprobieren, wurde mir klar, wie gut Android Studio (oder Intellij-Idee) ist.
IlyaEremin
90

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

  1. Geben Sie die Berechtigung zum Bearbeiten der folgenden Dateien. In den meisten Fällen können Sie die Dateien im Betriebssystem nicht bearbeiten.

für Version 11.3.1

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

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

unter 11.3 Versionen


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

sudo chmod 777 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/
  1. Bearbeiten Sie die Datei, indem Sie den folgenden Befehl schreiben: (Öffnen Sie sie in einem erhabenen oder Texteditor, wenn Sie können.)

für 11.3.1

open  

/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/

für unten stehende Versionen

open /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
  1. Fügen Sie die folgenden XML-Snippets hinzu:
<key>custom</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>

Screenshots

Geben Sie hier die Bildbeschreibung ein

Starten Sie Xcode neu und Preferences - Key Bindingssuchen Sie nach dem von uns eingegebenen Befehl (Zeilen duplizieren und aktuelle Zeile duplizieren).

Geben Sie hier die Bildbeschreibung ein

Das ist es.

Für Unix-Benutzer gilt Folgendes: -

sudo chmod 755 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/ 
Zumry Mohamed
quelle
Es wirkt wie ein Zauber! Ich habe das IDETextKeyBindingSet.plistWörterbuch bearbeitet und hinzugefügt und dann die Schlüssel in den Einstellungen von XCode zugeordnet.
Randika Vishman
3
Dies sind die Nerd-Antworten, die Mac-Benutzer benötigen!
Luca Davanzo
1
Für XCode 10.1 musste ich die folgende Zeichenfolge verwenden: moveToBeginningOfLine:, deleteToEndOfLine:, yank:, insertNewline:, setMark:, moveToBeginningOfLine:, selectToMark:, yank : . Vielen Dank an @tmsimont
marcelosalloum
1
Dies ist das erste, was ich Google jedes Mal, wenn Xcode aktualisiert wird.
newDeveloper
1
Diese Lösung funktioniert eher für mich als für die akzeptierte Antwort
Khalid
18

Ok, ich habe mir das ausgedacht:

Version für XCode 11:

selectParagraph:, delete:, undo:, moveRight:, yankAndSelect:
  • berührt nicht die Zwischenablage
  • arbeitet mit mehreren Zeilen
  • Wählt hinzugefügte Zeilen aus und kann daher ohne erneute Auswahl mehrmals verwendet werden
  • feste Auswahl in XCode 11
  • funktioniert besser mit rückgängig machen

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

cp /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist ~/Desktop/IDETextKeyBindingSet.plist; sudo perl -pi -e 's/\<string\>selectWord:\<\/string>/'$'\<string\>selectWord:\<\/string\>\n\t\t\<key\>Duplicate Selection\<\/key\>\n\t\t\<string\>selectParagraph:, delete:, undo:, moveRight:, yankAndSelect:\<\/string>/g' /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist

Ältere Version (Ich bin nicht sicher, ob die neue mit älteren Versionen kompatibel ist, daher werde ich sie hier behalten):

selectParagraph:, delete:, yank:, moveToBeginningOfLine:, setMark:, yank:, moveToBeginningOfLine:, moveLeft:, selectToMark:

und Skript für ältere Versionen, um manuelle Dateibearbeitung zu vermeiden:

cp /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist ~/Desktop/IDETextKeyBindingSet.plist; sudo perl -pi -e 's/\<string\>selectWord:\<\/string>/'$'\<string\>selectWord:\<\/string\>\n\t\t\<key\>Duplicate Selection\<\/key\>\n\t\t\<string\>selectParagraph:, delete:, yank:, moveToBeginningOfLine:, setMark:, yank:, moveToBeginningOfLine:, moveLeft:, selectToMark:\<\/string>/g' /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist

edit: minor fix edit2: geändert in Absatzauswahl edit3: Version für XCode 11 hinzugefügt

Rychu
quelle
Wirklich danke dafür, auf der Suche nach dieser Kombination. Dies kann einzelne oder mehrere Zeilen duplizieren, ohne unerwünschte neue Zeilen hinzuzufügen, und auch Strg-Z funktioniert gut.
Mkeremkeskin
Danke, das ist das, was dem IntelliJ-Verhalten am nächsten kommt. IMHO
OxyFlax
17

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

unvergleichlich
quelle
Ich habe dies gerade heruntergeladen und installiert. Sie können die Systemeinstellungen verwenden, um auch Tastaturkürzel für die Befehle festzulegen. Sehr schön!
Orion Edwards
Die beste Lösung gibt es, weil diese die aktuelle Zwischenablage nicht beschädigt. So fügen Sie Tastenkombinationen hinzu: Systemeinstellungen -> Tastatur -> Verknüpfungen -> App-Verknüpfungen -> '+'. Dort wählen Sie Xcode und Menütitel zum Beispiel 'Auswahl / Zeile
löschen
Ich habe das gerade installiert. FANTASTISCH, aus irgendeinem Grund ist mein "Duplizieren" -Menü unter "Bearbeiten" ausgegraut. Obwohl ich eine Zeile im Editor und Cursor ausgewählt und versucht habe, eine ganze Zeile auszuwählen.
John Ballinger
Das ist mehr als fantastisch. Danke dir!
0x6A75616E
es funktioniert nicht bei mir. Das "Duplizieren" ist ausgegraut und die Tastenkombination funktioniert auch nicht.
SquareBox
13

@ 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:

moveToBeginningOfLine:,
deleteToEndOfLine:,
yank:,
insertNewline:,
moveToBeginningOfLine:,
yank:

Die 2 yank:s funktionieren möglicherweise nicht wie beabsichtigt, wenn Sie NSTextKillRingSizeetwas anderes als festgelegt haben 1, aber ich bin mir ziemlich sicher, dass dies 1die 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).

Kelan
quelle
Ich schlage vor, den Befehl zu verwenden, defaults write -g NSTextKillRingSize 1anstatt mit der GlobalPreferences.plist zu spielen. ;)
dbernard
@amas Es ist wahrscheinlich, dass Sie die Datei an eine andere Stelle kopieren müssen, bevor Sie sie ändern, und dann die Originaldatei überschreiben müssen, es sei denn, Sie möchten das Risiko eingehen, die Berechtigungen für übergeordnete Ordner zu ändern.
Nipponese
Das funktioniert fast, aber aus irgendeinem Grund wird am Ende der duplizierten Zeile ein paar Leerzeichen eingefügt. Irgendeine Idee warum?
tmsimont
5
wenn es mit dieser Änderung moveToBeginningOfLine:, deleteToEndOfLine:, yank:, insertNewline:, setMark:, moveToBeginningOfLine:, selectToMark:, yank:
behoben wurde
Dies sollte die vorgeschlagene Antwort sein (gemäß @ Haileis Anleitung). Vielen Dank!
Brkeyal
9

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;)

Baldur
quelle
Dies erfordert viel mehr "Handakrobatik" als das Duplizieren mit nur einer Aktion / Tastenkombination ... es ist die Art und Weise, wie ich Text in einem Texteditor oder Webbrowser dupliziere, ja, aber ich erwarte ein bisschen mehr von IDE.
Ixx
1
Außerdem überschreiben Sie mit doppelten Zeilenverknüpfungen nicht den Inhalt der Zwischenablage. Oft kopiere ich etwas, dupliziere Code und möchte ihn einfügen - mit deiner Methode musst du ihn erneut kopieren.
Ixx
Nun ja. Aber weniger als vom OP vorgeschlagen. Ich kann zustimmen, dass ein einziger Befehl am besten wäre. Ich dachte nur, ich würde auf eine Alternative hinweisen.
Baldur
1
Das ist immer noch besser als nichts Out-of-the-Box. Ich wünschte, dass cmd + C / X ohne Auswahl einfach die ganze Zeile kopieren / schneiden würde, wie es andere Editoren tun ...
manroe
@Baldur Das mache ich auch. cmd + linkes cmd + Umschalt + rechtes cmd + c cmd + rechtes Geben Sie cmd + linkes cmd + p ein. Bei 7 Tastenanschlägen ist dies problemlos in weniger als 3 Sekunden möglich. Im Vergleich zu Strg + D ist dies jedoch immer noch recht mühsam, wie dies bei vielen Texteditoren der Fall ist. Es ist bedauerlich, dass dies nicht in xcode integriert ist oder dass Macs und Apple-Software im Allgemeinen keine besseren Hotkeys haben.
csga5000
9

EDIT: 12. Juli 2020 Nach dem erneuten Update auf Xcode 11.5 war mein duplicate lineSchlüsseleintrag aus der plistDatei 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 lineSchlüsseleintrag aus der plistDatei 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 lineSchlüsseleintrag aus der plistDatei 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:

<key>Duplicate Current Line</key>
<string>selectLine:, copy:, moveToBeginningOfLine:, paste:, moveToEndOfLine:</string>

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:

<key>Insert New Line Below</key>
<string>moveToEndOfLine:, insertNewline:</string>
<key>Insert New Line Above</key>
<string>moveUp:, moveToEndOfLine:, insertNewline:</string>
<key>Duplicate Current Line</key>
<string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:</string>

Dann finden Sie die und diese im Abschnitt <key>Deletions</key>unter dem <dict>Tag:

<key>Delete Current Line</key>
<string>selectLine:, delete:</string>
<string>selectLine:, delete:</string>

Geben Sie hier die Bildbeschreibung ein

Ö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.

Geben Sie hier die Bildbeschreibung ein

Zeeshan
quelle
8

Warum eine einzelne Zeile duplizieren? Das Duplizieren des gesamten Absatzes ist besser. Meine Sequenz:

Aktuellen Absatz duplizieren

selectParagraph:,
delete:,
yank:,
moveToBeginningOfParagraph:,
yank:,
moveUp:,
moveToEndOfParagraph:

Aktuellen Absatz löschen

selectParagraph:,
delete:,
moveUp:,
moveToEndOfParagraph:

Funktioniert gut in Xcode 4.6

BB9z
quelle
Einverstanden ist das Manipulieren von Absätzen Zeilen überlegen. Jeder, machen Sie Ihren Editor schmal genug, um Text zu umbrechen und versuchen Sie, die Zeilenbefehle zu verwenden.
Logan Moseley
Wie klein ist Ihr Fenster, das Ihr Code umschließt? Teilen Sie Ihren Code in kleinere Zeilen auf, wenn dies so häufig vorkommt.
quemeful
3

Ich würde in Betracht ziehen, die Befehlssequenz zu überarbeiten, um:

selectLine:,
copy:,
moveToEndOfLine:,
insertNewline:,
deleteToBeginningOfLine:,
paste:,
moveToBeginningOfLine:, 
deleteBackward:

Das hinzugefügte deleteToBeginningOfLineElement behält den Einzug der duplizierten Zeile bei.

user570753
quelle
Dies funktionierte hervorragend, als mir klar wurde, dass ich die (gut aussehenden) Zeilenumbrüche durch ein Leerzeichen nach dem Komma ersetzen musste.
McUsr
2

insertLineBreak brauchte zumindest eine Kopie in einer neuen Zeile, ohne die ich eine Kopie in derselben Zeile bekam

Vladimir Kruglov
quelle
2

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:

cd /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/
sudo chmod -R 777 *
nano IDETextKeyBindingSet.plist

Ein paar andere Möglichkeiten , dies zu tun , werden ebenfalls beschrieben hier .

Klicken Sie dann im Nano-Editor auf ^Wund 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:

<key>Duplicate line</key>
<string>selectLine:, copy:, moveToEndOfLine:, insertNewLine:, paste:, deleteBackward:</string>

Drücken Sie control + Xdann Y, dann Enter, 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):

<key>Duplicate line</key>
<string>selectLine:, copy:, moveToEndOfLine:, insertLineBreak:, moveUp:, paste:, moveToBeginningOfLine:</string>
joliejuly
quelle
1

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).

    <key>Custimozed</key>
<dict>
    <key>Delete Current Line</key>
    <string>deleteToBeginningOfLine:, moveToEndOfLine:, deleteToBeginningOfLine:, deleteBackward:, moveDown:, moveToBeginningOfLine:</string>
    <key>Duplicate Current Line</key>
    <string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, deleteToBeginningOfLine:, paste:, moveToBeginningOfLine:, deleteBackward:</string>
</dict>
rauben
quelle
0

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

<key>Line Duplications</key>
<dict>
    <key>Duplicate Current Line Above</key>
    <string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:, moveUp:</string>
    <key>Duplicate Current Line Below</key>
    <string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:</string>
</dict>
Internet-Nico
quelle
0

Falls anderen Personen der Zugriff zum Bearbeiten von IDETextKeyBindingSet.plist verweigert wird, können Sie sich Lese- / Schreibberechtigungen erteilen, indem Sie:

sudo chmod 777 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
Tim
quelle
0

Um Haileis Antwort zu ergänzen, waren die Befehle, die für mich am besten funktionierten:

selectLine:, copy:, moveRight:, moveLeft:, insertNewline:, paste:, deleteBackward:

Seine vorgeschlagenen Befehle kopierten für mich die gewünschte Zeile zwei Zeilen weiter unten.

Stange
quelle
0
<key>Duplicate Lines</key>    
<string>selectLine:, copy:, moveToBeginningOfLine:, paste:</string>

Doppelte Zeile (n) unterstützt. (Dies funktioniert in Xcode 9.2)

Luminoid
quelle
0

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.

<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>
Ben
quelle