Jak wybrać linię w OSX?

8

Edytuję tekst. Uciążliwym sposobem na wybranie linii byłoby przejście do początku linii (cmd <-), a następnie zaznaczenie całej linii do końca (Shift cmd ->). Czy mogę zrobić lepiej?

Mile widziane są również skróty do przecinania linii i przechowywania jej w buforze. (cmd D) nie przechowuje linii w buforze.

Dávid Natingga
źródło
1
W jakim programie edytujesz tekst?
ForeverWintr
Głównie w Eclipse w ówczesnym terminalu, ale miałem nadzieję uzyskać ogólne rozwiązanie dla każdej aplikacji, jeśli to możliwe.
Dávid Natingga
na pełnej klawiaturze w systemie OS X Home, shift-end wybierze całą linię, ale prawdopodobnie nie masz pełnej klawiatury. Również w większości aplikacji ustawianie kursora na początku linii, a następnie przytrzymanie klawisza Shift i naciśnięcie strzałki w dół działa.
sdjuan

Odpowiedzi:

10

Zawsze używam następujących:

  • cmd - Left arrow aby dostać się na początek linii
  • shift + cmd + right arrow zaznaczyć linię
  • cmd - C(lub cmd - X), aby skopiować (lub wyciąć) zaznaczoną linię do schowka

Potem mogę iść gdziekolwiek chcę i wkleić linię cmd - v.

Ale ponieważ MacOS jest mocno związany z graficznym interfejsem użytkownika, używanie go bez myszy jest możliwe, ale czasami - jak w twoim przypadku - wymaga jednego naciśnięcia klawisza więcej niż jednego.

heiglandreas
źródło
1
Prawie w prawo: shift + cmd - strzałka w prawo, aby zaznaczyć linię, NIE shift + cmd - strzałka w dół.
Kevin Le - Khnle
1
shift + cmd + strzałka w dół zaznacza bieżącą linię, w tym znak nowej linii, shift + cmd + strzałka w prawo zaznacza linię z wyłączeniem znaku nowej linii. Więc oboje mamy rację;)
heiglandreas
5

Większość aplikacji (Terminal, TextEdit, Safari URL / pasek wyszukiwania itp.), Które akceptują wprowadzanie tekstu, honoruje standardowe powiązania klawiszy (nie wiesz, jaki standard ... ANSI, ASCII?), Które zawierają

control+ a: początek linii

control+ e: koniec linii

Tak więc control+ shift+, a or eaby wybrać linię w zależności od pozycji.

Również:

control+ shift+ k: zabij do końca linii

control+ shift+ y: yank (z bufora)

Pełną listę można wygenerować za pomocą bindkeypolecenia w terminalu, chociaż nie wszystkie działają we wszystkich aplikacjach.

Nevin Williams
źródło
1
Widoki tekstowe w OS X nie używają readline, po prostu obsługują wiele takich samych skrótów klawiszowych jak readline w trybie emacs. Cu, C- @ i Cw nie powinny domyślnie działać w widokach tekstu waniliowego, nawet jeśli można je zdefiniować w DefaultKeyBinding.dict.
Lri
Testowałem wszystko przed wysłaniem ... z wyjątkiem tego, że zrobiłem to w wierszu polecenia. doh.
Nevin Williams
To miłe, ale wciąż szukam czegoś, co działa globalnie.
Louis Waweru
2

Możesz utworzyć ~/Library/KeyBindings/i zapisać taką listę właściwości, jak DefaultKeyBinding.dict:

{
    "~l" = selectParagraph:;
    "~z" = (selectParagraph:, delete:);
    "~x" = (selectParagraph:, cut:);
    "~c" = (selectParagraph:, copy:);
}

Po ponownym otwarciu aplikacji, na przykład ⌥L powinien wybrać linię w większości natywnych widoków tekstu. Nie działa jednak w Eclipse, Terminalu ani Xcode. Aby uzyskać więcej informacji, zobacz artykuł Cocoa Text System lub moją stronę internetową .

Inną opcją jest użycie KeyRemap4MacBook i zapisanie czegoś takiego jako private.xml :

