vi 和 vim无需过多的区分,vim可认为是vi的增强版。
这篇关于vim的手册,我个人觉得实在无法把它写成文章,只能以手册的方式列举出来,
因为,vim是一个动手使用的工具,只能在使用中你才能慢慢发现它的操作多么符合逻辑,
我从下面这些简略的描述中,尽量将它的操作步骤写出来,但更重要的是你必须在使用过程中去尝试,
才会发现更多有趣的功能。
vim的配置文件:
/etc/vimrc :这个配置文件到设置对所有用户生效。
~/.vimrc :vim在家目录中有一个配置文件,将自定义到map , ab , set设置都可以直接加入其中,每次使用vim时都生效此文件可自己手动创建。
注:修改默认编辑器为:vim EDITOR=vim export EDITOR
vim使用必须知道它主要的三种模式:【注意:下面所有操作使用的字母均区分大小写】
0. 所有模式的退出都是按 ESC 键
vim下删除实际为剪切
1. 命令模式 :可输入内部指令也可进行复制删除移动等操作,不过这种方式通常适合于查找替换,直接导入命令结果,打开多文件同时编辑等。
切入方法:在末行模式下,输入“冒号”,即可进入
2. 输入模式:这是正常的编辑文件内容时的状态。
切入方法比较多:
1. i :从当前光标位置开始进入编辑状态。 I :先回到行首在进入编辑状态。 2. a :将光标向前移一个字符后进入编辑状态。 A :先到行尾,在进入编辑状态。 3. s :先删除当前光标处字符,再进入编辑状态。S :先删除当前行,在进入编辑状态。 4. cc :先删除当前行,在进入编辑状态。 C :从当前光标处删除到行尾,在进入编辑状态。 5. o :先向下插入新空白行,在进入编辑状态。 O :先向上插入新空白行,在进入编辑状态。
3. 末行模式:刚用vim打开文件时就处于末行模式。
在末行模式下可以直接输入内部命令来移动光标,删除,恢复,复制等操作。
查找 切入方法:直接按 / 替换编辑模式:此模式仅用来替换使用 切入方法:按 R 按 r :不会进入替换编辑模式,它是直接替换单个字符。 多行选取模式:【可进行复制,删除】 切入方法:按 大V, 然后按上下键选择多行进行选取;小v :是从光标当前位置开始多行选取。 接着,按 y | d 可进行复制或删除; 最后,按 p 即可粘贴。 块选取模式:【可进行复制,删除】 切入方法:按 Ctrl + 小v, 然后按上下左右键来选择操作的块。 接着,按 y | d 可进行复制或删除; 最后,按 p 即可粘贴。 注:块复制的一个实用的小技巧: 多行快速注释: > 先移到行首,按ctrl + v, > 将需要注释掉的行的行首都选中 > 按 大I,进入输入模式 > 接着输入 注释符号 如 #,// .... > 最后,同时按两次 ESC键,即可。
编辑操作:
末行模式: gg :快速到全文开头 G :快速到全文末尾 Y | yy :复制一行。 number + Y | yy :同时复制number行。 p :粘贴到当前行下面 P :粘贴到上当光标的上一行。 dd :删除一行。 number + dd : 同时删除number行。 D :从光标当前位置删除到行尾 x : 删除光标右边的字符 X : 删除光标左边的字母 u :撤销 ctrl + r :重做 命令模式: :20,100 {[copy |move 200] delete } -->将20~100的内容复制到201行处。 copy可简写为co move可简写为mo delete可简写为del :r /etc/shadow -->将/etc/shadow读入到当前光标所在处 : ! ls /usr/local -->不退出vim,来执行命令。 :r ! grep mysql /etc/passwd -->将命令执行结果插入到当前光标处 保存退出: :wq | ZZ -->表示保存退出 ctrl + z :将当前编辑文件调入后台。使用fg调回前台。 ctrl + g :显示光标在当前文件的位置信息 :q! -->不保存退出 :w /tmp/abc.txt -->另存为/tmp/abc.txt :10,$w /tmp/tail.txt -->将文件从第10行到文件尾,另存为/tmp/tail.txt :X -->对文件加密存储 :e! -->重新读入当前文件 开启vim的功能: :set nu 开启行号显示 :set nonu 关闭行号显示 :set ts=4 设置tab键为4个字符的空挡 :set smartindent 开启vi的自动缩进功能 :set nosmartindent 关闭自动缩进功能 :set sw=4 设置自动缩进的空挡为4个字符 :set list 查看隐藏字符
查找替换: 操作方法: 1. 进入命令模式 2. 格式:[range]s/<pattern>/<string>/[args] 例: 要替换全文中所有abc为123,且忽略大小写. :%s/abc/123/gi 仅替换21~50行之间所有的abc为Ab123 :21,50s/abc/Ab123/Ig 从当前行向下10都注释掉 :.,+10s/^/#/g 参数说明: range: 空:表示仅对当前行进行查找替换 % : 对全文进行查找替换 Row : 仅对指定行号的行进行查找替换 Row1,Row2 : 对一个行号范围进行查找替换 args : 它的取值可以是下列之一 或 组合。 空 :仅替换该行第一个匹配字符串 g : 替换该行所有匹配的字符串 i :忽略大小写 I : 不忽略大小写 c : 每个替换都需要确认
扩展: dG : 从当前位置删到全文尾 yG : 从当前位置复制到全文尾 dgg : 从当前位置删到全文首 ygg :从当前位置复制到全文首 d^ : 从光标当前位置删到行首 y^ : 从光标当前位置复制到行首 d$ : 从光标当前位置删到行尾 y$ : 从光标当前位置复制到行尾 dw :删除光标右边位置的单词 yw :复制光标右边位置的单词 db :删除光标左边位置的单词 yb :复制光标左边位置的单词 dNw :删除光标右边N个的单词 yNw :复制光标右边N个的单词 dNb :删除光标左边N个的单词 yNb :复制光标左边N个的单词 删除空行: :%s/^\n//g :g/^$/d -->删除空行 :g/^\s*$/d -->删除任意空行 标记点复制删除移动: 操作方法: 0. 进入末行模式 1. 先将光标移动操作行的任意位置,接着按 ma 2. 将光标移动到区间的结束行的任意位置,按 mb 3. 根据操作: 》若为 删除,则 进入命令模式,:'a,'b del -->注:是单引号+a,单引号+b 》若为 复制或移动,则在全文中任意位置,按 mc 接着进入命令模式, :'a,'b [copy | move] 'c vim启动时直接定位到指定行: vim + /var/log/message -->启动时直接定位到文件尾。 vim +行号 /var/log/message -->启动时直接定位到指定行。 多文件并行编辑: :sp a.txt -->将当前编辑窗口平均分成上下两块,在上半块显示a.txt, 使用ctrl + w + w,在多个窗口间切换。 :vsp a.txt -->将当前编辑窗口平均分成左右两块,在左半块显示a.txt, 使用ctrl + w + w,在多个窗口间切换。 或 vim -O 1.txt 2.txt 3.txt -->大O参数,可同时编辑三个文件, 使用ctrl + w + w,在多个窗口间切换。 vimdiff 1.txt 2.txt -->在vim编辑器中显示出两个文件的不同之处。 定义快捷键: 操作方法: 1. 进入命令模式 2. :map ^P I#<ESC>: -->注意:^P 这个尖角号在Vi中是通过: 按ctrl+v 再按ctrl+p才出来^P的 或 按ctrl + v + p也可。 表定义了一个快捷键ctrl+P,只有按ctrl+P则执行将光标移到行首,并插入#号,再退回到命令模式。 【i:插入,#:要插入的字符,<ESC>:退出标志】 例: 定义了一个快捷键ctrl+D,执行操作为:将光标移到行首,并删除第一个字符,如:# :map ^D ^x 定义一个快捷键ctrl+E,在光标所在处插入我的邮箱。 :map ^E 取消快捷键:unmap ^P 将a替换为b : 操作方法: 1. 进入命令模式 2. :ab mymail 3. 在正文中任何位置,输入mymail,按空格 或 回车即可快速替换为 取消方法:unab mymail
行间移到操作:
k :向上
5k :向上移到5行
命令模式下,再按 +number 回车可以当前行为基准向上移到number行。
h : 向左 l :向右
5h:左移5个字符 5l:向右移5个字符
5b: 左移5个单词 5w:右移5个单词
number + 空格: 向右移动指定字符数。
j :向下
5j:向下移到5行
number + 回车 :向下翻指定行
命令模式下,再按 -number 回车可以当前行为基准向下移到number行。
快速移到行首和行尾
操作方法:
编辑: 直接按 大I,可快速移到行首并进入编辑状态,按 大A,可快速到行尾并进入编辑状态。
非编辑:直接按 ^ 可快速跳到行首, $ 可快速跳到行尾。
快速定位到当前行中指定的字母处
操作方法:
正向跳转:则在光标所在行的任意位置, 按 f ,再按要跳到的字母即可快速跳转到。
反向跳转:则在光标所在行的任意位置, 按 F ,再按要跳到的字母即可快速跳转到。
段落间跳转:
操作方法:
在全文的任意位置, 按 { 可跳转到上文中第一个空白行隔断处; 按 } 可跳到下文中第一个空白行隔断处。
此功能非常适合快速复制 | 删除 整个函数
操作方法:先移到函数头或尾的空白行处, 以尾为例,先按 { 到函数头部第一个空白行,
再按 y | d , 最后按 } 再跳到函数尾,即可复制或删除一整个函数。
自动匹配最近的一对圆括号 或 花括号,非常适合复制整个函数体
操作方法:
复制或删除函数体:将光标移到到函数体的 花括号上,按:y% 或 d%
复制或删除函数头:将光标移到到函数名首字母处,按 y% 或 d%
定界符内的字符快速复制,剪切,删除:
定界符:如 "/a/b/c", '/etc/a', function(a,b), <html …/>
类似上面这种定界符内的字符均可操作:
方法:
1. 先将 光标移到到定界符内部任意位置,
2. y : 复制, d: 剪切,删除, c: 删除或剪切 并 直接进入编辑模式
i :即inner,表示要操作对象内部的文本
a : 即all,表示要操作整个对象的文本
3. 直接按 y + i 或 a +定界符的两端任何一个,即可剪切或复制。
如:
<html …/> ,
若仅剪切<>内部的字符,方法是直接将光标移到<>内部,按 di> 或 di< 即可。
翻屏操作:
ctrl + f :向下翻屏幕 ctrl + d: 向下翻半屏幕
ctrl + b :向上翻屏幕 ctrl + u: 向上翻半屏幕
快速将光标所在行移到到行屏幕顶或尾或中间:
操作方法:
将光标移到全文中任意位置,
按 zt ,可将当前光标所在处置于屏幕顶;
z+回车 ,可将当前光标所在处置于屏幕顶;
按 zb ,可快速光标所在处置于屏幕低;
z+减号 ,可将当前光标所在处置于屏幕低;
按 zz ,可将当前光标所在处置于屏幕中间位置。
注:此方法可配合 H, M, L 来方便快速翻页:
H :快速移到到屏幕顶。
M :快速移到到屏幕中间
L :快速移到到品名低。
切换光标处字母的大小写:
操作方法:
将光标移到到字母上,按 ~
增减光标处的数字:
操作方法:
增加数字:将光标移到到数字上,按 ctrl + a
减小数字:将光标移到到数字上,按 ctrl + x
重复前一次操作:
操作方法:
刚刚操作过的动作,若想再次做,则可直接,按 点号 "."
原创文章,作者:Wn1m,如若转载,请注明出处:http://www.178linux.com/8117