Keluar vim lebih cepat

124

Saya menggunakan Vim terutama untuk mengedit cepat daripada sesi kerja yang panjang. Dalam hal ini, saya menemukan urutan keyboard untuk berhenti terutama melelahkan: Esc, Shift+ ;, w, q, Enter.

Bagaimana cara menghentikan Vim (mungkin menyimpan dokumen) dengan penekanan tombol paling sedikit? Terutama dari mode Insert.

vemv
sumber
50
Tombol power hanya dengan satu klik saja, Anda tahu.
Renan
2
@jasonwryan benar - ZZ cukup cepat jika Anda dalam mode perintah, tetapi perbandingannya kurang tepat. Urutan kunci Anda mengasumsikan bahwa Anda berada dalam sisipan mod. Untuk keluar dari mode masukkan Ctrl- [lebih cepat dari Esc. Shift-: adalah satu penekanan tombol - Anda tidak dapat mengetik: lebih cepat dengan sendirinya. Jadi Anda menghemat sedikit, tetapi tidak banyak.
Dominic Cronin
2
Anda tidak boleh menggunakan Escuntuk keluar dari mode penyisipan, karena Esckuncinya jauh dari yang lain pada keyboard modern. Gunakan Ctrl+ ]atau buat pemetaan Anda sendiri.
void-pointer
3
Dapatkan keyboard Prancis - Anda dapat menghilangkan shift.
Kaya
1
void-pointer, bukankah Ctrl + C berfungsi sebagai ganti Ctrl + [sebagai pengganti Esc?
zumalifeguard

Jawaban:

154

Shiftzz dalam mode perintah menyimpan file dan keluar.

jasonwryan
sumber
4
Apakah ini benar-benar perlu Shift atau hanya Z Z(huruf besar)? Juga, bukankah Anda harus dalam mode perintah agar bisa berfungsi, yang akan membuatnya Esc Z Z?
CVn
35
Juga, ESC Z Quntuk keluar tanpa menyimpan
Carlos Campderrós
Strg + zz salah. Ini akan mengirim proses vim ke latar belakang
hek2mgl
2
@ MichaelKjörling: ZZ hanya perlu huruf besar.
LarsH
2
Ini hanya menutup satu file saja. Saya memiliki banyak tab yang terbuka sehingga akan membutuhkan banyak Zs.
Philip
41

ZZdalam mode normal menyimpan file saat ini jika dimodifikasi dan keluar atau menutup jendela / tab saat ini (sama seperti :xtetapi tidak :wqyang menulis file bahkan jika belum dimodifikasi).

Untuk keluar tanpa syarat setelah menulis semua file yang dimodifikasi di semua jendela, tab dan buffer tersembunyi, Anda perlu :xa(itu masih tidak akan keluar jika beberapa file tidak dapat ditulis karena suatu alasan)

Untuk keluar tanpa syarat tanpa mengubah apa pun: ZQ(sama seperti :q!).

Stéphane Chazelas
sumber
1
Saya pikir maksud Anda mode normal. "command mode" dapat dengan mudah dikacaukan dengan mode command-line
David Brown
@ DavidvidBrown, command modeadalah nama tradisional, tapi saya setuju itu normal modekurang ambigu. Saya telah mengubah jawabannya.
Stéphane Chazelas
33

:x kurang dari satu kunci :wq

Tomasz Myrta
sumber
11
Tidak sebagus itu Shift + Z Z!
CodeMedic
@CodeMedic Jauh dan tercepat jika Anda punya nno : ;dan nno ; :, meskipun. (plus tidak sama). Saya ragu tentang swap, tetapi Anda tidak akan pernah kembali. :nno ,: :silent! unmap :<CR>:silent! unmap ;<CR>dan :nno ,; :nno ; :<CR>:nno : ;<CR>:vno ; :<CR>:vno : ;<CR>mendukung yang ganjil yap@"dan semacamnya.
jthill
20

Buat pemetaan khusus untuk tugas yang sering digunakan. Jika Anda sering keluar dari vim, buat pemetaan dengan beberapa goresan kunci, misalnya

nnoremap <leader><leader> :xa<cr>

Jika <leader>diset ke koma menggunakan koma let mapleader = ","memukul dua kali adalah cara cepat untuk menghentikan vim dan menyimpan perubahan Anda. Jika Anda ingin menyimpan satu lagi stroke key ketika Anda berada dalam mode insert, buat juga pemetaan mode insert yang sesuai:

inoremap <leader><leader> <esc>:xa<cr>

Tapi hati-hati, ini mungkin secara tidak sengaja cukup vim ketika Anda menekan <leaderdua kali.

Marco
sumber
1
Terima kasih atas jawaban yang menyeluruh, ini mendorong saya untuk belajar lebih banyak tentang vim (yang cenderung saya hindari)!
vemv
4
@vemv, Anda harus bekerja sebaliknya - setiap kali Anda harus melakukan hal yang sama lebih dari sekali, lihat apakah ada cara untuk menghentikannya!
Wayne Werner
17

Gunakan ini untuk melakukan keajaiban. Hanya dua kali penekanan tombol!

Ctrl+ suntuk menyimpan,

ctrl+ duntuk menyimpan dan keluar,

ctrl+ quntuk keluar dari perubahan yang dibuang.

1 Letakkan ini di ~ / .bashrc Anda

bind -r '\C-s'
stty -ixon

Ke-2 Tempatkan ini ke ~ / .vimrc Anda

inoremap <C-s> <esc>:w<cr>                 " save files
nnoremap <C-s> :w<cr>
inoremap <C-d> <esc>:wq!<cr>               " save and exit
nnoremap <C-d> :wq!<cr>
inoremap <C-q> <esc>:qa!<cr>               " quit discarding changes
nnoremap <C-q> :qa!<cr>

Ke-3 Mulai ulang vim dan dapatkan hari yang lebih produktif!

Brain90
sumber
2
Mengapa menggunakan CTRL + D / CTRL + Q untuk menyimpan + keluar, dan bukan hanya ZZ, dan ZQ?
Evan Carroll
Hai Evan, ctrl + d / ctrl + q hanya perlu dua keystroke, sedangkan ZZ dan ZQ perlu tiga keystroke. shift + z + z / shift + q + q. Satu kunci simpanan penting jika kita sering melakukannya. Selain itu kami meningkatkan dengan ctrl + s sebagai cara pintas hemat, saya pikir itu lebih intuitif daripada ZZ atau ZQ.
Brain90
4
Saya selalu menganggap ZQ berbahaya. Anda dapat menekan ZQ untuk tidak menyimpan, tetapi jika Anda secara tidak sengaja menekan Z dua kali, Anda pergi dan menyimpan file Anda tanpa sengaja.
Keith Devens
1
jika Anda menggunakan mac maka gunakan ~ / .bash_profile. Dan ingat untuk sumbernya.
Snowcrash
16

Bagaimana kalau hanya Quntuk 'Berhenti'?

Itu hanya akan membutuhkan satu keystroke bergeser (yaitu Shiftdan Q). Ini juga merupakan kombinasi kunci yang jarang saya alami.

Secara default, vim memetakan Q ke switch to "Ex" mode. Jika Anda menemukan mode "Ex" tidak berguna (atau menjengkelkan) seperti saya, maka Anda tidak akan kehilangan fungsi default sama sekali.

Inilah yang saya miliki di .vimrcfile saya :

" allow quit via single keypress (Q)
map Q :qa<CR>

Jika Anda memiliki buffer yang belum disimpan, itu akan meminta Anda sebelum keluar.

Lambart
sumber
entah bagaimana di VIM Q saya sudah dipetakan :qsecara default. Terima kasih atas tipnya.
user13107
7

Ini lembar contekan untuk VIM

Cheat-sheet-for-VIM

To quit the vi editor without saving any changes you've made:

If you are currently in insert or append mode, press Esc. 

Press  :  (colon). The cursor should reappear at the lower left corner of the screen beside a colon prompt. 

Enter the following:
  q!
This will quit the editor, and all changes you have made to the document will be lost.

Lebih lagi ::

Menutup dan Menyimpan File

When you edit a file in vi, you are actually editing a copy of the file rather than the original. The following sections describe methods you might use when closing a file, quitting vi, or both.
Quitting and Saving a File

The command ZZ (notice that it is in uppercase) will allow you to quit vi and save the edits made to a file. You will then return to a Unix prompt. Note that you can also use the following commands:

:w  to save your file but not quit vi (this is good to do periodically in
    case of machine crash!).
:q  to quit if you haven't made any edits.
:wq to quit and save edits (basically the same as ZZ).
Quitting without Saving Edits

Sometimes, when you create a mess (when you first start using vi this is easy to do!) you may wish to erase all edits made to the file and either start over or quit. To do this, you can choose from the following two commands:

:e! reads the original file back in so that you can start over.
:q! wipes out all edits and allows you to exit from vi.
vkulkarni
sumber
2 terakhir harus menambahkan "sejak terakhir kali file disimpan" ... itu "jelas" tetapi seorang pemula bisa mengerti "hebat, itu sejak saya membuka vi", dan menemukan bahwa tidak, jika mereka disimpan selama sesi, ": q! " tidak akan memulihkan file asli sama sekali, dan tidak akan ": e!". Itu hanya akan membuang modifikasi yang terjadi sejak terakhir kali file dibuka atau disimpan (mana yang terbaru).
Olivier Dulac
3

Solusi sederhana dan nyaman saya untuk berhenti dan menyimpan dari vim - adalah:

Ctrl+ Xpintasan.

Jut tambahkan kode ini ke .vimrcfile:

"Fast quit and save from normal and insert mode
:map <C-X> <ESC>:x<CR>
:imap <C-X> <ESC>:x<CR>
pencukur langit
sumber
1
Bagus, tapi mengapa <C-Q>tidak bisa dipetakan?
friederbluemle
2

Mencoba

nno : ;
nno ; :
vno : ;
vno ; :

Jika Anda menggunakan fFtT, ini akan memerlukan waktu untuk membiasakan diri, tetapi sekarang berhenti hanya ;xuntuk menyelamatkan jika diperlukan, ;quntuk tidak menyimpan. Plus, segala sesuatu menjadi lebih cepat juga.

jthill
sumber