一. vim简介
vim 是linux系统自带的文本编辑器。
vim 共有三种模式:
命令模式:用vim打开文件就进入了命令模式;输入模式:在命令模式输入i/I/a/A/o/O就进入输入模式;
在输入模式下按键esc,则退出输入模式进入命令模式底线模式:在命令模式按下英文冒号:就进入了底线模式;
二. vim命令使用总结
2.1 光标移动
(1)光标上下左右移动(键盘的上下左右四个键):
向上、向下同理。
(2)行首、行尾:
(3)移动到具体的某一行
(4)移动到单词
2.2 查找
在命令模式下输入以下命令进行查找,光标会跳转到第一个匹配的字符,此时按下n 代表重复前一个搜索动作;按下N代表反向重复前一个搜索动作 。
2.2.1 Vim查找支持正则表达式
例如/vim$匹配行尾的"vim"。需要查找特殊字符需要转义,例如/vim$匹配"vim$"。
注意:查找回车应当用\n,而替换为回车应当用\r(相当于<CR>)。
2.2.2 vim查找默认是大小写敏感查找
在查找模式中加入\c表示大小写不敏感查找,\C表示大小写敏感查找
例如:/foo\c 会查找所有foo、FOO、fOOD等
2.2.3 查找光标所在单词
在命令模式下按下:
*:匹配当前光标所在的单词(这里的单词是指前后为空白字符或者点号,例如当前为foo, 可以匹配foo bar中的foo,但不可匹配foobar中的foo。这在查找函数名、变量名时非常有用),并将光标移动到下一个单词
#:匹配当前光标所在的单词,并将光标移动到上一个单词
g*:查找光标所在单词的字符序列,每次出现前后字符无要求,例如当前为foo,那么foo bar和foobar中的foo均可被匹配到。
2.3 替换
替换的语法如下::{作用范围}s/{目标}/{替换}/{替换标志}
% :代表在全文范围内查找并替换
g:所有的出现都会被替换
i:i表示大小写不敏感
I:I表示大小写敏感
2.4 删除
2.5 复制粘贴
2.6 纵向编辑
块操作也叫纵向编辑模式。
纵向编辑不仅是编辑器的一种功能,更是人们思考问题的一种方式,项目符号、段落编号,都是纵向编辑的体现
2.6.1 进入纵向编辑模式
在 Vim 命令模式下,移动游标定位于某一个位置,键入 ctrl-v后状态栏上出现 VISUAL BLOCK 字样,即进入纵向编辑模式。移动光标以按需选择待编辑的区域。
2.6.2 批量修改
第一步:将光标定位于想要修改的字符
第二步:ctrl-v 进入纵向编辑模式
第三步:移动光标选中需要修改的修改的区域 (键入G:移动光标至最后一行;键入gg:移动光标至第一行)
第四步:键入r进入修改模式
第五步:键入想改成为的字母(貌似只支持英文,中文不支持)的同时完成修改
说明:这种方式只支持单字符的修改的修改,如果一次选中多个字符比如“12”,想要修改为“ab”,按下a的时候“12”已经改为“aa”了。
2.6.3 批量插入
第一步:将光标定位于想要修改的字符
第二步:ctrl-v 进入纵向编辑模式
第三步:移动光标选中需要修改的修改的区域 (键入G:移动光标至最后一行;键入gg:移动光标至第一行)
第四步:键入I或者A进入插入模式(I:在光标之前插入;A:在光标之后插入)
第五步:键入想插入的字符串
第六步:ESC 退出纵向编辑模式的同时所有选中的字符后都添加了想要插入的内容
2.6.4 批量删除
第一步:将光标定位于想要修改的字符
第二步:ctrl-v 进入纵向编辑模式
第三步:移动光标选中需要修改的修改的区域 (键入G:移动光标至最后一行;键入gg:移动光标至第一行)
第四步:键入d的同时完成选中内容的删除
2.6.5 vim插件VisIncr
Vim 的纵向编辑模式还可以通过插件 VisIncr 的扩展,实现更丰富的功能,如纵向的生成数列,这里暂未探究。
2.7 其他命令
2.8 vim 打开文件后显示乱码
Vim 有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding ,它们的意义如下:
encoding—— Vim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等。如你的vim的encoding为utf-8,所编辑的文件采用cp936编码,vim会自动将读入的文件转成utf-8(vim的能 读懂的方式),而当你写入文件时,又会自动转回成cp936(文件的保存编码)。
fileencoding —— Vim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此)。
fileencodings —— Vim自动探测fileencoding的顺序列表, 启动时会按照它所列出的字符编码方式 从前到后,逐一探测 即将打开的文件的字符编码方式。因此最好将Unicode 编码方式放到这个列表的最前面,如果都找不到,那么就会以 latin1 (ASCII)的方式打开。
termencoding—— Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。如果vim所在的term与vim编码相同,则无需设置。如其不然,你可以用vim的termencoding选项将自动转换成 term的编码.这个选项在 Windows 下对我们常用的 GUI 模式的 gVim 无效,而对 Console 模式的Vim 而言就是 Windows 控制台的代码页,通常我们不需要改变它。
注:Vim 在线帮助 :help encoding-names
2.9 windows与linux系统互传文件问题分析解决
2.9.1 vim打开文件后出现^M的解决方法
在linux下,不可避免的会用VIM打开一些windows下编辑过的文本文件。我们会发现文件的每行结尾都会有一个^M符号,这是因为 windows编辑器和 Linux编辑器对文件行末的回车符处理不一致,对于回车符的定义:
windows:0D0Aunix\linux:0AMAC:0D解决方法:
2.9.2 windows文件上传到linux之后无法解析
(1)unix2dos filename
将unix中文件转换为windows可查看的格式(主要是非可见字符)
(2)dos2unix filename
将windows中的文件转换为unix可查看的格式 (主要是非可见字符)
来源:oschina
链接:https://my.oschina.net/u/3730932/blog/3220457