Вийдіть з vim швидше


124

Я використовую Vim в основному для швидкого редагування, а не для тривалих робочих сесій. У цьому сенсі, я вважаю послідовність клавіатури для відмови від куріння , особливо трудомісткий: Esc, Shift+ ;, w, q, Enter.

Як вийти з Vim (можливо, зберегти документ) найменшими натисканнями клавіш? Особливо з режиму Вставка.


50
Знаєте, кнопка живлення - лише один клік.
Ренан

2
@jasonwryan правий - ZZ досить швидкий, якщо ти в командному режимі, але порівняння не зовсім правильне. Ваша послідовність ключів передбачає, що ви перебуваєте у моді вставки. Вийти з режиму вставки Ctrl- [швидше, ніж Esc. Shift-: це один натискання клавіші - ви не можете вводити: будь-який швидший самостійно. Так ви заощадите деякі, але не дуже.
Домінік Кронін

2
Ви не повинні використовувати Escдля виходу з режиму вставки, оскільки Escклавіша далека від інших на сучасних клавіатурах. Використовуйте Ctrl+ ]або створіть власне відображення.
void-pointer

3
Отримайте французьку клавіатуру - ви можете усунути зміну.
Багатий

1
void-pointer, чи не працює Ctrl + C замість Ctrl + [як заміна Esc?
zumalifeguard

Відповіді:


154

Shiftzz в командному режимі зберігає файл і виходить.


4
Це абсолютно потрібно Shift або це просто Z Z(верхній регістр)? Крім того, вам не потрібно бути в командному режимі, щоб він працював, що призвело б до цього Esc Z Z?
CVn

35
Також ESC Z Qвийти без збереження
Carlos Campderrós

Strg + zz - це просто неправильно. Він відправить процес vim у фоновий режим
hek2mgl

2
@ MichaelKjörling: ZZ просто потребує великих літер.
LarsH

2
Це закриває лише один файл. У мене відкрито багато вкладок, тому це займе тонни Zs.
Філіп

41

ZZу звичайному режимі зберігає поточний файл, якщо його змінено та закриває або закриває поточне вікно / вкладку (те саме, що :xне :wqзаписує файл, навіть якщо він не був змінений).

Щоб вийти беззастережно після написання всіх змінених файлів у всі вікна, вкладки та приховані буфери, вам потрібно :xa(він все одно не вийде, якщо деякі файли неможливо записати з тієї чи іншої причини)

Вийти беззастережно, не змінюючи нічого: ZQ(те саме :q!).


1
Я думаю, ти маєш на увазі нормальний режим. "Командний режим" можна легко сплутати з режимом командного рядка
Девід Браун

@DavidBrown, command modeце традиційна назва, але я згоден, що normal modeце менш неоднозначно. Я змінив відповідь.
Стефан Шазелас

33

:x є одним ключем менше, ніж :wq


11
Не так добре, як Shift + Z Zніби!
CodeMedic

@CodeMedic Це набагато швидше, якщо у вас є nno : ;і nno ; :все-таки. (плюс вно ж). Я був сумнівним щодо свопу, але ти вже ніколи не повернешся. :nno ,: :silent! unmap :<CR>:silent! unmap ;<CR>і :nno ,; :nno ; :<CR>:nno : ;<CR>:vno ; :<CR>:vno : ;<CR>підтримувати непарне yap@"і таке.
jthill

20

Створіть спеціальне відображення для часто використовуваних завдань. Якщо ви виходите з vim часто, створіть карту за допомогою декількох клавіш, наприклад,

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

Якщо <leader>для кома встановлено let mapleader = ","два рази, натискання на кому - це швидкий спосіб виходу з vim та збереження змін. Якщо ви хочете зберегти ще один ключовий штрих, коли ви перебуваєте у режимі вставки, також створіть відповідне відображення режиму вставки:

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

Але будьте обережні, це може вийти випадково, коли ви натиснете <leaderдвічі.


1
Дякую за ретельну відповідь, це спонукає мене дізнатися більше про vim (чого я, як правило, уникаю)!
vemv

4
@vemv, вам слід працювати навпаки - кожен раз, коли вам доведеться робити те ж саме не раз, подивіться, чи є спосіб це зупинити!
Уейн Вернер

17

Використовуйте це, щоб зробити магію. Два натискання клавіш!

Ctrl+ sзберегти,

ctrl+ dзберегти та вийти,

ctrl+ qдля виходу із відміни змін.

1-й. Покладіть це на ваш ~ / .bashrc

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

2-й. Розмістіть це на своєму ~ / .vimrc

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>

3-й. Перезапустіть vim та отримайте більш продуктивні дні!


2
Навіщо використовувати CTRL + D / CTRL + Q для збереження + виходу, а не лише ZZ та ZQ?
Еван Керролл

Привіт Еване, ctrl + d / ctrl + q просто потрібні два натискання клавіш, тоді як ZZ та ZQ потрібні три натискання клавіш. shift + z + z / shift + q + q. Один клавіш збереження є важливим, якщо ми робимо це часто. Більше того, ми підняли ctrl + s як збереження ярлика, я думаю, що це більш інтуїтивно зрозуміло, ніж ZZ чи ZQ.
Мозок90

3
Я завжди вважав ZQ небезпечним. Ви можете мати намір натиснути ZQ, щоб не зберегти, але якщо ви випадково натиснули Z двічі, ви пішли і зберегли файл без жодного значення.
Кіт Дівенс

1
якщо ви перебуваєте на комп'ютері, тоді використовуйте ~ / .bash_profile. І не забудьте джерело його.
Snowcrash

16

Як щодо Q"Виходу"?

Для цього знадобиться лише один змінений натискання клавіші (тобто Shiftі Q). Це також ключове поєднання, яке мене рідко потрапляє випадково.

За замовчуванням vim відображає Q на switch to "Ex" mode. Якщо ви вважаєте, що режим "Ex" є марним (або дратівливим), як і я, то його функцію за замовчуванням взагалі не пропустите.

Ось що я маю у своєму .vimrcфайлі:

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

Якщо у вас немає збережених буферів, вони підкажуть перед виходом.


якимось чином у моєму VIM Q вже :qза замовчуванням було відображено . Дякую за пораду.
користувач13107

7

Ось шпаргалка для VIM

Шпаргалка для 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.

Трошки більше ::

Закриття та збереження файлів

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.

Останні 2 повинні додати "з останнього разу, коли файл було збережено" ... це "очевидно", але початківець може зрозуміти "чудово, це з моменту відкриття vi", і виявити, що ні, якщо вони збереглися під час сеансу, ": q! " взагалі не відновить оригінальний файл, а також ": e!". Він просто відкине модифікації, що відбулися з моменту останнього відкриття або збереження файлу (залежно від останнього).
Олів'є Дулак

3

Моє просте і зручне рішення для виходу та збереження від vim - це:

Ctrl+ Xярлик.

Додайте цей код у .vimrcфайл:

"Fast quit and save from normal and insert mode
:map <C-X> <ESC>:x<CR>
:imap <C-X> <ESC>:x<CR>

1
Добре, але чому це <C-Q>не відображається?
friederbluemle

2

Спробуйте

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

Якщо ви використовуєте fFtT, до цього знадобиться деяке звикання, але тепер вийдіть, ;xщоб зберегти, якщо потрібно, ;qщоб не заощаджувати. Крім того, все інше теж стає швидшим.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.