我听说过很多关于Vim的事,包括优点和缺点。 (作为一名开发人员)使用Vim确实应该比使用其他任何编辑器都要快。 我用Vim来做一些基本的事情,我用Vim最多只能减少10倍的效率。

当你谈论速度时,只有两件事你应该关心(你可能不够关心,但你应该关心):

左右交替使用的 用手是最快的方法 键盘。 永远不要碰鼠标 第二种方法是尽可能快。 你要花很长时间才能移动你的手, 抓住鼠标,移动它,把它带来 回到键盘上(你经常这样做 看看键盘,确保你 将你的手正确地回到正确的位置)

下面的两个例子说明了为什么我使用Vim效率低得多。

复制/剪切和粘贴。我一直都这么做。在所有当代编辑器中,你用左手按Shift键,用右手移动光标来选择文本。然后按Ctrl+C复制,移动光标,按Ctrl+V粘贴。

Vim的情况很糟糕:

Yy复制一行(你几乎不需要整行!) [number xx]yy复制xx行到缓冲区。但你永远不知道你是否选择了你想要的。我经常要做[number xx]dd然后u来撤销!

另一个例子吗?搜索和替换。

在PSPad中:按Ctrl+f,然后输入你想要搜索的内容,然后按Enter。 在Vim: /中,然后输入你想要搜索的内容,然后如果有一些特殊字符,在每个特殊字符前放\,然后按Enter。

Vim的一切都是这样的:似乎我不知道如何正确处理它。

注:我已经读了Vim小抄:)

我的问题是:

与当代编辑器相比,您使用Vim的哪些方式使您的工作效率更高?


当前回答

Control+R机制非常有用:-)在插入模式或命令模式下(即输入命令时在:行上),继续使用编号或命名寄存器:

A - z命名寄存器 未命名的寄存器,包含最后一次删除或删除的文本 %当前文件名 #替代文件名 *剪贴板内容(X11:主要选择) +剪贴板内容 /最后一个搜索模式 :最后一个命令行 . 最后插入的文本 -最后一个小的(小于一行)删除 =5*5在文本中插入25(迷你计算器)

参见:help i_CTRL-R和:help c_CTRL-R了解更多细节,并在附近搜索更多CTRL-R的好处。

其他回答

在搜索的任何地方使用\c来忽略大小写(覆盖你的ignorecase或smartcase设置)。 例如/\cfoo或/foo\c将匹配foo, foo, foo, foo等。

在搜索的任何地方使用\C强制大小写匹配。 例如/\Cfoo或/foo\C只匹配foo。

暂时忽略这个问题(我的答案在下面),有几件事可能有助于解决您使用vim的问题:

:map <C-F> /\V

这将使Ctrl-F开始搜索,搜索的第一个字符是\V,这将关闭所有的“魔法”,所以你不需要转义任何东西(就像PsPad)。

" CTRL-X and SHIFT-Del are Cut
vnoremap <C-X> "+x
vnoremap <S-Del> "+x

" CTRL-C and CTRL-Insert are Copy
vnoremap <C-C> "+y
vnoremap <C-Insert> "+y

" CTRL-V and SHIFT-Insert are Paste
map <C-V>       "+gP
map <S-Insert>      "+gP

cmap <C-V>      <C-R>+
cmap <S-Insert>     <C-R>+

(直接从mswin中取出。来自vim发行版的vim)。这将给你Ctrl-C, Ctrl-V等复制和粘贴。

Personally, I find the copying and pasting much better with the standard Vim. In Vim I can have the cursor on a line, type yy to copy it, 10p to paste 10 copies of it. With the Align plugin, I can then use Ctrl-V (assuming the windows mappings above aren't used) to visual-block select a column of numbers that has been created; :II then auto-increments that column of numbers. Similarly, with YankRing, I can copy 10 (or more) lines one after another and then paste them back out one after another.

至于Vim让我更有效率的方式,我想说标签文件是我再也离不开的东西。当光标在标签上时,我可以按Ctrl-]去函数(和Ctrl- t返回,尽可能多的级别)或,p在预览窗口中打开函数或宏定义(或任何东西)(然后可以用:pcl快速关闭)或[I只是在状态栏上显示宏定义。对于浏览复杂的源代码,这些工具是无价的。

预览窗口依赖于.vimrc中的映射,但是:

:map ,p :ptag <C-R><C-W><CR>

标签文件还允许使用一些(我的)插件,这些插件提供语法高亮显示,更清楚地显示错误(通过高亮识别的标签,而不是高亮未识别的标签)和标签签名,当你将鼠标移动到关键字上时。

巧妙的TAB补全^^

http://vim.wikia.com/wiki/Smart_mapping_for_tab_completion

你说的是文本选择和复制,我认为你应该看看Vim可视模式。

在可视模式下,您可以使用Vim命令选择文本,然后可以对所选内容做任何您想做的事情。

考虑以下常见场景:

您需要选择到下一个匹配的括号。

你可以这样做:

如果光标位于开始/结束括号上,则为V % 如果光标位于圆括号块内,则返回Vib

你想要在引号之间选择文本:

Vi”表示双引号 Vi '表示单引号

你想要选择一个大括号块(在c风格语言中非常常见):

viB vi {

你想要选择整个文件:

ggVG

可视化块选择是另一个非常有用的功能,它允许你选择一个矩形区域的文本,你只需要按Ctrl-V来启动它,然后选择你想要的文本块,并执行任何类型的操作,如拉拽,删除,粘贴,编辑等。编辑面向列的文本非常棒。

会话

A.保存会话

: mks sessionname

B.强制保存会话

: mks !sessionname

C.加载会话

gvim或vim -S session


加减法

a.加减法

CTRL-A;在数字或字母字符at后添加[count] 或者在光标后面。{不在Vi中 CTRL-X;数字或字母减去[count] 位于光标上或光标后的字符。{不在Vi中}

b.取消窗口键映射

在窗口中, Ctrl-A已经映射了整个文件选择,你需要在rc文件中取消映射。 是否是马克mswin。vim CTRL-A映射部分作为注释 或 使用unmap添加rc文件

c.使用宏

CTRL-A命令在宏中非常有用。例子: 使用以下步骤制作一个编号列表。 创建第一个列表条目,确保它以数字开头。 Qa -开始记录到缓冲区'a' Y -猛拉入口 P -在第一个条目下面放一个条目的副本 CTRL-A -增加数字 Q -停止记录 @a -重复拉,放和增加次数