vim编辑器详解
1. vim编辑器的基本使用
1.1 几种基本模式
- 编辑模式、命令模式
- 输入模式
- 末行模式:内置的命令行接口
1.2 打开文件
- 基本格式
- vim [OPTION] ... FILE ...
- 定位&匹配
- vim FILE +#
- 打开文件后,直接让光标处于第#行的行首
- vim FILE +/PATTERN
- 打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首
- vim FILE +#
1.3 模式转换
1)编辑模式 ——> 输入模式
- i:insert, 在光标所在处输入
- I:在当前光标所在行的行首输入
- a:append, 在光标所在处后面输入
- A:在当前光标所在行的行尾输入
- o:在当前光标所在行的下方打开一个新行
- O:在当前光标所在行的上方打开一个新行
2)输入模式 ——> 编辑模式
- 按ESC
3)编辑模式 ——> 末行模式
- :
4)末行模式 ——> 编辑模式
- 按ESC
1.4 关闭文件
- :q 退出
- :q! 强制退出,丢弃做出的修改
- :wq 保存退出
- :x 保存退出
- :w /PATH/TO/SOMEWHERE
- ZZ 保存退出
2. 光标跳转
2.1 字符间跳转
- h, j, k, l
- h: 左
- l: 右
- j: 下
- k: 上
- #COMMAND:跳转由#指定的个数的字符
2.2 单词间跳转
- w:下一个单词的词首
- e:当前或下一单词的词尾
- b:当前或前一个单词的词首
- #COMMAND:由#指定一次跳转的单词数
2.3 行首行尾间跳转
- ^: 跳转至行首的第一个非空白字符
- 0: 跳转至行首
- $: 跳转至行尾
2.4 移动
1)行间移动
- #G:跳转至由#指定行
- G:最后一行
- 1G, gg:第一行
2)句间移动
- )
- (
3)段落间移动
- }
- {
3. vim的编辑命令
3.1 基本编辑操作
1)字符编辑
- x:删除光标处的字符
- #x:删除光标处起始的#个字符
- xp:交换光标所在处的字符及其后面字符的位置
2)替换命令(r, replace)
- r:替换光标所在处的字符
3)删除命令
- d:删除命令,可结合光标跳转字符,实现范围删除
- d$:
- d^:
- d0:
- dw
- de
- db
- #COMMAND
- dd: 删除光标所在的行
- #dd:多行删除
4)粘贴命令(p, put, paste)
- p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面
- P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面
5)复制命令(y, yank)
- y: 复制,工作行为相似于d命令
- y$
- y0
- y^
- ye
- yw
- yb
- #COMMAND
- yy:复制行
- #yy: 复制多行;
6)改变命令(c, change)
- 编辑模式 --> 输入模式
- c: 修改
- c$
- c^
- c0
- cb
- ce
- cw
- #COMMAND
- cc:删除并输入新内容
- #cc:
3.2 其它编辑操作
1)可视化模式
- v: 按字符选定
- V:按行行定
- 说明:经常结合编辑命令 d, c, y 一起使用
2)撤消此前的编辑
- u(undo):撤消此前的操作
- #u:撤消指定次数的操作
3)撤消此前的撤消
- Ctrl+r
4)重复前一个编辑操作
- 使用点号 .
3.3 翻屏操作
- Ctrl+f:向文件尾部翻一屏
- Ctrl+b:向文件首部翻一屏
- Ctrl+d:向文件尾部翻半屏
- Ctrl+u:向文件首部翻半屏
4. vim中的末行模式
- 内建的命令行接口
4.1 地址定界
- 语法:
- :start_pos, end_pos
- 规则:
- # 具体第#行,例如2表示第2行
- #, # 从左侧#表示行起始位置,到右侧#表示行结尾
- #, +# 从左侧#表示的行起始,加上右侧#表示的行数
- . 表示当前行
- $ 表示最后一行
- % 表示全文,相当于1,$
- /pat1/, /pat2/ 从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束
- 使用方式:(后跟一个编辑命令)
- d 删除
- y 复制
- w /path/to/somewhere 将范围内的行另存至指定文件中
- r /path/to/somewhere 在指定位置插入指定文件中的所有内容
4.2 查找&替换
1)查找
- /PATTERN:从当前光标所在处向文件尾部查找
- ?PATTERN:从当前光标所在处向文件首部查找
- n:与命令同方向
- N:与命令反方向
2)查找并替换
- 语法:(s:在末行模式下完成查找替换操作)
- s/要查找的内容/替换成的内容/修饰符
- 规则:
- 要查找的内容:可以使用模式
- 替换成的内容:不能使用模式,但可以使用 \1, \2 ... 等后向引用符号,还可以使用“&”引用前面查找时查找到的整个内容
- 修饰符:
- i 忽略大小写
- g 全局替换;默认情况下,每一行只能替换第一次出现,使用g选项则为全部替换
- 说明:
- 查找替换中的分隔符 / 可以替换为其他字符,如 @、#
4.3 多文件模式
- 语法:
- vim FILE1 FILE2 FILE3 ...
- 操作:
- :next 下一个
- :prev 前一个
- :first 第一个
- :last 最后一个
- :wall 保存所有
- :qall 退出所有
4.4 窗口分隔模式
1)多文件窗口分隔
- vim -o | -O FILE1 FILE2 ...
- -o: 水平分割
- -O: 垂直分割
- 在窗口间切换:
- Ctrl+w, Arrow
2)单文件窗口分割
- Ctrl+w,s:split,水平分割
- Ctrl+w,v:vertical,垂直分割
5. 定制vim的工作特性
5.1 配置文件
- 全局配置文件:/etc/vimrc
- 局部配置文件:~/.vimrc
5.2 配置项
- 行号
- 显示:set number, 简写为set nu
- 取消显示:set nonumber, 简写为set nonu
- 括号匹配
- 匹配:set showmatch, 简写为set sm
- 取消:set nosm
- 自动缩进
- 启用:set ai
- 禁用:set noai
- 高亮搜索
- 启用:set hlsearch
- 禁用:set nohlsearch
- 语法高亮
- 启用:syntax on
- 禁用:syntax off
- 忽略字符的大小写
- 启用:set ic
- 不忽略:set noic
- 设置Tab缩进的空格数
- set tabstop=4
- 设置编辑器将多少个空格视为一个缩进
- set shiftwidth=4
6. 一些使用技巧
6.1 多行编辑
1)多行添加(添加注释)
- Ctrl+v 进入可视化模式
- 然后选中想要多行编辑的位置范围
- 键入大写的 I ,进入插入模式,再键入想要插入的字符
- 最后连按两次ESC,完成添加
2)多行删除
- Ctrl+v 进入列选择模式,移到光标把注释符选中,按下d,注释就被删除了