in scripting vim ~ read.

Traduire du texte dans VIM

Il y a pas mal de plugin pour la traduction de texte pour les utilisateurs de VIM. Malheureusement, google a changer sa politique pour l'utilisation de ses APIs, et les développeurs de plugins n'ont pas forcément suivi. Du coup, il devient assez difficile de trouver quelque chose d'utilisable.

J'ai cherché, fouiné, parcouru pas mal de thread et de blog et j'en ai pondu deux petits mapping perso qui s'appuient sur translate-shell, un soft qui permet de faire des traductions en utilisant Google© translate.

Le premier mapping permet de prend le texte sélectionné, et de le traduire :

vnoremap <leader>t y:sp newfile<CR>pgg^vG$:!trans -b :fr<CR>

Le second prend la ligne courante, et la traduit :

nnoremap <leader>t ^v$y:sp newfile<CR>pgg^vG$:!trans -b :fr<CR>

Quelques explications sur ces mapping :

  • vnoremap{.sourceCode} et nnoremap permettent de créer un raccourcis clavier en mode visuel et normal;
  • <leader>t{.sourceCode} dit à VIM d'utiliser la touche leader suivi de la touche t comme raccourci;
  • y:sp newfile<CR>{.sourceCode} fait dans l'ordre : copier la sélection (y) etouvrir un buffer vide (:sp newfile<CR>);
  • pgg^vG${.sourceCode} copie la sélection (p), déplace le curseur à la première ligne (gg), déplace le curseur au début de la ligne (^), passe en mode visuel (v), déplace le curseur à la dernière ligne (G), et déplace le curseur à la fin de la ligne;
  • :!trans -b :fr{.sourceCode} demande à translate-shell de traduire la sélection en mode simplifié (!trans -b), vers la langue français (:fr).

Le texte à traduire est ouvert dans un nouveau buffer, et est remplacé par la traduction une fois celle-ci trouvée.

Et voilà ! Le deuxième mapping fait globalement la même chose, à ceci près qu'il sélection la ligne courante avant d'ouvrir le buffer et de faire la traduction.