Comment sélectionner une ligne sur OSX?

8

J'édite du texte. Une manière lourde de sélectionner une ligne serait d'aller au début de la ligne (cmd <-) puis de sélectionner la ligne entière jusqu'à la fin (Shift cmd ->). Puis-je faire mieux?

Des raccourcis pour couper la ligne et la stocker dans une mémoire tampon seraient également les bienvenus. (cmd D) ne stocke pas la ligne dans un tampon.

Dávid Natingga
la source
1
Dans quel programme éditez-vous du texte?
ForeverWintr
Surtout dans Eclipse dans le terminal d'alors, mais j'espérais obtenir une solution générale pour chaque application si possible.
Dávid Natingga
sur un clavier complet dans os x home, alors shift-end sélectionnera toute la ligne, mais vous n'avez probablement pas de clavier complet. De plus, dans la plupart des applications, le positionnement du curseur au début de la ligne, tout en maintenant la touche Maj enfoncée, fonctionne.
sdjuan

Réponses:

10

J'utilise toujours ce qui suit:

  • cmd - Left arrow arriver au début de la ligne
  • shift + cmd + right arrow pour marquer la ligne
  • cmd - C(ou cmd - X) pour copier (ou couper) la ligne marquée dans le presse-papiers

Ensuite, je peux aller où je veux et coller la ligne avec cmd - v.

Mais comme MacOS est fortement fixé sur une interface utilisateur graphique, son utilisation sans souris est possible mais parfois - comme dans votre cas - implique une pression de touche de plus que ce que vous souhaiteriez.

heiglandreas
la source
1
Presque à droite: shift + cmd - flèche droite pour marquer la ligne, NOT shift + cmd - flèche vers le bas.
Kevin Le - Khnle
1
shift + cmd + flèche vers le bas marque la ligne courante avec le caractère de retour à la ligne, shift + cmd + flèche vers la droite marque la ligne à l'exclusion du caractère de retour à la ligne. Nous avons donc tous les deux raison;)
heiglandreas
5

La plupart des applications (Terminal, TextEdit, URL / barre de recherche de Safari, etc.) qui acceptent la saisie de texte respectent les raccourcis clavier standard (vous ne savez pas quelle norme ... ANSI, ASCII?) Qui incluent

control+ a: début de ligne

control+ e: fin de ligne

Donc, control+ shift+ a or epour sélectionner une ligne en fonction de votre position.

Aussi:

control+ shift+ k: tuer jusqu'à la fin de la ligne

control+ shift+ y: yank (du tampon)

Une liste complète peut être générée avec la bindkeycommande dans Terminal, bien que toutes ne fonctionnent pas dans toutes les applications.

Nevin Williams
la source
1
Les vues de texte OS X n'utilisent pas readline, elles prennent simplement en charge plusieurs des mêmes raccourcis clavier que readline en mode emacs. Cu, C- @ et Cw ne devraient pas fonctionner par défaut dans les vues de texte vanilla, même si vous pouvez les définir dans DefaultKeyBinding.dict.
Lri
J'ai tout testé, avant de poster ... sauf que je l'ai fait à l'invite de commande. doh.
Nevin Williams
C'est bien, mais je cherche toujours quelque chose qui fonctionne à l'échelle mondiale.
Louis Waweru
2

Vous pouvez créer ~/Library/KeyBindings/et enregistrer une liste de propriétés comme celle-ci DefaultKeyBinding.dict:

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

Après la réouverture des applications, par exemple, ⌥L doit sélectionner une ligne dans la plupart des vues de texte natives. Cela ne fonctionne cependant pas dans Eclipse, Terminal ou Xcode. Pour plus d'informations, consultez l'article Cocoa Text System ou mon site Web .

Une autre option consiste à utiliser KeyRemap4MacBook et à enregistrer quelque chose comme ceci en tant que 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>

Dans la plupart des applications, ⌃A se déplace au début d'une ligne non encapsulée et ⌘ ← se déplace au début d'une ligne encapsulée, mais ⌃A ne semble pas fonctionner dans Eclipse.

Voir la source pour les valeurs de code clé et les paramètres prédéfinis .

Lri
la source
1

J'ai trouvé une solution qui semble fonctionner dans toutes les applications Cocoa: faire en sorte que les touches home& endse comportent comme des machines non Apple (allez au début / fin d'une ligne au lieu d'un document entier).

Un fichier ~/Library/KeyBindings/DefaultKeyBinding.dictdoit contenir les éléments suivants:

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

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

Si le fichier ou le répertoire n'existe pas, copiez l'extrait de code ci-dessus dans votre ... table de montage, ouvrez Terminal et entrez ces deux commandes:

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

Le redémarrage de l'application peut être nécessaire pour qu'elle se comporte comme prévu.

Louis Waweru
la source
1

Je suis surpris que personne n'ait mentionné celui-ci

Maj + CMD + flèche gauche (ou flèche droite si vous êtes au début)

Sharadh Deshpande
la source
Non, @heiglandreas l'a mentionné (pas explicitement, mais il l'a fait) dans sa réponse. Voir la deuxième puce.
C0deDaedalus
1

L' un des avantages de macOS sur (WIN / Linux) est de style les raccourcis clavier globaux emacs dans presque toutes les texte (une exception est Microsoft Office pour Mac qui redéfinit ces raccourcis de manière fâcheuse ...)

Concernant cette question, j'utilise toujours C-apour arriver en tête de ligne,C-S-e début de ligne, pour sélectionner jusqu'à la fin de la ligne, puis 'CMD-c` pour copier le.

S'il vous arrive d'avoir une ligne (qui se termine par un \ n) qui traverse de nombreuses lignes littérales, je ferais normalement ce qui suit:

1) C-a aller en début de ligne

2) C-n pour aller au début de la ligne littérale suivante

3) C-b revenir en arrière d'un personnage

4) C-S-a pour sélectionner jusqu'à la tête de ligne

5) CMD-c pour copier le contenu

Cela peut être une solution complexe, mais devrait fonctionner dans la plupart des zones de texte sous macOS.

phye
la source
0

control+ shift+aef

(tapez aef tout en maintenant Control et Shift)

Cela donne le même résultat qu'un triple-clic sur la ligne actuelle.

Notez que cela inclut l'EOL de fin dans la sélection. Si ce n'est pas ce que vous voulez, omettez le f .

En prime, après f , appuyez plusieurs fois sur n pour sélectionner plusieurs lignes.

Testé dans Xcode et TextEdit.

jedwidz
la source