人们谈论常见技巧的问题很多,特别是“Vim+ctags提示和技巧”。

然而,我并没有提到Vim新手会觉得很酷的常用快捷方式。我所说的是一位经验丰富的Unix用户(无论是开发人员、管理员,还是两者都有),他们认为自己知道99%的人从未听说过或梦想过的东西。这不仅让他们的工作更容易,而且很酷,很粗糙。毕竟,Vim位于世界上最黑暗的角落丰富的操作系统中,因此它应该具有只有少数特权人士知道并想与我们分享的复杂性。


当前回答

de按删除单词末尾的所有内容。在你心中的愿望。

ci(xyz[Esc]——这是一个奇怪的例子。这里,“i”并不意味着插入模式。相反,它意味着在括号内。因此,这个序列剪切了括号内的文本,并将其替换为“xyz”。它也适用于方括号和数字括号内——只需相应地执行ci[或ci{。自然,您可以执行di(如果你只想删除所有文本而不键入任何内容。如果你想删除括号而不仅仅是括号内的文本,你也可以用a代替i。

ci“-剪切当前引号中的文本

ciw-剪切当前单词。这与前一个工作原理相同,只是(被替换为w。

C-切割线路的其余部分并切换到插入模式。

ZZ—保存并关闭当前文件(关闭当前选项卡的速度比Ctrl-F4快得多!)

ddp-将当前行向下移动一行

xp—将当前字符向右移动一个位置

U-大写,所以viwU大写

~-切换大小写,因此viw~将反转整个单词的大小写

Ctrl+u/Ctrl+d向上或向下滚动页面半个屏幕。这似乎比通常的全屏分页更有用,因为它更容易看到两个屏幕之间的关系。对于那些仍然希望一次滚动整个屏幕的用户,Ctrl+f表示向前,Ctrl+b表示向后。Ctrl+Y和Ctrl+E一次向下或向上滚动一行。

疯狂但非常有用的命令是zz——它滚动屏幕使这一行显示在在中间。这非常适合将您正在处理的代码放在您的注意力中心。Sibling命令——zt和zb——使这一行成为sreen上的最上面或最下面的一行,这并不太有用。

%找到并跳转到匹配的括号。

de--从光标删除到单词末尾(也可以执行de删除,直到下一个空格)

bde--删除当前单词,从左到右分隔符

df[space]—删除直到并包括下一个空格

日期——删除到下一个点

dd--删除整行

ye(或ye)--将文本从这里拖到单词末尾

ce-贯穿单词的结尾

bye--复制当前单词(让我想知道“hi”是什么意思!)

yy--复制当前行

cc——剪切当前行,也可以改为S。还有较低的大写字母,用于剪切当前字符并切换到插入模式。

viwy或viwc。修改或更改当前单词。多次单击w以继续选择每个后续单词,使用b向后移动

vi{-选择图括号中的所有文本。va{-选中包括{}s的所有文本

vi(p-突出显示()s中的所有内容,并替换为粘贴的文本

b和e一个字一个字地移动光标,类似于Ctrl+箭头通常的操作。但是,单词的定义有点不同,因为连续的几个三角形被视为一个单词。如果你从一个单词的中间开始,按b键将始终转到当前单词的开头,而每个连续的b键将跳转到下一个单词开头。同样,容易记住的是,e将光标指向当前单词的末尾,以及随后的每个单词。

与b/e类似,大写字母b和e仅使用空格作为分隔符逐词移动光标。

大写D(深呼吸)删除光标右侧的行的其余部分,与普通编辑器中的Shift+End/Del相同(注意2个键--Shift+D--而不是3)

其他回答

为了使vim更像一个IDE编辑器:

为左边空白处的行号设置nu。set cul-高亮显示包含光标的行。

我确信有人已经发布了这篇文章,但这里是这样的。

请选择任何构建系统;制造,mvn,蚂蚁,随便什么。在项目目录的根目录中,创建一个始终使用的命令文件,如下所示:

根项目上进行构建mvn清洁安装等等

要进行构建,请将光标放在线上并键入!!即过滤该线路;将其写入shell并替换为结果。

构建日志将替换行,随时可以滚动、搜索等。

查看完日志后,键入u以撤消,然后返回命令文件。

这不是一个秘密,但我喜欢将以下映射放到我的.vimrc文件中,这样我可以随时点击“-”(减号)打开文件浏览器,显示与我刚才编辑的文件相邻的文件。在文件浏览器中,我可以点击另一个“-”来向上移动一个目录,提供对复杂目录结构的无缝浏览(就像现在MVC框架所使用的那样):

map - :Explore<cr>

这些可能对某人也有用。我喜欢滚动屏幕并同时移动光标:

map <c-j> j<c-e>
map <c-k> k<c-y>

选项卡导航-我喜欢选项卡,我需要在它们之间轻松移动:

map <c-l> :tabnext<enter>
map <c-h> :tabprevious<enter>

仅在Mac OS X上:类似Safari的选项卡导航:

map <S-D-Right> :tabnext<cr>
map <S-D-Left> :tabprevious<cr>

我今天通过NSFAQ找到了这个:

注释代码块。

点击CTRL-V进入分块视觉模式。

标记要注释的块。

点击I(大写I)并在行的开头输入注释字符串。(//对于C++)

按ESC键,所选的所有行都将//前置到行的前面。

从十六进制值输入字符(插入模式):

<C-Q>x[type the hexadecimal byte]