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.


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.


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&

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.


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.

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


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.


1

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.