有一个段子。前端
如何快速学会游泳?git
只须要三步,骗到河边,踢下水,用竹竿戳远点。github
那如何快速学会 vim 呢?正则表达式
默认编辑器设为 vim,删掉其余一切编辑器,明天上线。typescript
如下是可以在 零配置零插件 下快速使用 vim 的一系列步骤,只须要多加练习,便能快速熟练使用 vim。 无他,惟手熟尔。vim
原文连接见 山月的博客app
快速移动是 vim 的重中之重,比一切插件都要重要。也是下编辑和修改的基础。编辑器
上(k)下(j)左(h)右(l) 移动,须要注意,禁止使用上下左右箭头 若是须要移动数行,能够在操做前加数字。如 10j
表明往下移动十行。 经过数字与操做结合,这是 vim 的思想。post
减小上一步的左右移动,效率过低,使用 b, B, w, W
代替 b
指 back a word,退回一个单词。w
指 forward a word,前进一个单词。 B
指 back a WORD,退回一个大单词。w
指 forward a WORD,前进一个大单词。ui
其中,word 以及 WORD 的区别,以一个示例说明。 hello.world 有三个 word ('hello', '.', 'world'),却只有一个 WORD。
使用 f, F, t, T
进行更为精细的左右移动控制 f
指 find a character,快速移动到下一个字符的位置,F
指向前查找。结合 b, w
实现快速左右移动。 t
指 tail a character,快速移动到下一个字符位置的前一个字符,T
指向前查找。
使用 0, $
进行行首行尾移动
使用 %
快速移动到配对字符 如从左括号快速移动到右括号,左引号快速移动到右引号,在编码中最为经常使用!
使用 <Ctrl-d>,<Ctrl-u>
进行大范围上下移动 <Ctrl-d>
往下移动半页,<Ctrl-u>
往上移动半页。
也可使用
<Ctrl-f>, <Ctrl-b>
进行整页移动。
使用 gg, G
进行首行尾行移动
:128
表示快速定位到 128 行,目前只在 debug 中使用
zz
快速定位当前光标至当前屏幕中间,zb
定位当前光标至屏尾,zt
定位当前光标至屏首
*
定位当前光标下的单词,并指向下一个,#
指向上一个
gd
在编码中经常使用,定位当前变量的申明位置,gf
定位到当前路径所指向的文件。
最后若是你发祥定位错了,可使用 <Ctrl>-o
回到光标的上一位置
vim 的编辑在 Insert Mode
,以上的快速移动是在 Normal Mode
。编辑文本须要首先进入 Insert Mode
。
i, I, a, A, o, O
进入 Insert Mode
。
i
指 insert text,在该光标前进行编辑,I
指在行首进行编辑。 a
指 append text,在该光标后进行编辑,A
指在行尾进行编辑。 o
指 append text,在该光标后一行进行编辑,O
指在光标前一行进行编辑。
我的习惯,i, A, o, O
用的多一些,I, a
基本不用。
Esc
以及 <Ctrl-[>
均可以退出 Insert Mode
。
我的习惯使用 <Ctrl-[>
,一来 Esc
过远,二来在一些编辑器中 Esc
容易与其它热键冲突。
删除也能够在 Insert Mode
使用 delete
键进行手动删除,不过效率过低,建议通常在 Normal Mode
进行删除,刚进入 vim 的状态即是 Normal Mode
。
使用 x(dl)
删除特定字符 能够结合 x
以及上述所讲的快速移动,删掉光标下的特定字符
在括号里标注 l
,意指 x
为 dl
的简写。
d
指 delete
,表示删除,是全部修改操做的基础。dl
由 d
和 l
两个操做组成,表明删掉光标右侧的字符,同理,dh
表明删掉光标左侧的字符,这是全部删除的基本形式,也是 vim 的核心思想。
使用 daw
删除特定单词
daw
指 delete a word
,表示删除特定单词。一样也可使用 db, dw
来删除单词。
使用 dt, df
加特定字符,删掉字符前的文本
使用 di(, da(
删除特定符号内的文本,如删除括号,引号中的文本
di(
指 delete in (
,不会删掉括号。da(
指 delete a (
,会连同括号一同删掉。同理还有 di'
,di"
等,在编码中最为经常使用!
使用 D (d$)
删除掉该字符之后的全部文本
使用 dd
删掉整行
把以上操做的全部 d 替换为 c,表示删除后进入编辑模式
c
指 change
,表示删除,如 d
同样,是 vim 的基本动词
使用 r
加特定字符,表示使用特定字符代替原有字符
使用 :Ex (Explore)
浏览目录
定位到文件所在行,回车进入指定文件
使用 :ls
列出缓冲列表
缓冲列表中保存最近使用文件,行头有标号
使用 :bn
进入最近使用文件
bn
指 buffer next
,进入缓冲列表的下个缓冲,即最近一次使用文件
使用 :b[N]
进入缓冲列表中标号为 N 的文件
b 10
指 buffer 10
,进入缓冲列表,即最近一次使用文件
使用 :sbn, :vbn
在新窗口打开最近使用文件
s
指 split
,水平方向。 v
指 vertical
,垂直方向。
使用 :on(ly)
只保留当前窗口
基本操做指查找,替换,撤销,重作,复制,粘贴,保存等
/{pattern}
查找 /
后加须要查找的词或者正则表达式进行查询,n
向下查询,N
向上查询。
:s/aa/bb/g
替换 s
指 substitute
的缩写,替换,g
表明全局替换。
u
撤销 u
指 undo
的缩写,撤销。可与数字结合进行屡次撤销。
<Ctrl-r>
重作
yy
复制整行 y
指 yank
,复制。使 y
与快速移动结合起来,可使用多种状况的复制,如复制括号中内容,复制引号中内容。
复制时,会把当前内容置入寄存器,使用 :reg
查看寄存器列表。
p
粘贴 p
指 paste
,粘贴。
"*y
复制内容至系统剪切板
:reg
会列出寄存器列表,"*
寄存器表明系统剪切板(),因此以上就是把内容放到系统剪切板。
若是寄存器列表中没有该寄存器,则 vim 不支持系统剪切板,也可使用命令 vim --version | grep clipboard
。
"*p
粘贴系统剪切板中内容
关于配置,推荐一下 amix/vimrc ,在 github 上超过一万四千颗星。
另外,再推荐下个人配置 shfshanyue/vim-config,其中有一些插件,如 emmet
和 typescript
很是适合前端开发。
关注公众号山月行,记录个人技术成长,欢迎交流