firemail

标题: 简明 Vim 练级攻略 [打印本页]

作者: firemail    时间: 2017-9-5 10:17
标题: 简明 Vim 练级攻略
https://globalinheart.wordpress. ... %E6%94%BB%E7%95%A5/

vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令。非常不错。

——————————正文开始——————————

你想以最快的速度学习人类史上最好的文本编辑器VIM吗?你先得懂得如何在VIM幸存下来,然后一点一点地学习各种戏法。

Vim the Six Billion Dollar editor

Better, Stronger, Faster.

学习 vim 并且其会成为你最后一个使用的文本编辑器。没有比这个更好的文本编辑器了,非常地难学,但是却不可思议地好用。

我建议下面这四个步骤:

当你走完这篇文章,你会成为一个vim的 superstar。

在开始学习以前,我需要给你一些警告:

第一级 – 存活

当你安装好一个编辑器后,你一定会想在其中输入点什么东西,然后看看这个编辑器是什么样子。但vim不是这样的,请按照下面的命令操作:

现在,你知道如何在 InsertNormal 模式下切换了。下面是一些命令,可以让你在 Normal 模式下幸存下来:

推荐:

你能在vim幸存下来只需要上述的那5个命令,你就可以编辑文本了,你一定要把这些命令练成一种下意识的状态。于是你就可以开始进阶到第二级了。

当是,在你进入第二级时,需要再说一下 Normal 模式。在一般的编辑器下,当你需要copy一段文字的时候,你需要使用 Ctrl 键,比如:Ctrl-C。也就是说,Ctrl键就好像功能键一样,当你按下了功能键Ctrl后,C就不在是C了,而且就是一个命令或是一个快键键了,在VIM的Normal模式下,所有的键就是功能键了。这个你需要知道。

标记:

第二级 – 感觉良好

上面的那些命令只能让你存活下来,现在是时候学习一些更多的命令了,下面是我的建议:(陈皓注:所有的命令都需要在Normal模式下使用,如果你不知道现在在什么样的模式,你就狂按几次ESC键)

花点时间熟悉一下上面的命令,一旦你掌握他们了,你就几乎可以干其它编辑器都能干的事了。但是到现在为止,你还是觉得使用vim还是有点笨拙,不过没关系,你可以进阶到第三级了。

第三级 – 更好,更强,更快

先恭喜你!你干的很不错。我们可以开始一些更为有趣的事了。在第三级,我们只谈那些和vi可以兼容的命令。

更好

下面,让我们看一下vim是怎么重复自己的:

下面是一个示例,找开一个文件你可以试试下面的命令:

更强

你要让你的光标移动更有效率,你一定要了解下面的这些命令,千万别跳过

下面,让我来说说最强的光标移动:

相信我,上面这三个命令对程序员来说是相当强大的。

更快

你一定要记住光标的移动,因为很多命令都可以和这些移动光标的命令连动。很多命令都可以如下来干:

<start position><command><end position>

例如 0y$ 命令意味着:

你可可以输入 ye,从当前位置拷贝到本单词的最后一个字符。

你也可以输入 y2/foo 来拷贝2个 “foo” 之间的字符串。

还有很多时间并不一定你就一定要按y才会拷贝,下面的命令也会被拷贝:

(陈皓注:可视化选择是一个很有意思的命令,你可以先按v,然后移动光标,你就会看到文本被选择,然后,你可能d,也可y,也可以变大写等)
第四级 – Vim 超能力

你只需要掌握前面的命令,你就可以很舒服的使用VIM了。但是,现在,我们向你介绍的是VIM杀手级的功能。下面这些功能是我只用vim的原因。

在当前行上移动光标: 0 ^ $ f F t T , ;

还有一个很有用的命令是 dt" → 删除所有的内容,直到遇到双引号—— "。

区域选择 <action>a<object> 或 <action>i<object>

在visual 模式下,这些命令很强大,其命令格式为

<action>a<object> 和 <action>i<object>

假设你有一个字符串 (map (+) ("foo")).而光标键在第一个 o 的位置。

块操作: <C-v>

块操作,典型的操作: 0 <C-v> <C-d> I-- [ESC]

在Windows下的vim,你需要使用 <C-q> 而不是 <C-v> ,<C-v> 是拷贝剪贴板。

自动提示: <C-n> 和 <C-p>

在 Insert 模式下,你可以输入一个词的开头,然后按 <C-p>或是<C-n>,自动补齐功能就出现了……

宏录制: qa 操作序列 q, @a, @@

示例

在一个只有一行且这一行只有“1”的文本中,键入如下命令:

可视化选择: v,V,<C-v>

前面,我们看到了 <C-v>的示例 (在Windows下应该是<C-q>),我们可以使用 v 和 V。一但被选了,你可以做下面的事:
Once the selection made, you can:

