vim:
vimtutor 查看vim帮助
基本 移动
h l k j 左/右移动一个字符:上/下 移动一行
b w 向左/右 移动一个单词
ge e 向 左/右 移动一个单词 (光标在词尾)
{ } 移动到前 一个/后一个 段落开头
( ) 移动到前一个/后一个 句子开头
0 gm 移动到行首/行正中
^ $ 移动到行 第一个非空白字符/行尾
nG ngg 移动到第n行,默认到尾行/首行
n% 移动到文件的n百分比处
n| 移动到当前行的第n列
nH nL 移动到窗口 顶端/底部 第n行
% 匹配下一个 项目 (括号、方括号等.....)
M 移动到窗口的中间行
编辑修改
i a 在光标 前/后 插入文本
I A 在 行首/行尾 插入文本
gl 在第一列 插入文本
o O 在光标的 下方/上方 插入新行
rc 把光标下的字符换成c
gro 类似r,但替换的是虚拟字符
R 进入替换模式
gR 类似R, 但替换的是虚拟字符
cm 更改动作m跨越的文本
CC or S 更改当前行的内容
C 更改光标到行尾的文本
s 更改一个字符并进入插入模式
~ 切换当前字符大小写,同时光标前移
g~m 切换动作m跨越文本的大小写
gum gUm 小写/大写 动作跨越的文本
<m >m 左移/右移 动作m 跨越的行
n<< n>> 将n行 左移/右移 一个缩进位
删除
x X 删除光标 后/前 的字符
dm 删除动作m 跨越的文本
dd D 删除动作m 跨越的文本
J gJ 连接两行 删除缩进、插入空格/ 直接连接
:rd 删除范围r 包括的行
:rdx 删除范围r包括的行寄存器x
插入模式
^Vc ^Vn 插入字符 c 的本义/十进制值n
^A 插入最近插入的文本
^@ 插入最近插入的文本,并退出插入模式
^Rx 原样插入寄存器x的内容
^N ^P 补全关键字并作 正向/反向 查找
^W 删除光标前的单词
^U 删除当前行光标前所有输入的字符
^D ^T 左移/ 右移 一个缩进位
^KC1C2 输入\C1C2\代表的二合字母
^Oc 在临时命令模式执行命令c
^X ^E 向上滚动一行
^X ^Y 向下滚动一行
<esc> ^[ 结束插入模式,回到命令模式
复制
”x 指定下次删除、抽出和放置使用寄存器x
:rcg 显示所有寄存器的内容
:reg x 显示寄存器x 的内容
ym 抽出动作m 跨越的文本
yy or Y 抽出整行
p P 放置寄存器内容到光标 之后/之前
]p [P 类似“p” “P”,但调整当前行的缩进
gp gP 类似“p”“P” ,光标停留在新文本之后
复杂改动
g?m 对动作m 跨越的文本做 rot13 编码
n^A n^X 光标之上或之后的数值或者字母 +n/-n
gqm 格式化动作m跨越的所有行
:rce W 将范围r中的行依据 宽度w 居中对齐
:rce i 将范围r中的行靠左对齐,缩进i列
:rri w 将范围r中的行依据宽度w靠右对齐
!mc 将动作m跨越的行用命令c过滤
n!!c 将n行用命令c 过滤
:r!c 将范围r中的行用命令c过滤
可视模式
v V 以字符/行 方式开始(结束) 高亮
^V 以列块 方式开始(结束)高亮
o 交换高亮区域的开始处和光标位置
gv 使用上一次的可视区域开始高亮
aw as ap 选择“一个单词“一个句子”/“一个段落”
ab aB 选择“一个块”()/“一个大块”{}
撤消,重做
u U 撤消最近的改动/恢复最近被改动的行
. ^R 重复最近的改动/重做最近撤消的改动
n. 重复最近的改动n次
寄存器
qc qC 记录键入的字符,存入/添加到寄存器c
q 停止记录
@c 执行寄存器c 的内容
@@ 重复上次的@c 操作
:@c 将寄存器c的内容当作Ex 命令来执行
:rg/p/c 在范围r 中找到匹配内容p时执行 Ex 命令c
复合移动
- + 上移/下移 一行 ,至第一个非空白字符
B W 向前/后 移动一个字串
gE E 向前/后 移动一个额字串(光标在末尾)
n 下移动n-1行,至第一个非空白字符
gO 移动到屏幕行第一个字符
g^ g$ 移动到屏幕行 第一个非空白字符/最后一个字符
gk gj 上移 /下移 一个屏幕行
fc Fc 移动到 后一个/前一个 字符c 处
tc Tc 移动到 后一个/前一个 字符c之前
;, 正向/反向重复上次“f”、“F”、“t”或“T”命令
[[ ]] 向后/向前 一小节,置于小节的开始
[{ ]} 向后/向前 至未闭合的‘{’/‘}’
[m ]m 向后/向前 至java method的开始
[# ]# 向后/向前 至未闭合的#if,#else,#endif
[* ]* 向后/向前 至注释的开始/结束/* */
查找替换
/s ?s 向前/向后 查找s
/s/o ?s/o 向前/向后 查找s , 光标偏移量o
n or/ 向前重复上次查找
N or? 向后 重复 上次查找
# * 向后/向前 查找光标下的标识符
g# g* 向“#”/“*”,但也查找部分匹配
gd gD 跳转到光标下标识符的局部/全局 声明
:rs/f/t/x 将范围r中 的f 替换成t 选项x:q- 所有匹配项,c-确认替换
:rs x 在新的范围r 中以选项x 重复上一替换
软硬链接区别
软链接的原始文件要写相对路径 一定写的是相当于软链接的路径 而不是相当于当前工作目录。
硬链接和软链接的区别
1、本质:硬链接:同一个多个名字,软连接不同文件
2、跨分区(硬链接不支持跨分区,软连接支持跨分区)
3、目录(硬链接不支持目录创建,软链接支持目录创建)
4、相互关系硬链接相互之间是平等独立的关系,毫不相干,你删了一个硬链接 只是说少了个名,不影响别人,大不了链接数减一。而软连接
原始文件和软连接有依赖关系,你把原始文件删了,与软连接就失效了,它是有依赖关系的。
5、inode 号 硬链接所有的文件inode是相等的。而软连接不一样。
6、链接数的增长问题和减少问题;创建硬链接,链接数会增长,软连接不会增长。删除硬链接少一个连接数。软连接删的话就相当于少 了一个文件
7、路径问题;路径如果不用原始文件路径,原始文件的路径。软连接的原始文件路径,要相对的是软链接的相对路径,而不是相对于当前目录。 而硬链接的时候,硬链接创建的可不是相对于软链接的相对路径,他相对的是当前的工作目录。
8、文件类型不一样,软连接表现为L 是软连接。 硬链接原来是啥就是啥,原来普通文件就是普通文件。 颜色也不一样。
9、(命令) ln 一个 加s 一个不加s
具体就这些吧,期待我的作品话,就等我下周更新哟。