<?xml version="1.0"?>
<root>
<item>
<name>test</name>
<identifier>test</identifier>
<not>TERMINAL</not>
<not>EMACS</not>
<not>VIRTUALMACHINE</not>
<not>ECLIPSE</not>
<autogen>__KeyToKey__ KeyCode::L, VK_OPTION | ModifierFlag::NONE, KeyCode::A, ModifierFlag::CONTROL_L, KeyCode::E, ModifierFlag::CONTROL_L | ModifierFlag::SHIFT_L, KeyCode::CURSOR_RIGHT, ModifierFlag::SHIFT_L</autogen>
</item>
<item>
<name>test2</name>
<identifier>test2</identifier>
<only>ECLIPSE</only>
<autogen>__KeyToKey__ KeyCode::L, VK_OPTION | ModifierFlag::NONE, KeyCode::CURSOR_LEFT, ModifierFlag::COMMAND_L, KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L | ModifierFlag::SHIFT_L, KeyCode::CURSOR_RIGHT, ModifierFlag::SHIFT_L</autogen>
</item>
</root>

W większości aplikacji ⌃A przesuwa się na początek nieopakowanej linii, a ⌘ ← przesuwa się na początek owiniętej linii, ale ⌃A wydaje się nie działać w Eclipse.

Zobacz źródło kluczowych wartości kodu i predefiniowanych ustawień .

Lri
źródło
1

Znalazłem rozwiązanie, które wydaje się działać we wszystkich aplikacjach Cocoa: mieć home&end klawisze zachowują się jak maszyny innych niż Apple (przejdź do początku / końca linii zamiast całego dokumentu).

Plik ~/Library/KeyBindings/DefaultKeyBinding.dictmusi zawierać następujące elementy:

{
    /* home */
    "\UF729"  = "moveToBeginningOfLine:";
    "$\UF729" = "moveToBeginningOfLineAndModifySelection:";

    /* end */
    "\UF72B"  = "moveToEndOfLine:";
    "$\UF72B" = "moveToEndOfLineAndModifySelection:";
}

Jeśli plik lub katalog nie istnieje, skopiuj powyższy fragment kodu na ... pasterze, otwórz Terminal i wprowadź następujące dwa polecenia:

mkdir ~/Library/KeyBindings
pbpaste > ~/Library/KeyBindings/DefaultKeyBinding.dict

Może być konieczne ponowne uruchomienie aplikacji, aby działała zgodnie z oczekiwaniami.

Louis Waweru
źródło
1

Dziwi mnie, że nikt o tym nie wspominał

Shift + CMD + strzałka w lewo (lub strzałka w prawo, jeśli jesteś na początku)

Sharadh Deshpande
źródło
Nie, @heiglandreas wspomniał (nie wprost, ale zrobił to) w swojej odpowiedzi. Zobacz drugi punkt.
C0deDaedalus
1

Jedną z zalet systemu macOS nad (WIN / Linux) są prawie wszystkie globalne skróty klawiszowe w stylu emacsa każdym polu tekstowym (wyjątkiem jest Microsoft Office dla komputerów Mac, który na nowo definiuje te skróty ...)

Jeśli chodzi o to pytanie, zawsze używam, C-aaby dotrzeć do początku linii, C-S-eaby wybrać do końca linii, a następnie „CMD-c”, aby skopiować.

Jeśli zdarzy się, że masz linię (która kończy się na \ n), która przecina wiele literalnych linii, normalnie zrobiłbym następujące czynności:

1), C-aaby przejść do początku linii

2), C-naby przejść na początek następnej linii dosłownej

3) C-bcofnąć jedną postać

4), C-S-aaby wybrać do początku linii

5) w CMD-ccelu skopiowania treści

Może to być złożone rozwiązanie, ale powinno działać w większości pól tekstowych w systemie macOS.

phye
źródło
0

control+ shift+aef

(wpisz aef , trzymając wciśnięty klawisz Control i Shift)

Daje to taki sam efekt, jak trzykrotne kliknięcie bieżącej linii.

Uwaga: obejmuje to końcowe EOL w zaznaczeniu. Jeśli nie tego chcesz, pomiń f .

Jako bonus, po f naciśnij kilkakrotnie n, aby wybrać wiele linii.

Testowane w Xcode i TextEdit.

jedwidz
źródło