重复上一个命令使用感叹号?Vim

7

当我刚刚输入了一个巨大的命令,例如:

:e ~/Projects/foo/app/views/bar.rhtml

Vim经常会提示我当前缓冲区还没有保存。是否有一种快速方法可以在命令后加上一个感叹号而不必重新输入整个命令?


不是与问题相关,但我想知道(来自Windows用户):为什么人们使用vim?当每次需要键入命令时,例如保存文件时可以使用键盘快捷键(如ctrl + s),为什么还要使用vim?我偶尔使用gVim,但我从中获得的唯一好处是可以轻松地编辑没有扩展名的文件。 - Zabba
2
Zabba - 请查看此处:http://stevelosh.com/blog/2010/09/coming-home-to-vim/ - brian
@Zabba:命令和键盘快捷键是同一回事。如果您想要的话,甚至可以将“Ctrl-S”绑定(“映射”)到在gvim中保存当前文件。另外还有一个有用的链接:http://yehudakatz.com/2010/07/29/everyone-who-tried-to-convince-me-to-use-vim-was-wrong/ - Roger Pate
请查看:set hidden:help 'hidden' - Roger Pate
3
vim之所以棒,其中一个原因是由Ken Thompson本人设计并编写的“行模式”中的 : 转义符,后来被延续到了vi(1)和vim(1)。35年过去了,使用 :g 和 :s 仍然是转换文件最好的方式。 - DigitalRoss
4个回答

8
:e! #

在指定vim文件时,%是当前文件的快捷方式,#是“上一个”(实际上更像是“其他”)文件的快捷方式,在您的情况下是~/.../bar.rhtml


3

q:将弹出历史记录,您可以直接编辑命令,然后按Enter键再次运行它们,或者按照zigdon的建议执行:!


2

:<up><home><right>!?


2
我知道的最简单的方法是按下ESC :,然后使用历史记录(^p或向上箭头)再次获取以前的命令。具有讽刺意味的是,在该缓冲区内进行编辑比vi更像emacs。
您实际上可以使用:map ! :^[OA^[[1~^[OC!^M将其绑定到键(这些转义字符和^M需要是实际的转义字符--您可以通过首先输入^V来获得它们)。

2
为什么不使用 map ! :<up><home><c-right>!<cr> 呢?无需使用 ^V,而且在 .vimrc 中编辑更加容易。 - Roger Pate

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接