web-dev-qa-db-fra.com

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

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

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

40

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 fg dans le terminal pour le reprendre avec vim.

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

67
noleti

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 souhaitez utiliser le shell simultanément avec vim, ajoutez & à la fin de la commande sh:

:!sh&
35
sbell

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

Cette commande démarre 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 exit pour revenir à vim lorsque vous avez terminé.

21
evilsoup

Depuis récemment vim vous pouvez maintenant faire:

:terminal

Cela a été initialement ajouté dans Vim 8.0.69 , 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
gauteh

En plus de toutes les réponses.

Vous pouvez installer 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 exécuter bashen appuyant sur Shift + Tet fermez l'onglet Conque actuel en appuyant sur Shift + W

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

Voici gif qui montre à quoi ça ressemble

7
c0rp

Une autre option avec screen ou byobu est d'ouvrir un onglet dans ces programmes. Ces programmes rendent assez facile de garder un c.q. Shell ouvert et basculer entre ces écrans avec le clavier.

4
immeëmosol

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

1
neelabalan