Xcode duplicate / delete line

Pochodzące z Eclipse i były używane do powielania linii przez cały czas, to dość dziwne dowiedzieć się, że Xcode nie ma takiej funkcji. A może tak?

Wiem, że można zmienić systemowe powiązania klawiszy, ale nie o to mi chodzi.

Author: Sam, 2009-02-15

20 answers

Chodzi o to, aby nie używać Cmd-C/Cmd-V na skróty. Mam ten sam problem z IntelliJ, a możliwość powielania wierszy za pomocą Cmd-D i usuwania ich za pomocą Cmd-Y to duża oszczędność czasu.

Od tamtej pory mnie to dręczy. Jednak wygląda na to, że ktoś inny 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-K do usuwania bieżącej linii i Ctrl-Shift-D do powielania bieżącej linii. Należy pamiętać, że to będzie tylko działać, jeśli Nie używając niestandardowego zestawu wiązań kluczy w Xcode. Przełącz na "domyślne XCode" i wszystko powinno działać. Testowane na XCode 3.2 na Snow Leopard.

Więcej informacji na temat wiązań klawiszy Mac OS X: http://funkworks.blogspot.it/2013/03/republishing-of-wwwerasetotheleftcompos.html

 89
Author: Frank Schröder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-30 14:32:44

Aby usunąć wiersz: Ctrl-A aby przejść do początku linii, następnie Ctrl-K usunąć, a innym razem Ctrl-K aby usunąć pusty wiersz. (Nie używam Xcode zbyt często, ale jestem przyzwyczajony do tego w Emacsie i innych wejściach tekstowych z wiązaniami podobnymi do Emacsa, i wydaje się, że działa również w Xcode.)

i powielić linię: nie znam wielu programów, które mają do tego polecenie, ale zazwyczaj używam tylko Kopiuj+Wklej - w Xcode to CUA-jak: Ctrl+A aby przejść do początku linii, Shift+ aby go wybrać, polecenie +C to copy and Command+*V do wklejenia dwukrotnie(raz nadpisując linię I raz dołączając do niej).

(od osoby, która cały czas pisze i edytuje tekst, tak często w różnych programach, a od czasu do czasu wkurza się, że musi rozpraszać się głupim widget podczas dokonywania niewielkiej korekty w tekście wejściowym, że po prostu nie może uniknąć zapamiętywania tych sekwencji i nawyków)

 92
Author: Tom Alsberg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-16 12:12:03

Usuń linię jak eclipse CTRL + D (testowane na Xcode 4.5.1):

Po pierwsze, 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 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist z samym Xcode i dodaj nowy wpis:

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

Tutaj wpisz opis obrazka

Uruchom ponownie Xcode i otwórz Xcode > Preferencje > skróty klawiszowe. Znajdź swoje makro i zdefiniuj shortkey:

Tutaj wpisz opis obrazka

 75
Author: Opena,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-05 11:51:15

Próbowałem rozwiązania do wiązania kluczy, ale nie udało mi się go uruchomić. Jednak edytowanie moich Xcode key bindings działa jak urok. Oto jak to zrobiłem.

To rozwiązanie nie zmienia zawartości schowka!

Otwórz wiązania kluczy XCode:

alt text

W oknie edycji skryptów użytkownika:

  1. skopiuj skrypt "przesuń linię w dół" i zmień jego nazwę
  2. Powiel " przesuń linię w dół.scpt " plik, Zmień nazwę skryptu, wybierz plik za pomocą (podwójne kliknięcie) w Edytorze skryptów
  3. Edytuj skrypt (otwiera "edytor AppleScript") i usuń fragment " delete (paragraphs startLine through endLine)".
  4. Jeśli nie chcesz ponownie uruchomić XCode, musisz usunąć i ponownie dodać skrypt. Upewnij się, że masz "Output" ustawione na "Discard Output", w przeciwnym razie będziesz miał "(null) " w pliku źródłowym
  5. trochę zmodyfikowałem skrypty, aby mieć odpowiednie linie wybrano:

Duplicate 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

Duplicate Line Down:

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

 9
Author: leviathan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-05 18:35:14

Ponieważ Xcode 4 utrudnia implementację przy użyciu wiązań klawiszy, uciekłem się do używania Keyboard Maestro (Quickeys też powinien działać dobrze, ale nie jest w pełni kompatybilny z Lionem). Na przykład, oto mój Skrót klawiatury Maestro (związany z ⌘- ⇧ - D):

Http://bit.ly/thC6yf

 6
Author: raheel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-20 17:06:43

OK, przez jakiś czas to działało i 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.

  1. Przejdź do /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/ z Finderem.

  2. Znajdź folder o nazwie Resources. Kliknij go prawym przyciskiem myszy, naciśnij Pobierz informacje, odblokuj Ustawienia Udostępnianie i uprawnienia (naciskając blokadę) i ustaw go do odczytu i zapisu dla wszystkich.

  3. Wprowadź folder i znajdź IDETextKeyBindingSet pliku.plist. Kliknij prawym przyciskiem myszy, naciśnij Pobierz informacje, odblokuj Ustawienia Udostępnianie i uprawnienia (naciskając blokadę) i ustaw go do odczytu i zapisu dla wszystkich.

  4. Otwórz plik za pomocą XCode (domyślnie)

  5. Znajdź usunięcia, kliknij prawym przyciskiem myszy i dodaj nowy wiersz. Nazwij go na przykład Delete Line. W polu Wartość wpisz: selectLine:, deleteBackward:. (Można to również zrobić dla duplicate line: selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:)

  1. Uruchom XCode, przejdź do preferencji / skrótów klawiszowych i wyszukaj Usuń wiersz. Ustaw Skrót. Smacznego.
 6
