Accès au terminal pendant que vous êtes sur Vim


40

Y at-il un moyen d'accéder au terminal tout en utilisant Vim ?

Je n'aime pas ouvrir un autre terminal ou enregistrer et quitter le terminal actuel.


Ouvrir un nouvel onglet? (Ctrl + Maj + T)
Wilf

2
Combien de fois fais ça :) Je n'aime pas faire ça D:
Mohammad Reza Rezwani

1
Avez-vous essayé d'utiliser un gestionnaire de fenêtres de terminal comme tmux?
Jrg

Réponses:


67

Vous pouvez envoyer à vim le signal SIGTSTP. Vous faites cela en appuyant sur ctrl+ z. Vim sera suspendu en arrière-plan et vous pourrez utiliser le terminal. Tapez fgle terminal à reprendre avec vim.

Astuce bonus: cela fonctionne sur presque toutes les applications de terminaux. Utilisez cette option bgpour permettre à l'application de continuer à s'exécuter en arrière-plan.


21
Ou juste %au lieu de fg. Ou %1, %2etc. si vous avez plusieurs emplois en arrière-plan. jobscommande les listera. (En supposant bashque la coquille.)
Ruslan

4
Je vote pour la méthode ^ z (et plus tard fg), car elle peut être utilisée dans presque tous les processus shell - ce n'est pas un truc vim, c'est un truc d'utilisation pratique qui est incroyablement utile dans d'autres contextes.
dman

35

Dans vim, tapez simplement:

:!sh

:!lance un processus externe - dans ce cas sh, un autre shell. Le contrôle reviendra à vim une fois que vous aurez quitté le shell. Si vous voulez utiliser le shell simultanément avec vim, ajoutez &à la fin de la commande sh:

:!sh&

9
Ou simplement utiliser :shell.
wchargin

2
C'est la meilleure réponse pour la plupart des objectifs.
Frank Conry

C'est bien, mais qu'en est-il lorsque la commande exécute un serveur, par exemple, http-serveret qu'elle imprime les journaux que je souhaite afficher? J'aimerais pouvoir basculer dans mes fichiers, apporter des modifications, puis revenir aux journaux.
Costa

21

Vous pouvez utiliser la :shellcommande (ou la forme abrégée :sh). De :help :shell:

Cette commande lance un shell. Lorsque le shell se ferme (après la commande "exit"), vous revenez à Vim. Le nom de la commande shell provient de l'option 'shell'.

Par défaut, sur Ubuntu, cela vous donnera bash. tapez exitpour revenir à vim lorsque vous avez terminé.


8

Depuis récemment vim vous pouvez maintenant faire:

:terminal

Cela a été initialement ajouté dans Vim 8.0.693 , mais avec beaucoup de bugs. Voir :help terminal:

WARNING: THIS IS ONLY PARTLY IMPLEMENTED, ANYTHING CAN STILL CHANGE

The terminal feature is optional, use this to check if your Vim has it: 
        echo has('terminal')
If the result is "1" you have it.   

[...]

The terminal feature requires the +multi_byte, +job and +channel features.

==============================================================================
1. Basic use                                            terminal-use

This feature is for running a terminal emulator in a Vim window.  A job can be
started connected to the terminal emulator. For example, to run a shell: 
     :term bash

Or to run a debugger: 
     :term gdb vim

The job runs asynchronously from Vim, the window will be updated to show
output from the job, also  while editing in any other window.

7

En plus de toutes les réponses.

Vous pouvez installer le plugin ConqueTerm

Ce plugin offre la possibilité d’exécuter des programmes interactifs dans les tampons vim.

Après l'installation, vous pouvez ajouter ces 2 lignes à votre .vimrc:

:nnoremap <S-w> :q!<CR>
:nnoremap <S-t> :ConqueTermSplit bash<CR>

Et vous pourrez courir bashen appuyant sur Shift+ Tet fermer l'onglet actuel de Conque en appuyant sur Shift+W

C'est perferct si vous avez besoin d'une ouverture / fermeture rapide bash.

Voici un gif qui montre à quoi ça ressemble


Pouvez-vous s'il vous plaît envisager de mettre à jour les messages? Les liens que vous avez mentionnés semblent obsolètes
ggulgulia

4

Une autre option avec screen ou byobu est d'ouvrir un onglet dans ces programmes. Ces programmes rendent assez facile de garder un shell cq de session-terminal ouvert et de basculer entre ces écrans avec le clavier.


1

Avec la nouvelle version de vim 8.1, tout ce que vous avez à faire est juste :terminalet le tour est joué! (ceci est construit dans)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.