vim 编辑器基础

vim的复制粘贴在于自己的缓冲区中,不在系统剪贴板中

普通模式下
j/k 移动光标到下/上一行,hl 前后一个字符
w/b 词头词尾,^、0 移动到行头 $ 移动光标到行尾
gg 移动到文头,G 到文件尾
%: 可以匹配{},"",(),[] 之间跳转。
H、M、L:直接跳转到当前屏幕的顶部、中部、底部。
gd: 跳转到光标所在函数和变量的定义。
zt: 当前编辑行置为屏顶。
zz: 当前编辑行置为屏中。
zb: 当前编辑行置为屏底。
{}:向上、向下跳转到最近的空行。
[{:跳转到目前区块开头。
]}:跳转到目前区块结尾。

sublime不需要,Firefox可以用:
ctrl+b: 向后翻一页。
ctrl+f:向前翻一页。
ctrl+u: 向后翻半页。
ctrl+d: 向前翻半页。
ctrl+e: 下滚一行。
ctrl+y:上滚一行

数字+命令
选择:
1.v: 开启可视模式。 V: 开启逐行可视模式。
2.^V: 矩形选择。
3.v3w: 选择三个单词。
4.ab:包括括号和()内的区域。
5.aB:包括括号和{}内的区域。
6.ib:括号()内的区域。
7.iB:括号{}内的区域。
8.aw:标记一个单词。

按"a"(append/追加)键或者"i"(insert/当前字符前插入)键进入插入模式。
:/?自动进入命令行模式,

dd删除当前行(剪切,前面可加数字),dG删除全部
x删除一个字符(前面加数字指定删除个数),
u撤销上一次操作,U撤销对这一行做的所有操作
r替换字符

<>: 缩进。

插入模式下 shift方向键移动光标一个单词或者翻页,ctrl+p自动补全
命令行模式下 执行命令(":"键),搜索("/"和"?"键)或者过滤命令("!"键),
:w代表保存文件,:q退出:sy on语法高亮,:set go= 取消gui(gui option),tab自动补全可多次tab选择,:e打开文件

Vim具有6种基本模式和5种派生模式:
普通模式:用户可以执行一般的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。
插入模式:大多数按键都会向文本缓冲中插入文本,按ESC键回到普通模式。
命令行模式:在命令行模式中可以输入会被解释成并执行的文本。在命令执行之 后,Vim返回到命令行模式之前的模式,通常是普通模式。
可视模式:这个模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。当执行一个非移动命令时,命令会被执行到 这块高亮的区域上。vV(C-v)都可以进入.
d删除行(剪切),c删除所选并进入插入模式,j加选行,J合并所选行
Ex模式:在使用":visual"命令离开Ex模式前,可以一次执行多条命令。





四. 编辑:
1. 新增:
i: 光标前插入。
I: 在当前行首插入。
a: 光标后插入。
A: 当前行尾插入。
O: 在当前行之前插入新行。
o: 在当前行之后插入新行。
2. 修改 c(change) 为主:
r: 替换光标所在处的字符。
R:替换光标所到之处的字符。
cw: 更改光标所在处的字到字尾处。
c#w: c3w 修改3个字符。
C:修改到行尾。
ci':修改配对标点符号中的文本内容。
di':删除配对标点符号中的文本内容。
yi':复制配对标点符号中的文本内容。
vi':选中配对标点符号中的文本内容。
s:替换当前一个光标所处字符。
#S:删除 # 行,并以新文本代替。
3. 删除 d(delete) 为主:
D:删除到行尾。
X: 每按一次,删除光标所在位置的前面一个字符。
x: 每按一次,删除光标所在位置的后面一个字符。
#x: 删除光标所在位置后面6个字符。
d^: 删至行首。
d$: 删至行尾。
dG删除到最后
dd: 删除光标所在行。 dw/db: 删除光标之后/前的单词部分。 d4w: 删除4个word。 #dd: 从光标所在行开始删除#行。 daB: 删除{}及其内的内容。 diB: 删除{}中的内容。 n1,n2 d:将n1,n2行之间的内容删除。

4. 查找: /: 输入关键字,发现不是要找的,直接在按n,向后查找直到找到为止。 ?: 输入关键字,发现不是要找的,直接在按n,向前查找直到找到为止。 *: 在当前页向后查找同一字。 #: 在当前页向前查找同一字。
// 替换::{作用范围}s/{目标}/{替换}/{替换标志},如:`:%s/foo/bar/g`

5. 复制 y(yank)为主:
ggyG:复制全文 yw: 将光标所在之处到字尾的字符复制到缓冲区中。 #yw: 复制#个字到缓冲区。 Y:相当于yy, 复制整行。 #yy:表示复制从光标所在的该行往下数#行文字。 p: 粘贴。所有与y相关的操作必用p来结合粘贴。 ]p:粘贴到合适的缩进处。 n1,n2 co n3:复制第n1行到第n2行之间的内容到第n3行后面。

6. 大小写转换: gUU: 将当前行的字母改为大写。 guu: 将当前行的字母改为小写。 gUw: 将当前光标下的单词改为大写。 guw: 将当前光标下的单词改为小写。 a. 整篇大写:ggguG gg: 光标到文件第一个字符。 gu: 把选择范围全部小写。 G: 到文件结束。 b. 整篇小写:gggUG 7. 其它: J:当前行和下一行合并成一行。 8. 移动: n1,n2 m n3:将n1行到n2行之间的内容移至n3行下。 五.退出: 1. w filename: 保存正在编辑的文件filename 2. wq filename: 保存后退出正在编辑的文件filename 3. q:退出不保存。 六.窗口操作: 1. ctrl+w p: 在两个分割窗口之间来回切换。 2. ctrl+w j: 跳到下面的分割窗 3. ctrl+w h: 跳到左边的分割窗。 4. ctrl+w k: 跳到上面的分割窗。 5. ctrl+w l: 跳到右边的分割窗。 七.折叠: zo 將游標所在處的折疊打開。open。 zc 將游標所在處已打開的內容再度折疊起來。close。 zr 將全文的所有折疊依層次通通打開。reduce。 zm 將全文已打開的折疊依層次通通再折疊起來。more。 zR 作用和 zr 同,但會打開含巢狀折疊(折疊中又還有折疊)的所有折疊。 zM 作用和 zm 同,但對於巢狀折疊亦有作用。 zi 這是個切換,是折疊與不折疊指令間的切換。 zn 打開全文的所有折疊。fold none。 zN 這是 zn 的相對指令,回復所有的折疊。