Cara keluar sementara Vim dan kembali

303

Bagaimana saya bisa keluar dari Vim, tidak :q, dan kemudian kembali untuk melanjutkan pengeditan?

Ricky
sumber

Jawaban:

571

Dengan asumsi terminal Vim dengan citarasa * nix:

Untuk menunda Vim Anda yang sedang berjalan

Ctrl + Z

akan menunda proses dan kembali ke shell Anda

fg

akan melanjutkan (membawa ke f bijih g putaran) Vim Anda ditangguhkan.

Untuk memulai shell baru

Mulai subkulit menggunakan:

:sh

(seperti yang dikonfigurasikan oleh)

:set shell?

atau

:!bash

diikuti oleh:

Ctrl+ D(atau exit, tapi mengapa mengetik begitu banyak?)

untuk membunuh shell dan kembali ke Vim.

zen
sumber
5
psuntuk melihat proses latar depan unix.stackexchange.com/questions/6115/…
Vlad Vinnikov
1
Bagaimana jika saya ingin terus menjalankan server saya saat mengedit file saya. Sebagai contoh, katakanlah saya lakukan nodemon app.js(nodemon menyegarkan server pada pengeditan file untuk Anda) dan kemudian saya ingin kembali ke pengeditan vim saya. Bisakah saya melakukannya tanpa dua jendela terminal yang terpisah?
Costa
5
atau jobsuntuk mengunjungi proses latar depan dengan judul (untuk saya) yang lebih mudah dibaca. Lalu misalnya fg %2untuk memilih yang kedua.
isomorfisma
Jika ini tidak berhasil untuk Anda dan control-zbertindak sebagai 'undo' periksa vimrc Anda untuk melihat apakah behave mswinada. Jika dihapus dan control-zakan bekerja
schuess
3
di windows Anda bisa kembali ke vim jika Anda mengetikexit
JonnyRaa
107

Anda dapat menggunakan :shuntuk keluar ke shell default Anda kemudian mengetik $ exitdi prompt shell akan mengembalikan Anda ke Vim.

Pierre-Antoine LaFayette
sumber
1
Saya berharap saya bisa memperbaiki ini lebih keras. Inilah sebabnya: shell ada.
Randy Morris
8
Agar adil, terkadang Anda menginginkan lingkungan yang sama, bukan lingkungan subkulit. Jadi, jika Anda mencari perubahan variabel lingkungan ketika Anda keluar sepenuhnya dari Vim, Anda ingin CTRL-z /: sus.
Tango Bravo
Dapat digunakan $ psuntuk mengetahui apakah kita berada dalam sub-shell vim sebelum menelepon $ exituntuk menghindari penutupan terminal secara tidak sengaja. Menemukan ini di sini (saya belum mencoba indikator cepat yang disebutkan di situs web).
Daniel
34

Anda dapat beralih ke mode shell untuk sementara dengan:

:! <command>

seperti

:! ls
Jay Zeng
sumber
14

Jika Anda menggunakan sistem Unix, Ctrl+ Zakan menangguhkan Vim dan memberi Anda shell.

Ketik fguntuk kembali. Perhatikan bahwa Vim membuat file swap saat mengedit, dan menangguhkan Vim tidak akan menghapus file itu (Anda tidak keluar dari Vim setelah semua). Pada terminal bisu, metode ini cukup standar untuk siklus edit-kompilasi-edit menggunakan vi . Saya baru tahu bahwa bagi saya, gVim meminimalkan pengetikan Z.

Alok Singhal
sumber
13

Anda juga dapat melakukannya dengan :susjatuh ke shell dan kembali oleh fg.

solotim
sumber
5

Ada beberapa cara untuk keluar dari Vim dan memiliki semuanya tetap sama saat Anda kembali. Ada dokumentasi yang sangat bagus di dalam Vim sendiri yang menjelaskan berbagai cara yang bisa dilakukan. Anda dapat menggunakan perintah berikut dalam vim untuk mengakses halaman bantuan yang relevan::help usr_21

Untuk memberikan ringkasan singkat kepada Anda, berikut adalah berbagai metode untuk berhenti dan kembali dengan sesi Anda yang utuh:

  1. Tangguhkan dan lanjutkan - Anda tidak benar-benar keluar dari Vim dengan ini; Anda cukup menyembunyikan sesi Anda di latar belakang sampai Anda membutuhkannya. Jika Anda mereset komputer Anda atau mengeluarkan perintah kill ke Vim, Anda akan kehilangan sesi Anda. Ini bagus untuk ketika Anda ingin beralih ke tugas lain sementara, tetapi jika ini masalahnya, maka Anda mungkin ingin melihat ke dalam menggunakan utilitas Layar GNU sebagai gantinya.

  2. Sesi - Ini adalah cara sebenarnya untuk menyimpan sesi Anda di antara instance Vim. Bahkan jika Anda benar-benar keluar dari Vim, sesi Anda akan ada untuk Anda ketika Anda kembali. Ini mungkin yang Anda cari.

Orang Swiss
sumber
5

Untuk memperluas jawaban pengguna Zen , Anda bisa menambahkan baris berikut di ~/.vimrcfile Anda untuk memungkinkan beralih cepat antara Bash dan Vim:

noremap <C-d> :sh<cr>
xaa
sumber
lima tahun kemudian saya hanya ingin menyebutkan bahwa menggunakan Cd mungkin merupakan saran yang buruk karena menimpa perilaku default Vim. Jendela ctrl-d scoll ke arah dalam buffer secara default. lihat vimdoc.sourceforge.net/htmldoc/scroll.html#CTRL-D
xaa
3

Cukup masukkan fgdan kembali ke program Anda yang terakhir ditangguhkan.

Falcucci
sumber
3

Jika Anda menggunakan Neovim , Anda dapat melakukan hal berikut:

  • :terminal perintah untuk membuka jendela terminal.
  • Lakukan hal terminal Anda
  • Ketik exituntuk mematikan proses terminal
  • Tekan tombol apa saja untuk kembali ke Neovim
loeschg
sumber
0

Jika Anda tidak keberatan menggunakan mouse Anda sedikit:

  • Mulai terminal Anda,
  • pilih file,
  • pilih Open Tab .

Ini menciptakan tab baru pada terminal tempat Anda dapat menjalankan Vim. Sekarang gunakan mouse Anda untuk beralih ke / dari terminal. Saya lebih suka ini daripada selalu harus mengetik ( :shelldan keluar).

Pius IK
sumber