TextMate 2

Ce billet date de plusieurs années, ses informations peuvent être devenues obsolètes.

J’étais toujours sous CopainTexte 1.x (et ce depuis 2005 !) jusqu’à la réception d’un email d’Allan Odgaard à l’objet intrigant : TextMate & Mavericks. Il y évoque un problème de compatibilité de certains Bundles avec la version par défaut de ruby dans Mavericks et propose des solutions dont :

Our recommended fix is to upgrade to TextMate 2.0

Je ne suis pas encore passé à Mavericks mais je prépare le terrain alors j’ai installé TextMate 2.0 tout de go.

Et j’ai retrouvé le même plaisir que j’ai pu éprouver en installant TextMate premier du nom :)

La version 2.0 est toujours estampillée alpha parce que la documentation n’est pas bouclée mais que de changements depuis les 1.5.x.

Noix de Cocoa

Sous Mac OS, la plupart des applications Cocoa supportent une sélection basique de raccourcis claviers saveur Emacs. Ceci est probablement un héritage de NeXTSTEP. Si la plupart ont des équivalents clavier (les flèches par exemple), certains restent intéressants :

  • ⌃E et ⌃A pour déplacer le curseur en début ou fin du paragraphe courant
  • ⌃D efface un caractère après le curseur
  • ⌃K et ⌃Y le copier coller qui se passe du presse-papiers d’OS X
  • ⌃O insère une nouvelle ligne avant le curseur
  • ⌃V scroll à l’écran suivant

Les plus dingues d’entre vous peuvent customiser le comportement du système texte de Cocoa, avec NSRepeatCountBinding par exemple.

Et puis il y a la transposition avec ⌃T que TextMate améliore.

Le coup du dictionnaire dans les applications Cocoa fait aussi son petit effet : ⌃⌘D sur une sélection de mot.

Changer de syntaxe

⇧⌃⌥ + [A-Z]

On peut aussi maintenant définir la syntaxe par défaut des nouveaux documents dans les préférences.

Gear Menu

⌥F1 (anciennement ⌃esc).

Bundles

Les Bundles dans TextMate 2 sont maintenant gérés via les préférences et sont mis à jour automatiquement :

A bundle is a collection of macros, commands, snippets, drag commands, templates, preferences, and language grammars.

Parmis mes favoris :

  • Wrap Word as Link ⇧⌃L (Bundle Hyperlink Helper)
  • Extend Selection to Include Next ⌃W (Bundle Text) ⌃W⌃W⌃W⌃W :)
  • Duplicate Line (or Selection) ⇧⌃D (Bundle Text)
  • Join Line With Next ⇧⌃J (Bundle Text)
  • Evaluate Line ⇧⌃C (Bundle Math)
  • Insert Open/Close Tag (With Current Word) ⌃< (Bundle HTML)

Et si on a oublié le raccourci d’une action de Bundle : ⌃⌘T.

Il y a aussi pas mal de Bundles tiers bien utiles, je pense à JSLintMate qui intègre JSLint (wesh Dougy) et JSHint.

Historique du presse papier

⌃⌥⌘V

Mais vous êtes un power user et vous faites peut-être déjà ça à l’échelle du système via le plugin Clipboard de Quicksilver ou une autre solution.

Configuration façon .git

Aye papito! Bienvenue au fichier .tm_properties !

Voyez cet exemple d’exclusion de certains fichiers de la fonction de recherche de TextMate. Pratique pour exclure les migrations South de la recherche par exemple.

Si un setting du fichier .tm_properties est en majuscule, il devient disponible en tant que variable d’environnement pour les commandes et snippets des Bundles. Magie vaudou no limit :) Je m’en suis servi pour lancer pylint en fonction du virtualenv paramétré dans le .tm_properties.

Curseurs multiples

Le mode column selection et la commande ⌥⌘A de TextMate 1 sont remplacés par les curseurs multiples.

Lisez Multiple Carets pour davantage d’informations puissantes.

Et enfin je peux faire dans TextMate ce que font les autres dans Sublime :)

  • ⌘E sur une sélection
  • ⌥⌘F

mate

mate en ligne de commande fonctionne maintenant avec sudo \o/

mate accepte des Selection Strings :

  • mate -l 3 toto.txt place le curseur à la ligne 3
  • mate -l 3:16 toto.txt place le curseur à la ligne 3 et à la colonne 16
  • mate -l 3:30-3:42 toto.txt place le curseur à la ligne 3 et effectue une sélection de la colonne 30 à la colonne 42
  • mate -l '3&6' toto.txt place des curseurs multiples aux lignes 3 et 6

Et les Selection Strings fonctionnent aussi avec ⌘L (Go to Line) et ⌘T (Go to File).

rmate

La commande rmate (un script ruby) permet d’utiliser TextMate en local pour éditer un fichier distant via un tunnel SSH.

Pour cela il vous faudra vérifier que vous avez ruby sur votre machine distante puis y installer rmate :

sudo curl -Lo /usr/local/bin/rmate https://raw.github.com/textmate/rmate/master/bin/rmate
sudo chmod a+x /usr/local/bin/rmate

Ensuite il vous faudra ouvrir un tunnel SSH entre votre machine locale et votre machine distante.

Notez que rmate est standalone et que vous pouvez tout aussi bien l’utiliser via Sublime Text 2 par exemple.

Autocomplétion intelligente

Programming is hard enough all on its own, so anything that can make it easier is a win.

TextMate 2 permet maintenant d’utiliser le complètement (touche esc) à gauche ou à droite et par conséquent même au milieu d’une chaîne de caractères !

Rechercher et remplacer

Le menu Edit > Find propose une flopée de fonctionnalités.

Le raccourci ⇧⌘E (Use Selection for Replace) est important et permet de se passer de la boite de dialogue dans pas mal de situations.

D’ailleurs les boites de dialogues Find et Find in Project ont été unifiées.

Et cætera

TextMate 2 intègre aussi les support des outils de gestion de versions, les favoris et un nouveau File Browser. On trouve aussi un nouveau Wiki sur GitHub.

Top of the pop sous OS X

Je reste un fanboy de TextMate, j’aime le minimalisme de son interface, la puissance de ses Bundles et son intégration à OS X. Je n’ai jamais réussi à faire le switch définitif à Sublime Text, ni même à BBEdit.

C’est comme ça, il en faut pour tous les goûts !

Avant Query string ficelle Après Stack front-end moderne avec Django

Tag Kemar Joint