1.7 linux基础(七)
vim简介
vi: Visual Interface,文本编辑器
文本:ASCII, Unicode
文本编辑种类: 行编辑器: sed
全屏编辑器:nano, vi vim - Vi Improved
其他编辑器: gedit 一个简单的图形编辑器
gvim 一个Vim编辑器的图形版本
1.7.1 vim:一个模式编辑器
击键行为是依赖于 vim的 的“模式” 三种主要模式:
命令(Normal)模式:默认模式,移动光标,剪切/粘贴文本
插入(Insert)或编辑模式: 修改文本 扩展命令(extended command )模式: 保存,退出等
Esc键 退出当前模式
Esc键 Esc键 总是返回到命令模式
模式转换:
编辑-->输入:
- i: 在当前光标所在字符的前面,转为输入模式;
- a: 在当前光标所在字符的后面,转为输入模式;
- o: 在当前光标所在行的下方,新建一行,并转为输入模式;
- I:在当前光标所在行的行首,转换为输入模式
- A:在当前光标所在行的行尾,转换为输入模式
- O:在当前光标所在行的上方,新建一行,并转为输入模式;
输入-->编辑:
- ESC
编辑-->末行:
- :
末行-->编辑:
ESC, ESC
1.7.2 打开文件(默认处于编辑模式)
vim [OPTION]... FILE...
vim /path/to/somefile
-
+#: 打开文件后,让光标处于第#行的行首,+默认行尾
-
+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的 行首
-
–b file二进制方式打开文件
-
–d file1 file2… 比较多个文件
-
-m file 只读打开文件
-
ex file 或 vim –e 直接进入ex模式
如果该文件存在,文件被打开并显示内容
如果该文件不存在,当编辑后第一次存盘时创建它
1.7.3 关闭文件
1.7.3.1 末行模式关闭文件
-
:q 退出
-
:wq 保存并退出
-
:q! 不保存并退出
-
:w 保存
-
:w! 强行保存
-
:wq 保存退出
-
:x 保存退出
1.7.3.2 编辑模式下退出
- ZZ: 保存并退出
- ZQ:不保存退出
1.7.4 、移动光标(编辑模式)
1、逐字符移动:
- h: 左
- l: 右
- j: 下
- k: 上
-
h: 跳转由#指定的个数的字符;
2、以单词为单位移动
-
w: 移至下一个单词的词首
-
e: 跳至当前或下一个单词的词尾
-
b: 跳至当前或前一个单词的词首
-
w:由#指定一次跳转的单词数
3、行内跳转:
-
0: 绝对行首
-
^: 行首的第一个非空白字符
-
$: 绝对行尾
4、行间跳转
-
G:跳转至第#行;
- G:最后一行
- 1G, gg: 第一行 8gg 跳转至第8行
- 末行模式下,直接给出行号即可
1.7.5 翻屏
- Ctrl+f: 向下翻一屏
- Ctrl+b: 向上翻一屏
- Ctrl+d: 向下翻半屏
- Ctrl+u: 向上翻半屏
1.7.6、删除单个字符
- x: 删除光标所在处的单个字符
-
x: 删除光标所在处及向后的共#个字符
- J:删除当前行后的换行符
1.7.7 删除命令: d
- d命令跟跳转命令组合使用;#dw, #de, #db
- dd: 删除当前光标所在行
-
dd: 删除包括当前光标所在行在内的#行;
- d$: 删除到行尾
- d^:删除到非空行首
- d0:删除到行首
末行模式下:
StartADD,EndADDd - .: 表示当前行
- $: 最后一行
- +#: 向下的#行
1.7.8 粘贴命令 p
- p: 如果删除或复制为整行内容,则粘贴至光标所在行的下方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的后面;
- P: 如果删除或复制为整行内容,则粘贴至光标所在行的上方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面;
1.7.9 复制命令 y
用法同d命令
- y$
- y0
- y^
- ye
- yw
- yb
1.7.10 修改:先删除内容,再转换为输入模式
- c: 修改后切换成插入模式
用法同d命令 - c$
- c^
- c0
- cb
- ce
- cw
-
COMMAND
- cc:删除当前行并输入新内容,相当于S
-
cc:
- C:删除当前光标到行尾,并切换成插入模式
1.7.11 替换:r
R: 替换模式
1.7.12 撤消编辑操作 u
- u:撤消前一次的编辑操作
连续u命令可撤消此前的n次编辑操作 -
u: 直接撤消最近#次编辑操作
- u撤销最近的更改
-
u撤销之前多次更改
- U 撤消光标落在这行后所有此行的更改
- 按Ctrl - r重做最后的“撤消”更改
- . 重复前一个操作
- n.重复前一个操作n次
- 撤消最近一次撤消操作:Ctrl+r
1.7.13 、重复前一次编辑操作
- .
1.7.18 可视化模式
- 允许选择的文本块
- v 面向字符
- V 面向行
- ctrl-v 面向块
- 可视化键可用于与移动键结合使用: w ) } 箭头等
- 突出显示的文字可被删除,复制,变更,过滤,搜索,替换等
1.7.19 查找
- /PATTERN
- ?PATTERN
- n:与命令同方向
= N:与命令反方向
1.7.20 查找并替换
- 在末行模式下使用s命令
- ADDR1,ADDR2s@PATTERN@string@gi
1,$ - %:表示全文
- s: 在扩展模式下完成查找替换操作
- 格式:s/要查找的内容/替换为的内容/修饰符
- 要查找的内容:可使用模式
- 替换为的内容:不能使用模式,但可以使用1, 2, ...等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容
- 修饰符:
- i: 忽略大小写
- g: 全局替换;默认情况下,每一行只替换第一次出现
- gc:全局替换,每次替换前询问 查找替换中的分隔符/可替换为其它字符,
- 例如 s@/etc@/var@g s#/boot#/#i
1.7.21 编辑二进制文件
- 以二进制方式打开文件
vim –b binaryfile - 扩展命令模式下,利用xxd命令转换为可读的十六进制 :%!xxd 编辑二进制文件
- 扩展命令模式下,利用xxd命令转换回二进制 :%!xxd –r 保存退出
1.7.22 多文件模式
-
vim FILE1 FILE2 FILE3 ...
- :next 下一个
- :prev 前一个
- :first 第一个
- :last 最后一个
- :wall 保存所有
- :qall 退出所有
- :wqall
-
退:qa 全部退出
1.7.23 使用多个“窗口”
Ctrl+w, s: 水平拆分窗口
Ctrl+w, v: 垂直拆分窗口
-
多文件分割
vim -o|-O FILE1 FILE2 ...- -o: 水平分割
- -O: 垂直分割 在窗口间切换:Ctrl+w, Arrow
-
单文件窗口分割:
- Ctrl+w,s : split, 水平分割
- Ctrl+w,v : vertical, 垂直分割
- ctrl+w,q :取消相邻窗口
- ctrl+w,o :取消全部窗口 :wqall 退出
-
在窗口间切换光标:
Ctrl+w, ARROW -
:qa 关闭所有窗口
1.7.24 将当前文件中部分内容另存为另外一个文件
- 末行模式下使用w命令
- :w
- :ADDR1,ADDR2w /path/to/somewhere
1.7.25 将另外一个文件的内容填充在当前文件中
- :r /path/to/somefile 在指定位置插入指定文件中的所有内容
- w /path/to/somefile 将范围内的行另存至指定文件中
1.7.26 跟shell交互
:! COMMAND
1.7.27 定制vim的工作特性
- 配置文件:永久有效
- 全局:/etc/vimrc
- 个人:~/.vimrc
扩展模式:当前vim进程有效
- (1) 行号 显示:set number, 简写为set nu 取消显示:set nonumber, 简写为set nonu
- (2) 忽略字符的大小写 启用:set ic 不忽略:set noic
- (3) 自动缩进 启用:set ai 禁用:set noai
- (4) 智能缩进 启用:smartindent 简写 set si 禁用:set nosi
- (5) 高亮搜索 启用:set hlsearch 禁用:set nohlsearch
- (6) 语法高亮 启用:syntax on 禁用:syntax off
- (7) 显示Tab和换行符 ^I 和$显示 启用:set list 禁用:set nolist
- (8) 文件格式 启用windows格式:set fileformat=dos 启用unix格式:set fileformat=unix 简写: set ff=dos|unix
- (9) 设置文本宽度 启用: set textwidth=65 (vim only) 禁用: set wrapmargin=15
- (10) 设置光标所在行的标识线 启用:set cursorline,简写cul 禁用:set no cursorline
- (11) 复制保留格式 启用: set paste 禁用: set nopaste
1.7.28 了解更多
- Set 帮助
- :help option-list
- :set or
- :set all
- vim内置帮助
- :help :help topic
- Use :q to exit help
- vimtutor