vim编辑器
2019-02-17 本文已影响0人
极地冰凌_25bf
vim 编辑器
\vi: Visual Interface
文本编辑器种类
- 行编辑器: sed
- 全屏编辑器: nano, vim
vim: vi improved
使用
vim: 模式化的编辑器
-
基本模式:
- 编辑模式
- 命令模式
- 输入模式
-
打开文件 vim [options] files
-
options
- +#: 打开文件后,直接让光标处于第#行的行首
- +/PATTERN: 打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首
-
options
-
模式转换
-
编辑模式 --> 输入模式
- i: insert, 在光标所在处前面输入
- a: append, 在光标所在处的后面输入
- o: 在当前光标所在行的下方插入一个新行
- I: 在当前光标所在的行首输入
- A: 在当前光标所在行的行尾输入
- O: 在当前光标所在行的上方插入一个新行
- c:
- C:
-
输入模式 --> 编辑模式
- ESC
-
编辑模式 --> 命令模式
- :
-
命令模式 --> 编辑模式
- ESC
-
编辑模式 --> 输入模式
-
光标跳转
-
子符间跳转:
- h, j, k, l
- h: 左
- j: 下
- k: 上
- l: 右
- #COMMAND: 跳转由#指定的个数的字符
- h, j, k, l
-
单词间跳转:
- w: 下一个单词的词首
- e: 当前或下一个单词的词尾
- b: 当前或前一个单词的词首
-
行首行尾跳转:
- ^: 跳转到行首的第一个空白字符
- 0: 跳转至行首
- $: 跳转至行尾
-
行间移动:
- #G: 跳转至由#指定行
- G: 最后一行
- 1G,gg: 第一行
-
句间移动
- ): 往后移动一句
- (: 往前移动一句
-
段落间移动
- }: 向后移动一段
- {: 向前移动一段
-
子符间跳转:
-
vim的编辑命令
-
** 字符编辑**
- x: 删除光标处的字符
- #x: 删除光标处其实的第#个字符
- xp 交换光标所在处的字符及其后面字符的位置
-
替换命令(r,replace)
- r: 替换光标所在处的字符
-
删除命令
-
d: 删除命令, 可结合光标跳转字符实现范围删除
- d$: 光标一直到行尾的字符
- d^: 光标一直到行首的字符
- d0:
- dw
- de
- db
-
#command
-
-
dd: 删除光标所在的行
- #dd: 多行删除
-
D: 删除光标所在行的所有字符
-
-
粘贴命令(p, put, paste)
- p: 缓冲区存的如果为整行, 则粘贴在当前光标所在的行的下方; 否则, 则粘贴至当前光标所在处的后面
- P: 缓冲区存的如果为整行, 则粘贴在当前光标所在行的上方; 否则, 则粘贴至当前光标所在处的前面
-
复制命令(y, yank)
- y: 复制, 工作行为与d命令相似
- y$
- y0
- y^
- yw
- ye
- yb
- #yy: 复制多行
- y: 复制, 工作行为与d命令相似
-
改变命令(c, change)
- c: 修改
* 编辑模式 --> 输入模式- c$
- c^
- c0
- cb
- ce
- cw
- #command
- cc: 删除并输入新的内容
- #cc
- c: 修改
-
可视化模式
- v: 按字符选定
- V: 按行选定
Note: 经常结合编辑命令:d c y
-
撤销此前的编辑:
- u(undo): 撤销此前操作
- #u: 多次撤销
- u(undo): 撤销此前操作
-
撤销此前的撤销 Ctrl+r
-
重复前一个编辑操作"."
-
-
翻屏操作
-
Ctrl+f: 向文件尾部翻一屏
-
Ctrl+b: 向文件首部翻一屏
-
Ctrl+d: 向文件尾部翻半屏
-
Ctrl+u: 向文件首部翻半屏
-
-
vim中的命令模式
- (1) 地址定界
- :start_pos,end_pos)
- #: 具体第#行, 例如2表示第2行
- #,#: 从左侧#表示行起始, 到右侧#表示行结尾
- #,+#: 从左侧#表示的行起始, 到右侧#+#表示行尾
- .: 当前行
- $: 最后一行
- %: 全文, 相当于1,$
- /PATTERN1/,/PATTERN2/: 从第一次被PATTERN1模式匹配到的行开始, 一直到被PATTERN2匹配到的行结束
- #,/PATTERN/
- /PATTERN/,$
-
使用方式
- 后跟一个编辑命令
- d
- y
- w /PATH/TO/SOMEWHERE: 将范围内的行另存至指定文件中
- r /PATH?FROM/SOMETHERE: 从指定位置插入指定文件中的所有内容
- 后跟一个编辑命令
- :start_pos,end_pos)
- (2) 查找
- /PATTERN: 从当前光标所在处向文件尾部查找
- ?PATTERN: 从当前光标所在处向文件首部查找
- n: 与命令同方向
- N: 与命令反方向
- (3) 查找并替换
- s: 在命令模式下完成查找替换操作
- s/要查找的内容/替换为的内容/修饰符
- 要查找的内容, 可使用模式
- 替换为的内容, 不能使用模式, 但是可以使用\1,\2,\3....等后向引用符号,还可以使用&引用前面查找时查找到的整个内容
- 修饰符
- i: 忽略大小写
- g: 全局替换 默认情况下, 每行只替换第一次出现
Note: 查找替换中的分割符/可以替换为其他字符例如@,#,
- s/要查找的内容/替换为的内容/修饰符
- s: 在命令模式下完成查找替换操作
- (1) 地址定界
-
多文件模式
-
vim FILE1 FILE2 FILE3 ....
- :next 下一个
- :prev 前一个
- :first 第一个
- :last 最后一个
- :wall 保存所有
- :qall 退出所有
-
vim FILE1 FILE2 FILE3 ....
-
窗口分割模式
-
vim -o|-O FILE1 FILE2 ...
- -o: 水平分割
- -O: 垂直分割
-
在窗口间切换: Ctrl+w,arrow|h,j,k,l
-
** 单文件窗口分割:
- Ctrl+w,s: split, 水平分割
- Ctrl+w,v: vertical, 垂直分割
-
-
定制vim的工作特性:
-
配置文件: 永久有效
- 全局: /etc/vimrc
- 个人: ~/.vimrc
- 命令模式: 对当前vim进程有效
- (1) 行号:
- 显示: set number, 简写为set nu
- 取消显示: set nonumber, 简写为set nonu
- (2) 括号匹配
- 匹配: set showmatch, 简写为set sm
- 取消: set noshowmatch, 简写为set nosm
- (3) 自动缩进
- 启用: set ai
- 禁用: set noai
- (4) 高亮搜索
- 启用: set hlsearch
- 禁用: set nohlsearch
- (5) 语法高亮
- 启用: syntax on
- 禁用: syntax off
- (6) 忽略字符的大小写
- 启用: set ic
- 不忽略: set noic
-
配置文件: 永久有效