VIM使用快捷键总结
1、光标定位快捷键:
H -> 光标定位到屏幕上方
M -> 光标定位到屏幕中间
L -> 光表定位到屏幕下方
b -> 光标向前移动上一个单词词头
B -> 光标向前移动一个big-word的单词词头
e -> 光标向后移动下一个单词的词尾
E -> 光标向后移动下一个big-word的单词词尾
w -> 光标向后移动到下一个单词的词头
W-> 光标向后移动到下一个big-word的单词词头
u -> undo 取消操作
Ctrl+r-> redo 恢复操作
r -> 在命令模式中,覆盖当前字符
R -> 进入编辑模式,覆盖当前字符,也就是替换模式
Ctrl+t -> 在编辑模式,向右缩进一格
Ctrl+d-> 在编辑模式,向左缩进一格
2、当前行定位快捷键:
zt -> 把当前行放到屏幕的最上方
zb-> 把当前行放到屏幕的最下方
zz -> 把当前行放到屏幕的中间
3、光标不动,屏幕上翻,下翻:
Ctrl + e:光标不动屏幕上翻
Ctrl + y:光标不动屏幕下翻
4、在命令模式,增加/减少数字:
Ctrl + x:使光标下的数字做减1操作
Ctrl + a:使光标下的数字做加1操作
5、函数名字匹配:
Ctrl + x Ctrl + p:在输入模式,写出一个不完整的函数名字后,按ctrl+x ctrl+p,vim自动向上匹配函数名字,如果名字不对,继续按ctrl+p
Ctrl + x Ctrl + n:在输入模式,写出一个不完整的函数名字后,按ctrl+x ctrl+n,vim自动向下匹配函数名字,如果名字不对,继续按ctrl+n
6、单词操作:
yaw:复制一个单词
caw:修改一个单词
daw:删除一个单词在VIM中用iw或者aw表示一个单词,两者稍有区别。
viw:选择光标所在的单词(v进入visual模式,然后iw)
yiw:复制光标所在的单词 查找的话就是两个很常用的明令:# 和*
7、在输入模式怎么方便的执行命令模式才可以运行的命令:
Ctrl + o:在输入模式,可以运行在命令模式下执行的命令
8、Visual模式:
v:在命令模式按v,进入视图模式,用h、j、k、l 进行选择,然后通过y、c、d进行复制,剪切,删除操作
Ctrl+v: 块选择
Shitf+v:整行选择
gv: 选择上一次选择的块 怎么在100行代码前加上//呢?
a、把光标定在这100行代码的首位置;
b、Ctrl+v,99+j,这样就选中了这100行代码第一列
c、通过I(大写的i),进入插入模式,并且是光标定在第一行的行首
d、输入//,然后按ESC键,奇迹出现了,下面的99行全自动加上了//
9、字符串替换 :
1, $ s/niu/jie/gc: 从第1行到文件结尾,将其中含niu字符串的替换为jie,每替换一个均有询问是否替换gc也可以用?来替换,:1, $ s/niu/jie/?(但是我没实验成功)询问:replace with /niu (y/n/a/q/l/^E/^Y)?,按y便替换了 :%s/niu/jie/g: 将个文件中含有niu字符串替换为jie,不询问是否替换 斜杠可以换成任意的字符,比如:+、-等
举例::%s+niu+jie+g将全文件中三个字符”niu”替换为”jie”:%s-jie-/niu-g将全文件中三个字符”jie”替换为”/niu”
10、窗口分裂 :
vsplit 将窗口竖着分裂出一个,其简写vsp
:split将窗口水平分裂出一个,其简写sp
:new filename 和split相同 怎么在窗口间移动光标呢? Ctrl+w后,按h、j、k、l进行上下左右窗口移动光标。
也可以 :set mouse=a:打开鼠标动作,然后用鼠标进行选择窗口
Ctrl+w+t 切换到顶部的窗口
Ctrl+w+b 切换到底部的窗口
Ctrl+w+p 切换到我们进行切换操作以前我们所在的窗口
11、过滤命令 :
:!
:!xxd 将文件以16进制显示
:1,5:xxd将第1行到5行以16进制显示
:%!sort –n按数字排序
:!awk '{ print $1 }' gmsisdn.conf > tfile 将文件中第一列的值保存到tfile中
:!ls 和ls命令一样
12、折叠
zf:将选中的行折叠为1行
zr:将折叠的行打开;l 键(向右键)也有打开折叠的功能
zd:删除折叠
13、在函数中查找man手册
K:光标定位在函数名字上,按下K,则自动跳转到man手册里,退出后仍然回到函数中
14、将程序挂起
Ctrl + z:将文件挂起
fg: 返回
15、看历史记录
q/:在命令模式输入q/,vim会列出搜索的记录
q::在命令模式输入q:,vim会列出冒号模式中操作的记录
16、比较两个文件不同
vi -d file1 file2
17、map命令
首先/string 搜索一个字符串
然后:map <F4> ndd<F4> 这样,
在按F4键,就可以删除含有string字符串的行
18、make的一个命令
make -j n+1: 其中n是CPU的个数
19、CTRL-D命令
0Ctrl+d:命令以后,光标会回到第一列,而且下一行也是从第一列开始的
^Ctrl+d:命令只会将当前行的光标放在第一列.当我们开始下一行时,这种缩进形式又会自动的执行
20、关闭文件,打开一个新的文件,又想看上次编译的那个文件怎么办?
Ctrl+o Ctrl+o:按两次Ctrl+o就可以了
21、复制和粘贴复制
方法1:num+yy,复制num行
方法2:先ma标记当前位置为a;再将光标移动到新的位置;然后y`a复制从标记位置a到当行的内容。
方法3:按v或V或Ctrl+V进入visual模式,移动光标选择一段内容,按y。 三者的区别: v以字符为单位,V以行为单位,Ctrl+V是块选择。这个方法只在VIM下适用。
粘贴 p或P:前者粘贴到光标后面,后者粘贴到光标前面
22、如何在多个文件中进行替换?
一般可以用sed或者vim来做。比如要对当前目录下的*.c文件进行替换:
方法一:for i in *.c; do sed''s/oldvalue/newvalue/g'' $idone
方法二:vim *.c:argdo %s/oldvalue/newvalue/g
方法三:创建一个脚本文件change_str_infile.sh,将下面内容输入,保存,并使用chmod +x change_str_infile.sh,使之具有可执行权限;$: change_str_infile.shold_str new_str#!/bin/bash##change_str_infile.sh## Get List of Files to Be Replaced#file_list=`find path -name "*" -type f `#file_list=`find $1 -name "Root" -type f `file_list=`find $1 -name "*" -type f `# Perform Substitutionold=$2new=$3技术系列VIM快捷键使用东软MID8/ 11for fn in $file_listdo ffnt="$fn.temp" echo "Processing $fn ...... " sed "s/$old/$new/g" $fn > $ffnt mv -f $ffnt $fndone这样就将多个文件中的old_str用new_str替换了。
23、如何计数搜索的字符串?
(蓝色的是经过我测试的)如果需要统计缓冲中一个模式(pattern)出现的频率,需要把''report'' 置为0,然后用替换命令把模式替换成它自己。Vim 报告的已替换的数目就是模式出现的次数。例: :set report=0 :%s/./&/g characters个数 :%s/i+/&/g words :%s/^ lines :%s/the/&/g "the" anywhere :%s/<the>/&/g "the" as a word你可能希望复位''hlsearch'' 或者使用":nohlsearch"。
24、如何去掉高亮搜索?
方法一::nohlsearch
方法二:/awertgvcxz (查找一个肯定不存在的字符串) 设置了高亮搜索(:set hlsearch)以后,可以通过:set nohlsearch 永久地关闭高亮显示,也可以通过:nohlsearch 暂时关闭高亮显示,下次搜索时将自动恢复高亮。
25、如何快速插入多行数字0-99?
目的:要往文件test.c中插入0-99这一百行数
步骤:
a、vi tmp
b、将代码 let i = 0 while i < 100 put = i let i = i + 1 endw 输入,并保存退出;
c、vi test.c :source tmp
也可以:
a、vi test.c
b、:let i = 0 :while i < 100 …… :endw 在冒号模式下,输入上述命令;如果位数不足需要在前面补零,可以用Ctrl-V块选择,然后I插入0。
26、如何设置中文编码? 在.vimrc中作如下设置,可以实现界面以及显示字体采用gb2312,遇到utf8文件时自动做转换:技术系列VIM快捷键使用东软MID10/ 11 set encoding=prc set fileencoding=prc set fileencodings=utf8,prc 需要注意的是,按照上面的设置,如果你打开一个空的(0字节)或者是纯7bits的文件,这时VIM将认为是utf8编码的文件,如果你往里面输入中文,存盘的时候也将是utf8。因此你可能需要在存盘之前:set fileencoding=prc 把编码改回来。另外,对于纯7bits的文件,由于认成了utf8,每次打开存盘的时候都要做一次转换,会比较慢,所以如果你很长一段时间不会接触utf8的话,可能暂时把fileencodings一行注释掉比较好。[警告]:转换可能会造成信息丢失!如果你需要编辑的是重要的系统文件,最好把fileencodings 一行暂时注释掉。
27、如何去掉或者插入^M这样的字符?在VIM的插入模式或者命令行中用<C-V>输入^M这样的特殊字符,例如输入 :s/<C-V><C-M>//g实际显示是 :s/^M//g就可以去掉文件中所有的^M。同理,要在文件中输入^M只要按<C-V><C-M>即可。这个问题往往发生在WINDOWS/DOS系统和UNIX系统之间交换文件时,因为这两类系统对于文本的“换行”概念解释不同。所以,还有一个解决方法就是对这类文本进行转换。vim内部就可以做这件事情。首先打开文本,然后set fileformat=unix再从新保存该文件覆盖原文件就可以去除:^M了。
28、如何整体缩进一段代码(插入tab)? 选中一段代码,< 或> 或2< 或3> ……
29、如何合并两行? 合并两行的键是J,另外,如果你设置了set backspace=2 你就可以用backspace或者delete很方便的删到上一行或者下一行。
30、如何设置缩进距离(tab宽度)? set tabstop=8 set shiftwidth=8