更快地退出vim


124

我主要将Vim用于快速编辑,而不是长时间的工作。在这个意义上,我觉得戒烟特别费力的键盘序列EscShift+ ;wqEnter

如何以最少的击键退出Vim(可能保存文档)?特别是在插入模式下。


50
您知道,电源按钮只需单击一下即可。
Renan

2
@jasonwryan是正确的-如果您处于命令模式,则ZZ很快,但是比较不太正确。您的按键顺序假定您处于插入模式。要退出插入模式,Ctrl- [比Esc更快。Shift-:是一个按键-您不能输入:单独输入即可。因此,您可以节省一些,但数量不多。
Dominic Cronin

2
您不应该使用Esc退出插入模式,因为该Esc键与现代键盘上的其他键相距甚远。使用Ctrl+ ]或创建自己的映射。
void-pointer

3
使用法语键盘-您可以消除这种转变。
丰富

1
无效指针,用Ctrl + C代替Ctrl + [是否可以代替Esc?
zumalifeguard

Answers:


154

Shiftzz 在命令模式下,保存文件并退出。


4
这是绝对需要Shift还是简单地Z Z(大写)?另外,您是否不需要处于命令模式才能工作,这会使它工作Esc Z Z
2013年

35
另外,ESC Z Q要退出而不保存
CarlosCampderrós13年

Strg + zz是错误的。它将把vim进程发送到后台
hek2mgl 2013年

2
@MichaelKjörling:ZZ只需要大写即可。
LarsH 2013年

2
不过,这只会关闭一个文件。我打开了很多标签,所以要花很多Z。
菲利普(Philip)

41

ZZ在正常模式下,如果修改了文件,则会保存当前文件,然后退出或关闭当前窗口/标签页(与:x:wq写入文件的文件名相同,即使文件没有被修改,也是如此)。

要在所有窗口,选项卡和隐藏缓冲区中写入所有修改后的文件后无条件退出,您需要:xa(如果由于某种原因或其他原因而无法写入某些文件,它仍然不会退出)

要无条件退出而不更改任何内容:(ZQ与相同:q!)。


1
我认为您是指正常模式。“命令模式”很容易与命令行模式
David Brown

@DavidBrown command mode是传统名称,但我同意它normal mode不太含糊。我已经修改了答案。
斯特凡Chazelas

33

:x 比一键少 :wq


11
Shift + Z Z尽如人意!
CodeMedic

@CodeMedic如果您有nno : ;nno ; :,它无疑是最快的。(加上vno相同)。我对交换存疑,但您永远不会回头。:nno ,: :silent! unmap :<CR>:silent! unmap ;<CR>:nno ,; :nno ; :<CR>:nno : ;<CR>:vno ; :<CR>:vno : ;<CR>支持奇数yap@"等。
jthill,2015年

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>

第三名 重新启动vim并获得更多生产力!


2
为什么要使用CTRL + D / CTRL + Q来保存并退出,而不仅仅是ZZ和ZQ?
埃文·卡罗尔

嗨,埃文(Evan),按Ctrl + d /按Ctrl + Q只需两个击键,而ZZ和ZQ则需要三个击键。shift + z + z / shift + q + q。如果我们经常这样做,那么一个保存键就很重要。此外,我们使用ctrl + s作为保存快捷方式,我认为它比ZZ或ZQ更直观。
Brain90'3

3
我一直认为ZQ很危险。您可能打算打ZQ而不保存,但是如果您不小心打了Z两次,您就已经离开了并且没有意义地保存了文件。
基思·德文斯

1
如果您使用的是Mac,请使用〜/ .bash_profile。并记住来源。
Snowcrash

15

Q为“退出”怎么样?

只需移动一个键(即ShiftQ)即可。这也是我很少偶然碰到的按键组合。

默认情况下,vim将Q映射到switch to "Ex" mode。如果您发现“ Ex”模式像我一样无用(或烦人),那么您将根本不会错过其默认功能。

这是我.vimrc档案中的内容:

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

如果您有未保存的缓冲区,它将在退出前提示您。


:q默认情况下,我的VIM Q中已经以某种方式映射到了。谢谢你的提示。
user13107 2014年

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!”也不会恢复。它只会丢弃自上次打开或保存文件以来的修改(以最新的为准)。
Olivier Dulac

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而不是保存。另外,其他所有东西也变得更快。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.