Author: Joakim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-21 13:09:07

Kliknij trzykrotnie, aby wybrać całą linię, command-c, aby wybrać i command-V dwukrotnie, aby ją powielić. To nie jest funkcja Xcode, to tylko część systemu operacyjnego.

 5
Author: Paul Tomblin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-15 18:46:18

Wiem, że ten wątek jest dość stary, ale znalazłem inne rozwiązanie używając BetterTouchTool, możesz wykonać Ctrl+A, Ctrl+K, Ctrl+K Sekwencja w jednym skrócie, konfigurując tak w BTT:

Tutaj wpisz opis obrazka

(użyj przycisku Dołącz dodatkową akcję, aby dołączyć drugi i trzeci Skrót)

PS: Coming from Eclipse where Cmd+D is delete line ^^

 5
Author: Laurent Meyer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-18 23:12:38

Użyj skryptów użytkownika.

Istnieją jeszcze skrypty do przenoszenia i usuwania linii. Dla tych skryptów należy zdefiniować bindy kluczy (menu Skrypty -> Edycja skryptów użytkownika..., pod xCode 3.2).

Aby powielić wiersz, musisz stworzyć własny skrypt. Ale to bardzo proste ! Skopiuj skrypt "przesuń linię w dół" i usuń linię, która usuwa zaznaczony tekst:

delete (paragraphs startLine through endLine)
 4
Author: Damien Flament,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-22 22:20:49

Jest rozwiązanie dla powielania linii xcode4 przez tutaj

Dodałem również usunięcie linii do plist:

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

 3
Author: MartinMcB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:07

Nie trzeba modyfikować Xcode. Możesz po prostu użyć rozszerzenia Xcode Linex

Tutaj wpisz opis obrazka

 3
Author: Aladin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-20 15:05:58

Rozwiązanie przez damien.flament działa świetnie i może być konieczne ustawienie output , aby" odrzucić wyjście " patrz rysunek poniżej

Ustawienia Userscripts

P. S: Nie wiem jak skomentować jego odpowiedź.

 2
Author: palaniraja,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:07

Jak wspomniano powyżej, Zamknij XCode i wstaw następujący tekst do ~/Library/Application Support/Xcode/Key Bindings/ <user>.pbxkeys wewnątrz <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-D i CTRL-SHIFT-K .
Jeśli chcesz CTRL-D i CTRL-K , zamiast tego użyj ^d i ^k w definicjach kluczy. Upewnij się, że w pliku nie ma duplikatów wiązań kluczy.

Działa dobrze dla mnie z XCode 3.2

 2
Author: askh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-21 10:19:53

Jest to możliwe przy użyciu BetterTouchTool . CMD + D powieli linię. Utwórz nowy skrót w ten sposób:

Tutaj wpisz opis obrazka

Użyj przycisku Dołącz dodatkową akcję, aby dodać drugi i trzeci Skrót

 2
Author: Adam Studenic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-28 09:03:01

Jeśli masz już spersonalizowane wiązania klawiszy Xcode, musisz edytować plik: ~/Library/Application Support/Xcode/Key Bindings/<user>.pbxkeys. Wystarczy dodać dwie tablice (opisane powyżej) do słownika Root/text.

 1
Author: MonsieurDart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-16 19:14:37

Trzy Kroki do usunięcia bieżącej linii (patrz zbyt długo, ale zrób to bardzo szybko: D)

Cmd + : przesuń do końca wiersza
Cmd + Delete : Usuń, aby rozpocząć wiersz
Delete : Usuń pusty wiersz

 1
Author: huync,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-22 10:05:31

Jesteśmy na Xcode 9.0 i skróty klawiszy nadal nie działają. Westchnienie.

Znalazłem Ten gist bardzo pomocny, więc prześlij go tutaj na przyszłość:

  1. Otwórz /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
  2. Dodaj następujący fragment XML do tego pliku tuż nad spodem </dict>
  3. przejdź do Xcode preferences -> key Bindings -> Text tab - > Scroll till you see Duplikation
  4. Kliknij na Zduplikuj bieżącą linię, Dodaj do niej skrót, np. Cmnd + D(rozwiąż dowolny duplikat wiązania)
  5. Open 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>

 1
Author: Jannie Theunissen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-17 09:11:22

For Xcode 6.1 got to Xcode > Preferences > KeyBindings > Text I jest "Usuń do końca linii" i przypisać klucz, który chcesz.

 0
Author: SpyZip,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-17 22:58:48

Xcodeplus delete line plugin, jest XCode, który robi to za Ciebie. Został wstępnie zainstalowany z menedżerem pakietów Alcatraz...

Https://github.com/payliu/XcodePlus

 0
Author: Joakim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-23 11:29:47

Nadal nie ma wbudowanego sposobu powielania linii, począwszy od Xcode 9. Niestandardowe wiązania kluczy wydają się mieć problemy.

Aktualizacja: Xcode 10.0 beta 6 (10l232m) jest taki sam.

 0
Author: erkanyildiz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-04 12:52:59