Bagaimana saya bisa membuka Shell di dalam Jendela Vim?

112

Saya dapat membuka shell dengan menggunakan perintah: shell di Vim, namun saya tidak dapat mengedit file dan pada saat yang sama menggunakan shell.

Apakah ada cara untuk membagi Vim di banyak Windows (atau tab), dan membuka shell di salah satunya?

Martín Fixman
sumber
1
Dulu ada patch shell di luar sana untuk vim tetapi tidak dapat dikompilasi lagi afaik. Cara terdekat untuk mendapatkan shell sebenarnya adalah dengan menggunakan screen atau tmux. Ini adalah hal terbesar yang saya lewatkan di vim.
Randy Morris
2
Sepertinya duplikat stackoverflow.com/questions/1236563/…
Brad Cupit

Jawaban:

85

Neovim dan Vim 8.2mendukung ini secara native melalui :ter[minal]perintah.

Lihat terminal-window di dokumen untuk detailnya.

perepet
sumber
5
Ini harus menjadi solusi yang diterima untuk vim> = 8.0.
amath
3
Bagaimana cara membagi terminal secara vertikal?
Kiran Kumar Kotari
2
Coba @KiranKumarKotari vsplit term://bashjika Anda menggunakan Neovim.
prater
4
dengan vim 8.0 atau yang lebih baru, terminalperintah membagi jendela dan memberikan shell perintah dengan warna khusus pada bilah status jendela. Licin.
NoelProf
@KiranKumarKotari vert [ical] ter [minal]
MPA95
46

Tergantung pada OS Anda - sebenarnya saya tidak mengujinya di MS Windows - tetapi Conque adalah salah satu plugin terbaik di luar sana.

Sebenarnya, ini bisa lebih baik, tetapi berhasil.

Zsolt Botykai
sumber
4
Jika Anda menggunakan Vundle untuk mengelola plugin, Anda dapat menambahkan Bundle 'jewes / Conque-Shell' ke file .vimrc Anda, dan jalankan: BundleInstall untuk menginstalnya.
Mingjiang Shi
Satu hal yang harus diperhatikan: Persyaratan + python atau + python3 untuk vi bisa menjadi pembunuh di beberapa lingkungan kerja.
cfi
Ini adalah URL yang diperbarui (dengan tangkapan layar): github.com/wkentaro/conque.vim
Walty Yeung
18

:vspatau :sp- membagi vim menjadi dua, tetapi Anda tidak dapat menggunakan: shell hanya pada salah satunya.

Mengapa tidak menampilkan tab lain dari terminal, bukan tab vim lainnya. Jika Anda menyukai idenya, Anda dapat mencobanya: Ctrl-shift-t.dan beralih di antara ide tersebut dengan Ctrl - pageupdanCtrl - pagedown

Jika Anda hanya menginginkan beberapa perintah shell, Anda dapat membuat perintah shell di vim menggunakan !

Misalnya :!./a.out.

vladv
sumber
1
Dan untuk menjalankan executable yang saat ini terbuka Anda dapat menggunakan vimsihir jalur seperti ini::!./%
cprn
Mengapa tidak menampilkan tab lain dari terminal - tidak semua orang menggunakan vim di emulator terminal di atas GUI… Dari Ctrl-apa pun saya kira jawaban Anda mengasumsikan gnome-terminal atau emulator serupa.
törzsmókus
8

Anda dapat menggunakan tmuxatau screen(detik hanya dapat melakukan pemisahan horizontal tanpa patch) untuk membagi terminal Anda. Tapi saya tidak tahu cara untuk memiliki satu contoh Vim di kedua panel.

ZyX
sumber
4
layar dapat melakukan pemisahan vertikal jika Anda membangunnya dari git.
Randy Morris
8

Jika Anda belum mengetahuinya, Anda dapat menggunakan yang menakjubkan plugin layar yang .

Conque juga luar biasa tetapi menurut saya layarnya jauh lebih praktis (misalnya tidak akan "mengotori" buffer Anda dan Anda dapat mengirim perintah yang benar-benar Anda inginkan setelah mengeditnya di buffer Anda)

Eelvex
sumber
6

Saya rasa ini adalah pertanyaan yang cukup lama, tetapi sekarang di tahun 2017. Kami memiliki neovim, yang merupakan cabang dari vim yang menambahkan dukungan terminal.

Jadi memohon :termakan membuka jendela terminal. Keunggulan dari solusi ini dibandingkan dengan menggunakan tmux (terminal multiplexer) adalah Anda akan memiliki window binding yang sama dengan vimpengaturan Anda . neovim kompatibel dengan vim, jadi pada dasarnya Anda dapat menyalin dan menempel .vimrcdan itu akan berfungsi.

Keuntungan lainnya adalah Anda dapat beralih ke mode normal pada terminal yang terbuka dan Anda dapat melakukan penyalinan dan pengeditan dasar. Ini juga sangat berguna untuk git commit saya rasa, karena semua yang ada di buffer Anda dapat Anda gunakan dalam pelengkapan otomatis.

Saya akan memperbarui jawaban ini karena vim juga berencana untuk merilis dukungan terminal, mungkin di vim 8.1. Anda dapat mengikuti kemajuannya di sini: https://groups.google.com/forum/#!topic/vim_dev/Q9gUWGCeTXM

Setelah dirilis, saya yakin ini adalah pengaturan yang lebih unggul daripada menggunakan tmux.

chriz
sumber
6
Ini dirilis di Vim 8.0 saya pikir
LangeHaare
3

VimShell Shougo , yang dapat melengkapi nama file secara otomatis jika digunakan dengan neocomplcache

kuroz
sumber
1

Tidak benar-benar apa yang Anda minta, tetapi Anda mungkin tertarik dengan plugin vim-notebook saya yang memungkinkan pengguna untuk menjaga proses latar belakang tetap hidup dan membuatnya mengevaluasi bagian dari dokumen saat ini (dan untuk menulis output dalam dokumen). Ini dimaksudkan untuk digunakan pada dokumen bergaya notebook yang berisi potongan kode yang akan dievaluasi.

Thomas Baruchel
sumber
0

Anda mungkin ingin membuka program "layar", layar terpisah, shell terbuka di satu dan vim di layar lainnya. Bekerja untuk saya.

mrcybul.dll
sumber
Membatalkan -1 karena tidak ada penjelasan. Selain itu, saya menguji solusi plugin layar vim dan itu tidak jauh berbeda dari solusi mrcybul. @mrcybul: tank untuk mencoba membantu. Untuk menghindari suara negatif, baca jawaban lain dengan cermat dan tambahkan jawaban Anda hanya jika menurut Anda itu membawa sesuatu yang baru. Juga sertakan mengapa solusi Anda mungkin lebih baik dalam kasus tertentu.
Titou
0

Saya saat ini menggunakan tmux.

Instalasi: sudo apt-get install tmux Jalankan: tmux

Ctrl + b diikuti oleh Ctr +%: itu membagi jendela terminal Anda menjadi dua bagian vertikal.

Ctrl + "panah kiri | panah kanan": berpindah antar terminal.

Arturo Ruiz Mañas
sumber