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.
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.
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
Duplicate
Poleceń (w Edit -> 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)
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:
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
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:
)
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):
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>
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 ^^
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.
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)
Nie ma potrzeby modyfikowania Xcode. Możesz po prostu użyć rozszerzenia Xcode Linex
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ź.
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
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
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) do Root/text
słownika.
Wtyczka XCodePlus do usuwania linii to XCode, który robi to za Ciebie. Został wstępnie zainstalowany z menedżerem pakietów Alcatraz ...
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.
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