Un terminal dans Neovim
3/Apr 2015
Comme je l’ai indiqué dans un précédent billet, je suis passé à Neovim. En pratique, cela reste très proche de Vim. Mais, on commence à voir de nouvelles fonctionnalités très intéressantes. J’avais déjà parlé de l’exécution asynchrone des plugins, ce qui leur permet de faire des traitements longs sans bloquer complètement l’éditeur.
Plus récemment, @tarruda a ajouté la prise en charge des vraies couleurs dans Neovim. Pour les terminaux qui supportent cette possibilité, il est maintenant possible d’utiliser des couleurs avec des code hexadécimaux, sans se restreindre à une palette de 16, 88 ou 256 couleurs comme c’est trop souvent le cas. Cela devrait notamment plaire aux créateurs de thèmes, vu que ceux-ci respecteront mieux les couleurs désormais.
Une autre fonctionnalité qui me semble très intéressante vient d’arriver dans
Neovim : c’est l’émulation d’un terminal.
Grâce à la libvterm, il est
possible de lancer un terminal dans Neovim, avec :terminal
par exemple. Cela
créée un buffer en mode édition. Il est alors possible d’utiliser ce terminal
pour faire différentes actions (comme un terminal normal), mais également de
profiter des autres modes de vim. Au hasard, la sélection rectangulaire peut
être bien pratique !
Pour sortir du mode édition, il faut utiliser la combinaison <C-\> <C-n>
. Ce
n’est pas très intuitif, mais comme le mode terminal propose son propre
binding de touches avec :tnoremap
, on peut ajouter ces lignes à son fichier
/.nvimrc
pour utiliser Esc
:
if has("nvim")
tnoremap <Esc> <C-\><C-n>
endif
Cette fonctionnalité va ouvrir des portes aux développeurs de plugins, pour intégrer plus facilement Neovim et des outils externes. À titre d’exemple, il existe un plugin pour gdb, qui permet depuis la vue terminal de Neovim de contrôler le déboggeur et d’avoir quelques fonctionnalités bien pratiques :
- Sauter dans le fichier / ligne quand gdb atteint un point d’arrêt
- Garder l’état en cours d’exécution / en pause
- Contrôler l’exécution de gdb depuis n’importe quelle fenêtre de l’éditeur et inspecter des expressions.
Pour finir, voici une petite capture d’écran :