Pochodzący z Eclipse i używany do powielania linii przez cały czas, to dość dziwne odkrycie, że Xcode nie ma takiej funkcji. Czy to prawda?
Wiem, że można zmienić skróty klawiszowe w całym systemie, ale nie o to mi chodzi.
xcode
line
duplicate-data
Lato
źródło
źródło
Odpowiedzi:
Chodzi o to, aby NIE używać skrótów
Cmd-C
/Cmd-V
. Mam ten sam problem pochodzący z IntelliJ, a możliwość duplikowania wierszy za pomocąCmd-D
i usuwania ich za pomocąCmd-Y
to duża oszczędność czasu.Od tamtej pory mnie to niepokoi. Wygląda jednak na to, że ktoś znalazł rozwiązanie, które działa.
Krótko mówiąc, utwórz plik
~/Library/KeyBindings/PBKeyBinding.dict
z następującą zawartością i uruchom ponownie Xcode.{ "^$K" = ( "selectLine:", "cut:" ); "^$D" = ( "selectLine:", "copy:", "moveToEndOfLine:", "insertNewline:", "paste:", "deleteBackward:" ); }
Spowoduje to utworzenie dwóch skrótów: Ctrl- Shift- Kdo usuwania bieżącej linii i Ctrl- Shift- Ddo kopiowania bieżącej linii. Pamiętaj, że zadziała to tylko wtedy, gdy NIE używasz niestandardowego powiązania klawiszy ustawionego w Xcode. Przełącz się na „XCode Default” i wszystko powinno działać. Testowano na XCode 3.2 w systemie Snow Leopard.
Więcej informacji na temat przypisań klawiszy w systemie Mac OS X: http://funkworks.blogspot.it/2013/03/republishing-of-wwwerasetotheleftcompos.html
źródło
Duplicate
Poleceń (wEdit -> Duplicate
) wydaje się być „zawsze” wyszarzone (i nie przeznaczone do powielania linii).Aby usunąć wiersz : Ctrl-A aby przejść na początek wiersza, następnie Ctrl-K aby go usunąć, a innym razem Ctrl-K aby usunąć pusty wiersz. (Nie używam Xcode bardzo często, ale jestem do tego przyzwyczajony w Emacsie i innych wejściach tekstowych z powiązaniami podobnymi do Emacsa i wydaje się, że działa również w Xcode).
I aby powielić linię : nie znam wielu programów, które mają do tego polecenie, ale zwykle używam po prostu Kopiuj + Wklej - w Xcode jest to podobne do CUA: Ctrl+A aby przejść na początek linii, Shift+↓ aby wybrać it, Command +, Caby skopiować i Command + *, Vaby wkleić dwukrotnie (raz nadpisuje linię i raz dołącza do niej).
(od osoby, która cały czas pisze i edytuje tekst, tak często w różnych programach, i od czasu do czasu wkurza się, że musi rozpraszać się głupim widżetem podczas wprowadzania niewielkiej korekty tekstu, że po prostu nie może uniknąć zapamiętania tych sekwencji i nawyki)
źródło
Usuń linię taką jak eclipse CTRL+ D(testowane na Xcode 4.5.1):
Przede wszystkim zmień te prawa:
sudo chmod 666 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist sudo chmod 777 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/
Otwórz za
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist
pomocą samego Xcode i dodaj ten nowy wpis:deleteToBeginningOfLine:, moveToEndOfLine:, deleteToBeginningOfLine:, deleteBackward:, moveDown:, moveToBeginningOfLine:
Uruchom ponownie Xcode i otwórz Xcode> Preferencje> KeyBindings. Znajdź swoje makro i zdefiniuj skrót:
źródło
Wypróbowałem rozwiązanie przypisywania klawiszy, ale nie mogłem go uruchomić. Jednak edycja moich przypisań klawiszy XCode działa jak urok. Oto jak to zrobiłem.
To rozwiązanie nie zmienia zawartości Schowka!
Otwórz powiązania klawiszy XCode:
W oknie dialogowym Edytuj skrypty użytkownika:
Duplikat Line Up:
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
Duplikuj wiersz w dół:
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
źródło
OK, więc miałem to działało przez chwilę, a potem nagle się zepsuło. Teraz połączyłem z różnych postów tutaj i znalazłem rozwiązanie, które działa dla XCode 6.3.1.
Idź do za
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/
pomocą Findera.znajdź folder o nazwie Resources. Kliknij prawym przyciskiem myszy, naciśnij Uzyskaj informacje, odblokuj ustawienia udostępniania i uprawnień (naciskając blokadę) i ustaw je na Odczyt i zapis dla wszystkich.
Wejdź do folderu i znajdź plik IDETextKeyBindingSet.plist. Kliknij prawym przyciskiem myszy, naciśnij Uzyskaj informacje, odblokuj ustawienia udostępniania i uprawnień (naciskając blokadę) i ustaw je na Odczyt i zapis dla wszystkich.
Otwórz plik za pomocą XCode (domyślne)
Znajdź usunięcia, kliknij prawym przyciskiem myszy i dodaj nowy wiersz. Nazwij go na przykład Usuń linię. W polu Wartość wpisz:
selectLine:, deleteBackward:
. (Można to również zrobić za duplikat linii:selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:
)źródło
Ponieważ Xcode 4 utrudnia implementację przy użyciu skrótów klawiszowych , zdecydowałem się na użycie Keyboard Maestro ( Quickeys też powinien działać, ale nie jest w pełni kompatybilny z Lion). Na przykład tutaj jest mój skrót Keyboard Maestro (powiązany z ⌘-⇧-D):
http://bit.ly/thC6yf
źródło
Jesteśmy na Xcode 9.0 i przypisania klawiszy nadal nie działają. Westchnienie.
Uważam, że ta treść jest bardzo pomocna, więc zamieszczam ją ponownie tutaj na przyszłość:
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
</dict>
<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>
źródło
Aby usunąć linię w Xcode 10.1, wykonaj czynności przedstawione na poniższym zrzucie ekranu, aby dodać klawisz skrótu.
źródło
Wiem, że ten wątek jest dość stary, ale znalazłem inne rozwiązanie za pomocą BetterTouchTool , możesz wykonać sekwencję Ctrl+ A, Ctrl+ K, Ctrl+ Kw jednym skrócie, konfigurując w ten sposób w BTT:
(Użyj przycisku Dołącz dodatkową akcję, aby dołączyć drugi i trzeci skrót)
PS: Pochodzi z Eclipse, gdzie Cmd+ Djest linią usuwania ^^
źródło
Kliknij trzykrotnie, aby zaznaczyć całą linię, Command-c, aby zaznaczyć i dwukrotnie Command-v, aby ją powielić. To nie jest funkcja Xcode, to tylko część systemu operacyjnego.
źródło
Użyj skryptów użytkownika.
Istnieją jeszcze skrypty do przenoszenia i usuwania linii. Musisz zdefiniować skróty klawiszowe dla tych skryptów (menu Skrypty -> Edytuj skrypty użytkownika ... , pod xCode 3.2).
Aby powielić linię, musisz stworzyć własny skrypt. Ale to bardzo proste! Powiel skrypt „Przenieś wiersz w dół” i usuń wiersz usuwający zaznaczony tekst:
delete (paragraphs startLine through endLine)
źródło
Jest to rozwiązanie dla XCode4 linii powielania się tutaj
Dodałem również usuwanie linii do plist:
<key>Remove Line</key> <string>selectLine:, deleteBackward:</string>
źródło
Nie ma potrzeby modyfikowania Xcode. Możesz po prostu użyć rozszerzenia Xcode Linex
źródło
Rozwiązanie stworzone przez damien.flament działa świetnie i może być konieczne ustawienie wyjścia na „Discard Output”, patrz obrazek poniżej
PS: Nie wiem, jak skomentować jego odpowiedź.
źródło
Jak wspomniano powyżej, zamknij XCode i wstaw następujące do
~/Library/Application Support/Xcode/Key Bindings/ <user>.pbxkeys
środka<dict>
w<key>text</key>
sekcji:<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>
Uruchom XCode i ciesz się CTRL- SHIFT- Di CTRL- SHIFT- K.
Jeśli chcesz CTRL- Di CTRL- K, zamiast tego użyj
^d
i^k
w kluczowych definicjach. Upewnij się, że w pliku nie ma zduplikowanych powiązań klawiszy.U mnie działa dobrze z XCode 3.2
źródło
Jest to możliwe dzięki BetterTouchTool . CMD + D powieli linię. Utwórz nowy skrót, taki jak ten:
Użyj przycisku Dołącz dodatkową akcję, aby dołączyć drugi i trzeci skrót
źródło
Jeśli już dostosował swoje Xcode klawiszy, musisz edytować plik:
~/Library/Application Support/Xcode/Key Bindings/<user>.pbxkeys
. Po prostu dodaj dwie tablice (opisane powyżej) doRoot/text
słownika.źródło
Trzy kroki, aby usunąć bieżącą linię (patrz zbyt długo, ale zrób bardzo szybko: D)
Cmd+ →: przejdź do końca linii
Cmd+ Delete: usuń do początku linii
Delete: usuń pustą linię
źródło
Dla Xcode 6.1 dostałem się do Xcode> Preferencje> KeyBindings> Tekst I jest "Usuń do końca wiersza" i przypisz odpowiedni klawisz.
źródło
Wtyczka XCodePlus do usuwania linii to XCode, który robi to za Ciebie. Został wstępnie zainstalowany z menedżerem pakietów Alcatraz ...
https://github.com/payliu/XcodePlus
źródło
Nadal nie ma wbudowanego sposobu na zduplikowanie linii, począwszy od Xcode 9. A niestandardowe wiązania klawiszy wydają się mieć problemy.
Aktualizacja: Xcode 10.0 beta 6 (10L232m) jest taka sama.
źródło
Przejdź pod ten adres:
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet
a następnie skopiuj plik IDETextKeyBindingSet.plist w jakimś miejscu, a następnie otwórz skopiowany plik i wstaw
selectLine :, copy :, paste :, paste: tak jak na tym obrazku wprowadź opis obrazu tutaj i zapisz go i zastąp skopiowany plik w tym adresie /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet
następnie uruchom ponownie xcode, otwórz preferencje xcode, przejdź do zakładki przypisywania klawiszy, wyszukaj zduplikowaną linię (dostosowaną) i zdefiniuj dla niej krótki klawisz, jak na poniższym obrazku
[1]: https://i.stack.imgur.com/UTeZu.png
źródło