Saya sudah terbiasa dengan Emacs, tetapi saya mencoba Vim untuk melihat mana yang saya sukai.
Satu hal yang saya sukai dari Emacs adalah kemampuan untuk menjalankan terminal di dalam Emacs. Apakah ini mungkin di dalam Vim? Saya tahu bahwa Anda dapat menjalankan perintah dari Vim, tetapi saya ingin dapat menjalankan terminal di dalam tab.
:! <command>
apa yang Anda cari?:term
perintah yang membuka terminal baru di jendela split baru. Jika tidak berhasil untuk Anda, periksavim --version | grep -o .terminal
untuk melihat apakah fitur ini tersedia (+terminal
) atau tidak tersedia (-terminal
).Jawaban:
Saya pasti akan merekomendasikan
screen
untuk hal seperti ini. Vim adalah editor teks, bukan shell.Saya akan menggunakan Ctrl+ASuntuk membagi jendela saat ini secara horizontal, atau di layar Ubuntu dan versi tambalan lainnya, Anda dapat menggunakan Ctrl+A|(pipa) untuk membelah secara vertikal. Kemudian gunakan Ctrl+ATab(atau ekuivalen pada beberapa sistem, Ctrl+ACtrl+Iyang mungkin lebih mudah untuk mengetik) untuk beralih di antara windows. Ada perintah lain untuk mengubah ukuran dan pengaturan windows.
Atau penggunaan yang kurang canggih
screen
hanya untuk membuka beberapa jendela layar penuh dan beralih di antara mereka. Inilah yang biasanya saya lakukan, saya hanya menggunakan fitur layar terbagi sesekali.The Survival Guide GNU Screen pertanyaan memiliki sejumlah tips yang baik jika Anda tidak terbiasa dengan penggunaannya.
sumber
Sudah usang sejak Agustus 2011
Lihat Conque Shell (juga di GitHub ). Memungkinkan Anda menjalankan program interaktif apa pun di dalam vim, bukan hanya shell.
sumber
:ConqueTerm bash <CR>
,vim <CR>
,:ConqueTerm bash
.... horor rekursif !!Saya tidak yakin apa yang ingin Anda capai (Saya belum pernah menggunakan Emacs), tetapi Anda dapat menjalankan perintah di Vim dengan mengetik:
Dan jika Anda ingin mengetik beberapa perintah, atau bermain-main di shell untuk sementara waktu, Anda selalu dapat menggunakan:
Setelah perintah atau shell berakhir, Anda akan diberikan opsi untuk menekan Enteruntuk kembali ke jendela editor Anda
Vim sengaja ringan dan kurang memiliki kemampuan untuk melakukan hal-hal non-editorial, seperti menjalankan shell full-blown di dalam panel / tab Vim, tetapi seperti yang disebutkan di atas ada tambahan pihak ketiga seperti vim-shell yang memungkinkan Anda untuk melakukan hal semacam itu.
Biasanya jika saya ingin beralih antara Vim dan shell saya (Bash), saya hanya menekan CTRL+ Zuntuk menghentikan proses Vim, bermain-main di shell saya, lalu ketik 'fg' ketika saya ingin kembali ke Vim - menjaga editor saya dan saya shell bagus dan terpisah.
sumber
:r! command [ENTER]
disebutkan dalam komentar.Cara saya menyiasati ini adalah:
fg
.sumber
:!bash
adalah cara yang lebih baik untuk melakukan itu:!bash
lebih baik daripadaCtrl+z
? (Hanya ingin tahu)Ctrl+Z
, misalnya, Anda dapat pindah ke folder lain,ls
lalugit status
, dll.Ctrl+Z
Adalah "jeda", Anda dapat "melanjutkan" denganfg
. Tetapi dengan:! Bash, sejauh yang saya tahu sejauh ini, Anda hanya dapat menjalankan satu perintah sekaligus, atau bahkan jika Anda dapat menjalankan lebih dari satu perintah sekaligus, itu masih tidak nyaman. Jadi secara keseluruhan, 'Ctrl + Z' jauh lebih baikJika diaktifkan di versi Vim Anda, terminal dapat dimulai dengan
:term
perintah.Dukungan jendela terminal ditambahkan ke Vim 8. Ini adalah fitur opsional yang dapat diaktifkan ketika mengkompilasi Vim dengan fitur + terminal. Jika versi Vim Anda memiliki dukungan terminal,
:echo has('terminal')
akan menampilkan "1".Masuk
:term
akan menempatkan Anda dalam mode Terminal-Job , di mana Anda dapat menggunakan terminal seperti yang diharapkan.Dalam mode Terminal-Job , menekan
Ctrl-W N
atauCtrl-\ Ctrl-N
mengalihkan mode ke Terminal-Normal , yang memungkinkan kursor dipindahkan dan perintah dijalankan sama dengan mode Normal Vim . Untuk beralih kembali ke mode Terminal-Job , tekani
.Jawaban lain menyebutkan fungsi serupa di Neovim.
sumber
i
setelah beralih dari mode browse ctrl-wN. Ini adalah fitur pembunuh bahkan lebih dari tmux dan berfungsi pada Windows juga.:term
?brew install vim --override-system-vi
dan:term
berfungsi dengan baik. Terima kasih telah berbagi!:vertical :term
akan terpecah secara vertikal dengan terminal di jendela kiri.:vertical :botright :term
akan terpecah secara vertikal dengan terminal di jendela kanan. Atau, Anda dapat secara manual menata jendela, dan kemudian gunakan:term ++curwin
untuk membuka terminal di jendela aktif.:sh
kemudianctrl+d
kembali (bash)Perbarui :
Anda dapat memetakan
ctrl+d
dalam vim untuk dijalankan:sh
, yang memungkinkan Anda untuk beralih antara bash dan vim dengan cepat.noremap <C-d> :sh<cr>
sumber
ctrl+z
danfg
sedikit lebih cepat, mengingat Anda tidak harus mengetikkan:sh
kasing itu.:sh
jika Anda melakukan peta. Setelahnoremap
, Anda bisa sajaCtrl+D
dari vim kesh
, dan karena^D
EOF, yang mengakhirish
, jadi Anda akan kembali ke vim. Tombol satu dapat beralih antarash
dan vim.Fitur baru utama Vim 8.1 adalah dukungan untuk menjalankan terminal di jendela Vim.
:term
akan membuka terminal di jendela lain di dalam Vim.sumber
exit
akan berhenti dari terminal, kemudian gunakan:q
untuk menutup jendelaAkhirnya
:terminal
perintah asli ditambahkan ke vim pada 2017.Berikut ini kutipan dari : terminal readme:
sumber
:bn
seperti biasa. Tidak perlu mematikan terminal dan itu bukan titik tidak bisa kembali :)Pertanyaan ini agak lama, tetapi bagi mereka yang menemukannya, ada solusi baru yang mungkin: Neovim berisi emulator terminal kelas penuh, yang melakukan persis seperti yang dicoba ConqueTerm. Cukup jalankan
:term <your command here>
.<C-\><C-n>
akan keluar dari mode term kembali ke mode normal. Jika Anda seperti saya dan lebih suka pelarian itu masih keluar dari mode term, Anda dapat menambahkan ini ke nvimrc Anda:Dan kemudian menekan ESC dua kali akan keluar dari mode terminal kembali ke mode normal, sehingga Anda dapat memanipulasi buffer yang ditulis oleh perintah yang masih berjalan.
Meskipun perlu diingat, karena nvim sedang dalam pengembangan pada saat saya memposting jawaban ini, cara lain untuk keluar dari mode terminal dapat ditambahkan. Seperti Ctrl+\Ctrl+nberalih ke mode normal dari hampir semua mode, saya tidak berharap bahwa jawaban ini akan salah, tetapi perlu diketahui bahwa jika tidak bekerja, jawaban ini mungkin sudah usang.
https://github.com/neovim/neovim
sumber
:term
Namun, fitur ini baru ditambahkan di Vim 8.1, yang mana dari postingan ini baru saja dirilis, jadi Anda mungkin perlu memperbarui untuk menggunakannya.
sumber
Saya tahu bahwa saya tidak langsung menjawab pertanyaan, tetapi saya pikir itu pendekatan yang baik. Tidak ada yang menyebut tmux (atau setidaknya bukan sebagai jawaban mandiri). Tmux adalah layar seperti multiplexor terminal. Sebagian besar barang dapat dibuat di kedua multiplexor, tetapi afaik tmux lebih mudah dikonfigurasi. Juga tmux saat ini sedang lebih aktif dikembangkan daripada layar dan ada ekosistem yang cukup besar di sekitarnya, seperti alat yang membantu konfigurasi, ECC.
Juga untuk vim, ada plugin lain: ViMUX , yang banyak membantu dalam interaksi antara kedua alat. Anda dapat memanggil perintah dengan:
:call VimuxRunCommand("ls")
Perintah itu menciptakan pemisahan horizontal kecil di bawah pane vim saat ini.
Itu juga dapat membiarkan Anda lari dari prompt jika Anda tidak ingin menjalankan seluruh perintah:
<Leader>vp :VimuxPromptCommand<CR>
Karena itu tidak cukup, setidaknya ada 6 'plugin khusus platform':
g:vroom_use_vimux
Berikut ini adalah "kasus penggunaan" yang bagus: Pengujian sesuai permintaan menggunakan Vimux dan Turbux dengan Spork and Guard
sumber
Seseorang telah menyarankan https://github.com/Shougo/vimshell.vim , tetapi mereka tidak menyebutkan alasannya. Akibatnya, ketika saya keluar dari pertanyaan ini, saya membuang banyak waktu untuk mencoba pilihan lain (yang berperingkat lebih tinggi).
Shougo / vimshell adalah jawabannya. Inilah alasannya:
Selain sebagai emulator terminal, VimShell memungkinkan Anda untuk menavigasi output terminal dalam mode normal dan visual. Dengan demikian, jika perintah yang Anda jalankan menghasilkan keluaran yang ingin Anda salin dan tempel menggunakan keyboard saja ... VimShell mencakup ini.
Tidak ada opsi lain yang disebutkan, termasuk: perintah terminal di NeoVim melakukan ini. Neovim's: terminal mendekati, tetapi gagal dalam setidaknya cara berikut pada 2/18/2017:
Memindahkan kursor ke ujung buffer, bukan pada yang terakhir menyimpannya di tempat yang sama seperti yang dilakukan VimShell. Buang-buang waktu.
Tidak mendukung
modifiable = 1
melihat diskusi tentang ini di Github , plugin yang sangat membantu seperti vim-easymotion tidak dapat digunakan.Tidak mendukung tampilan nomor baris seperti yang dilakukan Vimshell.
Jangan buang waktu untuk opsi lain, termasuk terminal Neovim :. Pergilah dengan VimShell.
sumber
:terminal
benar-benar dapat melakukan hal yang sama.:terminal
tidak dapat melakukan hal yang sama seperti:VimShell
dalam hal navigasi dan pengeditan, dan dengan cara yang mendasar. Lihat penjelasan edit di atas.Anda mungkin ingin melihat
:sh
perintah (lihat:help sh
di Vim).Berbagai perintah
sumber
set shell=/bin/sh
akan membuat vim menggunakan shell yang lebih tenang untuk perintahnya.Tidak Anda tidak bisa:
http://vimdoc.sourceforge.net/htmldoc/tips.html#shell-window
sumber
splitvt
- itu merusak kode kontrol warna dan membuatvim
sama sekali tidak dapat digunakan.Satu-satunya cara saya tahu adalah dengan menggunakan vim-shell , patch pihak ketiga.
sumber
Saya menggunakan ini sekarang, Anda dapat mencoba. VimShell
sumber
Coba vterm , yang merupakan shell fitur lengkap di dalam vim. Ini sedikit bermasalah dengan sejarah dan fungsi yang jelas, dan masih dalam pengembangan, tetapi masih cukup bagus
sumber
Dengan asumsi versi vim Anda mendukung
+term
perintah terlebih dahulu, atur shell untuk vim untuk digunakan dalam satu perintah (misalnyaset=/usr/bin/zsh
), dan kemudian jalankan perintah+term
(yaitubo 15vs +term
). Anda mungkin harus melakukan beberapa manuver tambahan dari jendela Anda (yaitu menghapus satu dan memutar), tetapi Anda akan memiliki terminal Anda.sumber
Saya mengakui bahwa saya tidak benar-benar menjawab pertanyaan Anda, tetapi apa yang telah bekerja lebih baik bagi saya ketika menggunakan Vim dan Terminal di jendela yang sama adalah Tmux (yang merupakan semacam "run in the background software" seperti, mirip dengan layar, meskipun ini satu berfungsi lebih baik dengan pemisahan dan tab).
Posting ini akan membantu Anda memahami bagaimana mereka bekerja bersama: 'Tmux dan Vim - bahkan lebih baik bersama' .
Dengan cara ini kita dapat mengubah Vim menjadi IDE yang kuat
sumber
Split layar dan jalankan perintah
term ++curwin
untuk menjalankan terminal di dalam buffer Vim. Perintah berikut melakukan keduanya dan bekerja untuk saya:sumber