本文作者:IMWeb 刘志龙 原文出处:IMWeb社区 未经同意,禁止转载
都说Vim是编辑器之神,一直也觉得vim的编码非常酷炫~
但是作为一个编辑器之神, 却一直保持着一个非常高傲的姿态,不像打开一个记事本,一个智商正常的人瞬间就能明白记事本怎么用,但是打开vim就算是天才自己慢慢琢磨估计一会。
那么,vim学习曲线这么大,我们为啥还要用vim?
esc
键进入。i
进入。`ESC` - 切换到命令模式
`i` - 切换到插入模式
看过一个简短的笑话:vi是个非常好用的编辑器,我已经用了两年了,因为我不知道如何退出它。
想想一个记事本的功能:输入文字,用鼠标上下滚动,复制/粘贴,删除,打开/关闭文件,保存文件。要在Vim存活,最起码能把它用成像记事本一样。
`i` - 进入插入模式,我们就可以输入文字了
`hjkl` - 上下左右移动
`ctrl+u, ctrl+d` - 上下翻半页,这个比较常用,最基础的替代鼠标上下滚动
`yy, p` - 复制当前行/粘贴
`dd` - 删除当前行
`vim a.js` - 打开a.js
`:wq, :q!` - 保存并退出,退出不保存
了解了上面的命令,最起码我们从不了解Vim之神到把它用成了一个记事本水平啦。
想想在普通浏览器用鼠标经常做到的一个事情应该就是用鼠标把光标定位到特定的位置。没有了鼠标,如何把光标快速定位到特定的地方呢。
0 - 数字零,到行头
^ - 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)
$ - 到本行行尾
g_ → 到本行最后一个不是blank字符的位置。
gg - 到第一行
G - 到最后一行
:N - 到第N行
NG - 到第N行
w - 到下一个单词
b - 到上一个单词
fa - 到当前行到下一个字符a,其他字符类似
Fa - 到当前行到上一个字符a
t, - 到逗号前的第一个字符。逗号可以变成其它字符。
* - 到下一个当前光标所在单词
# - 到上一个当前光标所在单词
% - 匹配{ 的对应 } ,像单引号等其它成对存在的也一样
/pattern - 搜索 pattern 的字符串(陈皓注:如果搜索出多个匹配,可按n键到下一个)
初看上面的命令可能觉得非常复杂和麻烦,但是上面这些命令是远离鼠标所必须会的,没有了快速的跳转在Vim中可能陷入一片迷茫。
Vim中的数字使用非常普通,基本场景都是代表重复多少次的意思。比如:
3yy - 复制3行
3p - 粘贴3次
3fa - 跳转到当前行第三个字符a
上面只是一些简单的例子,基本上了解了命令,很大部分命令都支持 数字 + 命令 的组合。
大小写在很多场景都是相反命令的意思,了解了小写命令的含义,很多场景相反的含义就是该命令的大写。比如:
fa - 到当前行到下一个字符a,其他字符类似
Fa - 到当前行到上一个字符a
t, - 到逗号前的第一个字符(光标后)。逗号可以变成其它字符
T, - 到逗号后的第一个字符(光标前)。逗号可以变成其它字符
命令 + a + 字符
或者 命令 + i + 字符
是很实用的一个组合。 其中快速选中正是一个用这个组合的例子。
复制coolshell.cn某大大的一段例子。 假设你有一个字符串 (map (+) ("foo")).而光标键在第一个 o 的位置。
vi" - 会选择 foo.
va" - 会选择 "foo".
vi) - 会选择 "foo".
va) - 会选择("foo").
v2i) - 会选择 map (+) ("foo")
v2a) - 会选择 (map (+) ("foo"))
好吧,这篇文章就先到这里了。Vim的强大远非一篇文章所能说完,这篇文章也是起一个抛砖引玉的作用,希望能给到Vim初学者一点小小的帮助~