Akses ke terminal saat Anda berada di Vim

40

Apakah ada cara untuk mengakses terminal saat menggunakan Vim ?

Saya tidak suka membuka terminal lain atau menyimpan dan keluar dari terminal saat ini.

Mohammad Reza Rezwani
sumber
Buka tab baru? (Ctrl + Shift + T)
Wilf
2
Berapa kali melakukan itu :) Saya tidak suka melakukan itu D:
Mohammad Reza Rezwani
1
Sudahkah Anda mencoba menggunakan manajer jendela terminal seperti tmux?
jrg

Jawaban:

67

Anda dapat mengirim sinyal SIGTSTP ke vim. Anda melakukan ini dengan menekan ctrl+ z. Vim akan ditangguhkan di latar belakang, dan Anda dapat menggunakan terminal. Ketik fgterminal untuk melanjutkan dengan vim.

Kiat bonus: Ini berfungsi pada hampir semua aplikasi terminal. Gunakan bguntuk mengaktifkan aplikasi untuk terus berjalan di latar belakang.

noleti
sumber
21
Atau %alih-alih fg. Atau %1,, %2dll. Jika Anda memiliki banyak pekerjaan latar belakang. jobsperintah akan mencantumkannya. (Diasumsikan bashsebagai cangkang.)
Ruslan
4
Saya memilih metode ^ z (dan kemudian fg), karena ini dapat digunakan di hampir semua proses shell - ini bukan hal yang vim, ini adalah trik cara menggunakan shell yang sangat berguna dalam konteks lain.
Don
35

Di vim, ketikkan saja:

:!sh

:!meluncurkan proses eksternal - dalam hal ini sh, shell lain. Kontrol akan kembali ke vim setelah Anda keluar dari shell. Jika Anda ingin menggunakan shell bersamaan dengan vim, tambahkan &ke akhir perintah sh:

:!sh&
bel
sumber
9
Atau gunakan saja :shell.
wchargin
2
Ini adalah jawaban terbaik untuk sebagian besar tujuan.
Frank Conry
Itu bagus tetapi bagaimana dengan ketika perintah menjalankan server, seperti http-serverdan itu mencetak log yang ingin saya lihat? Saya ingin dapat beralih ke file saya, mengedit, kemudian beralih kembali ke log.
Costa
21

Anda dapat menggunakan :shellperintah (atau formulir pendek :sh). Dari :help :shell:

Perintah ini memulai sebuah shell. Ketika shell keluar (setelah perintah "keluar") Anda kembali ke Vim. Nama untuk perintah shell berasal dari opsi 'shell'.

Secara default, di Ubuntu, ini akan memberi Anda bash. ketik exituntuk kembali ke vim ketika Anda selesai.

Evilsoup
sumber
8

Sejak vim baru-baru ini Anda sekarang dapat melakukan:

:terminal

Ini awalnya ditambahkan di Vim 8.0.693 , tetapi dengan banyak bug. Lihat :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.
gauteh
sumber
7

Sebagai tambahan untuk semua jawaban.

Anda dapat menginstal plugin ConqueTerm

Plugin ini memberikan kemampuan untuk menjalankan program interaktif di dalam buffer vim.

Setelah instalasi, Anda dapat menambahkan 2 baris ini ke .vimrc:

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

Dan Anda akan dapat menjalankan bashdengan menekan Shift+ T, dan menutup tab Conque saat ini dengan menekan Shift+W

Ini perferct jika Anda perlu buka / tutup cepat bash.

Berikut adalah gif yang menunjukkan bagaimana tampilannya

c0rp
sumber
dapatkah Anda mempertimbangkan untuk memperbarui posting? Tautan yang Anda sebutkan tampaknya sudah ketinggalan zaman
ggulgulia
4

Opsi lain dengan layar atau byobu adalah membuka tab di dalam program tersebut. Program-program ini membuatnya cukup mudah untuk membuat cq shell terminal-sesi terbuka dan beralih antara layar dengan keyboard.

immeëmosol
sumber
1

Dengan versi baru vim 8.1 yang perlu Anda lakukan adalah adil :terminaldan voila! (ini dibangun di)

neelabalan
sumber