Vim使用技巧
vim分为命令模式和编辑模式。按Esc键退出编辑模式。下面所有的‘#’号表示数字。
一,在命令模式下移动光标
#h 左 #j 下 #k上 #l 右
0/^/home 移至行首 $/end 移至行尾
w 移至下一个word的开头 e 移至下一个或当前word的结尾 b 移至前一个或当前word的开头
W/B/E 与小写的w/b/e一样,只是将空格作为word的边界,它们都可以与#配合使用
#fx 在当前行查找向有方向查找第#个字符x Fx 在当前行向左查找字符x
t与f的用法相同,只是光标停留在被搜索字符的前一个字符上,这四个命令可以用”;”或”,”重复
zz/zt/zb 将当前行置于屏幕中央/顶端/底端
ZZ 保存当前文件并退出vim
以下是跳转的命令:
#G 移至第#行 G 移至最后一行 gg 移至第一行 可以用两个开单引号(即反单引号”`”)跳转到跳转前的位置
% 以匹配一个括号为目的移动,当前光标不在括号上时,会向前找到一个括号。同样适用于}和]
#% 表示跳转到文件的百分之#的地方
ctrl+o 跳转到更早些时间停置光标的位置 ctrl+I 跳转到后来停置光标的更新的位置
Ctrl+f 向前翻屏 Ctrl+b 向后翻屏 Ctrl+d 向前翻半屏 Ctrl+u 向后翻半屏
Ctrl+g 告诉你光标当前所在行的行号
二,插入文本或行
i 在光标位置前插入字符 I 在当前行的开始处添加文本 a 在光标位置后插入字符 A 在当前行的末尾添加文本
r 替换光标所在处的字符 R 替换光标所在处的字符,直到按下ESC为止
J 合并光标所在行及其下一行为一行 alt+j 换行
o 在当前行后插入新的一行 O 在当前行前插入新的一行
三,更改文本的三种方法
1,操作符命令+位移命令
d$/D 删除自当前光标至行尾的位置
d#w 删除自当前光标至后面第#个word的开始 d#b 删除自当前光标至前一个word的末尾
dG 删除当前行至文件尾的内容 dgg 删除当前行至文件头的内容 #dd 删除#行
#x/#dl 删除光标左边的#个字符 #X/#dh 删除光标右边的#个字符 xp 交换两个字符的位置
y$/Y 复制从光标开始到行尾的字符
y#w 复制从光标开始到第#个word尾的字符(ye不复制word后的空格) #yw
y^ 复制从光标开始到行首的字符
yy 复制光标所在一行 #yy
c与d相似,只是操作后进入插入模式
s 代表cl,修改一个字符 S 代表cc,修改一整行
c$/C 改变当前光标到行尾的内容
以上的命令有一个固定的模式:操作符命令+位移命令(与移动光标里的命令配合使用)。如d4l则删除光标当前位置到第四个字符,其中位移命令包括排外的和内包的,若是内包的(如$)则位移后光标所在处的字符也会被删除。
2,Visual模式
v 可视化 V 可视化行 ctrl+v 可视化矩阵
o 让光标置于被选中文本的另一头 O 当用可视化矩阵时,O使光标在同一行的左右两个角之间移动
d删除 y复制
3,操作符命令+文本对象
diw 删除当前光标所在word,不删除空白符 daw则删除word后的空白符
dis 删除当前光标所在的句子,不包括其后的空白符
其中iw is 等是文本操作命令,这种形式的命令不管当前光标所在的位置而把整个文本对象作为
操作对象。
#p 粘贴在光标后 #P 粘贴在光标前
d,x与p配合使用相当于剪切,这要求vim支持剪贴板操作
u 取消操作 U 撤销对当前行的所有操作 ctrl+r 恢复撤销
在windows下复制文本,在Linux的vim中,用alt+shift+v粘贴
四,替换
#r<Enter> 替换#个字符为换行符
R 让vim进入replace模式,每个键入的字符都会替换掉当前光标下的字符,直到你键入<Esc>结束该模式
可以用<insert>键在insert模式和replace模式之间来回切换,当用<BS>键退回时,原有的字符又回来了。
. 重复上一次做出的改动的命令(除了u命令ctrl+r和:开头的命令,也不包括移动光标)
例如:将文本中的four该为five,可执行命令:/five<Enter> cwfive<Esc> n . n .
删除文本中的<*>,可执行命令:f< df> f< . f< .
五,命令行模式下的指令
:e filename 编辑文件,可以按<Tab>键补全文件名,如果不是想要编辑文件,则继续按<Tab>
或者用ctrl+d 查看众多的补全候选选项
:q! 放弃修改,强制退出
:w filename 将当前文件保存,并修改文件名为filename
:nohlsearch 去掉当前的高亮显示
:saveas move.c 将当前文件保存为一个新文件move.c文件
搜索和替换命令:
/string 搜索字符串string,字符.*[]^%/”$有特殊意义,需在其前加\。按下空格即产生”/”。
?与/的工作相同,只是方向相反。
也可以将光标置于要搜索的字符串上,按*或#键对字符串进行搜索,可以与数字配合使用
/\<word\> 查找作为独立单词的word
/^word 匹配一行的开头word /word$ 匹配一行的结尾word
/w.d 匹配任何前一个字符时w,后一个字符是d的情况。 ”.”表示匹配除换行符以外的任何一个字符
常用的选项配置
set nu/set nonu 显示行号/取消行号显示
set autoindent/cindent 自动缩进
set tabstop/set ts 设置tab键的宽度
set ignorecase/noignorecase 搜索时忽略大小写/不忽略大小写
set hlsearch/nohlsearch 设置高亮显示/取消高亮显示
set backupext=.bark 备份文件,若源文件名为data.txt,则备份文件名为data.txt.bark
set autowrite 设置自动保存文件 set noautowrite
命令行上常用的位移键
ctrl+B或Home crtl+E或End
ctrl+w 删除光标之前的整个单词 ctrl+u 删除光标之前所有已键入的内容
shift+<left> 或ctrl+<left> 左移一个单词(并不适用所有的电脑)
ctrl+c/<Esc> 放弃所有已键入的命令
<insert>键可以切换插入和改写字符这两种模式