在所有被选择的行后加上点东西:

分屏: :split 和 vsplit.

下面是主要的命令,你可以使用VIM的帮助 :help split. 你可以参考本站以前的一篇文章VIM分屏

结束语

学习vim就像学弹钢琴一样,一旦学会,受益无穷。

——————————正文结束——————————

对于vi/vim只是点评一点:这是一个你不需要使用鼠标,不需使用小键盘,只需要使用大键盘就可以完成很多复杂功能文本编辑的编辑器。不然,Visual Studio也不就会有vim的插件了

(全文完)



作者: firemail    时间: 2017-9-5 10:17
下图是几个经典的文本编辑器的学习曲线,不排除其中有调侃和幽默的味道。
主流编辑器学习曲线图
注1Pico(PIne COmposer)是Unix操作系统中最常见的三种文字处理软件之一,具有文字编辑、搜索、拼写检查、文件浏览和段对齐功能,适合高效地编辑短小的文件。Pico是由华盛顿大学开发的免费软件,随着pine电子邮件处理软件发布。它是在Emacs的基础上以pine的邮件编辑为目标而开发的,所以其指令集是Emacs的子集,但是由于在界面上有提示快捷键,相对于vi和Emacs来说更加容易使用。由于Pico虽然是免费软件,但是它并不是开源软件,所以很多Linux版本并不包含Pico。这些版本通常提供一个界面类似的开源软件nano——Pico的克隆版。
注2:图中的纵横坐标没有标明。我所理解的是——X轴是熟练程度,Y轴是技能。于是对于notepad 来说,技能和熟练程度呈正比。对于VS来说,熟练程度越大,所需要技能先是越来越多,而随着熟练程度的增长,你需要的技能也越少。而对于VI来说,一开始就需要相当大的技能,但一旦掌握这些技能,则你将会越来越熟练。而对于emacs来说,技能和熟练程度是呈旋涡状。


作者: java    时间: 2017-9-6 17:30
如果你问Emacs和Vim从设计上「谁更牛」,我还是认为Emacs更牛,虽然大体上我是一个Vim用户。因为Emacs下就连「前进一个字符」这种基本操作,其实都是执行了一个类似forward-one-character的函数。当时了解到这一点,还是挺震撼的。换句话说Emacs第一是几乎所有操作都是可编程的,二是elisp相比vimscript是更加强大的语言。
如果你是想找一个跨平台的文本编辑器,我推荐Vim, 因为不管是Linux server的terminal, 还是Windows下的gVim, 还是OS X下的MacVim, 用Dropbox和Vundle同步了配置和插件后,都可以获得几乎完全一致的体验。
如果你的主要平台是OS X或者Linux. 我不会推荐Emacs作为你的主要编辑器,而是推荐你努力掌握Emacs的keybinding. 因为这套keybinding在几乎所有的「文本编辑」场景里都是适用的。不管你是写iOS App, 还是在PyCharm里开发Python, 或者是在TextMate下编辑配置文件。非常爽的一件事情。



作者: java    时间: 2017-9-6 17:35
我两个都用过, 不过都不是高手, 就推荐一篇文章吧Emacs和Vim:神的编辑器和编辑器之神
文章较长, 浓缩下里面的主要观点
Emacs是神的编辑器:  因为神是万能的, 所以用的编辑器也是万能的, 而Emacs就是万能的编辑器, 他可以完成一切你想要的功能, 当然, 想要另类的功能还是不简单的
vim是编辑器之神: 虽说Emacs可以完成的功能vim基本上也可以完成, 但终究不如Emacs, 但在纯粹的文本编辑方面, vim却是真正的神
本人从vim转到Emacs再转到vim, 之所以放弃Emacs的原因在于, 我并不需要那么强大的扩展功能, 并且Emacs的快捷键实在太累了, 配置真的是太难配了, 不过Emacs自带的Eshell很不错, 省了装一个windows下的第三方CMD,另吐槽下, win下的vim实在太丑了


只说一点
在vs,eclipse,intellij idea, xcode等主流IDE中,在Firefox,Chrome,Safari等浏览器都有vim插件,可以享受这些应用强大功能的同时获得极速的编辑体验.但是emacs就难以脱离原有环境迁移了.
@吴金镝

说的key binding很有道理,不过这个key binding只是emacs全部强大功能中很小的一部分,我用一些系统全局热键软件都可以模拟出来.
一般争论中说的IDE/Vim/Emacs不可兼得,在我看来不存在.我在常用IDE中使用vim插件编辑文本,使用IDE其他功能编程.采取了两者共同的优点,而Emacs,我还不知道怎么结合利用.
所以我觉得,Emacs很强大,但是廉颇老矣,而Vim则是借助插件形式,嫁接宿主,老树发新春









欢迎光临 firemail (http://firemail.wang:8088/) Powered by Discuz! X3