文本编辑工具之神 vim 1.1 vi和vim简介 在Linux中我们经常需要修改文本文件,或其他纯文字的文件(比如配置开发发给你的java项目的服务器地址等等)
这时我们需要一个专业,功能强大的工具了
Linux中文本编辑器种类:
全屏编辑器:nano(字符工具),gedit(图形化工具,需要安装桌面),vi,vim
行编辑器:sed
vi:全名为Visual editor,文本编辑器,是Linux系统必备的工具之一。功能强大,但学习曲线较为陡峭,学习难度大
vim:全名为Visual editor iMproved,和vi使用方法一致。是vi的plus版。功能更为强大,不在系统安装的默认包中
1.2 初步使用 vim 1.2.1 vim 命令格式 提示:PATTERN
是指正则表达式
1 2 3 4 5 6 7 8 9 10 11 vim [选项] <文件名> +N +/PATTERN -b file -d file1 file2 -m file -e file -y file ctrl+o:wq|q!
注:
如果该文件存在,文件被打开后会显示内容
如果该文件不存在,当第一次保存时会创建它
1.2.2 三种主要模式和转换 vim 是一个模式编辑器,每个按键在不同的模式下都会有不同的效果
三种模式:
命令模式(普通模式):默认模式,可以移动光标,剪切/粘贴文本
编辑模式:用于修改文本
扩展命令模式:保存,退出等扩展命令操作
三种模式之间的切换:
vim 是一个模式编辑器,不同的模式下,相同的按键,是不同的意思
插入模式和扩展命令模式不能直接切换,需要通过命令模式中转
打开vim默认就是命令模式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 i I a A o O 输入冒号即是扩展命令: 按esc键即可退出编辑模式
1.2.3 vim中插入颜色字符 1 2 3 4 5 6 切换至编辑模式 使用ctrl+v+[键,显示^[ 然后输入颜色信息,包括快捷键的输入全称例如:^[[32mhello^[[0m (hello可以换成其它内容) 切换至扩展命令模式,保存退出 cat查看颜色字符
1.3 扩展命令模式 1.3.1 扩展命令模式的基本命令 :是切换到扩展模式后带的,不会在其中写出来
1 2 3 4 5 6 7 8 9 10 11 12 w wq x X q q! r file w file !command r!command
1.3.2 地址定界(指定一个范围) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 :start_pos,end_pos CMD N M,N M,+N M,-N M;+N M;-N . $ .,$-1 % /pattern /pat1/,/pat2/ N,/pat/ /pat,$
地址定界后可以跟上对应的操作
1 2 3 4 5 6 7 8 9 10 11 12 p d y w file r file t行号 copy行号 m行号 move行号
1.3.3 查找并替换 1 2 3 4 5 6 7 8 9 10 11 12 13 14 :s/查找的内容/替换后的内容/修饰符 :%s 代表全文查找替换(默认一行只替换第一次出现的内容) 查找的内容:可以使用基本正则表达式 替换的内容:不能使用模式,但可以使用\1,\2,……等后向引用符号。用于与捕获组的内容进行复用。 比如\2/\1的意义是将捕获的两个内容反过来,2传递给前面的替换。/用于间隔 &:代表前面查找到的所有内容 i g gc
1.3.4 定制vim的工作特性 扩展命令模式的配置只对当前vim进程有效,当关闭后就清空了,需要再手动设置。
但我们可将配置存放在文件中持久保存
写配置文件必须保证能识别,不能使用命令模式的简写。必须写全称
1.3.4.1 行号 1 2 :set number | :set nu :set nonumber | :ser nonu
1.3.4.2 忽略字符的大小写 1 2 :set ignorecase | :set ic :set noignorecase | :set noic
1.3.4.3 自动缩进 1 2 :set autoindent | set ai :set noautoindent | set noai
1.3.4.4 复制保留格式 1 2 :set paste :set nopaste
1.3.4.5 显示Tab ^I和换行符$ 在vim中 Tab键 使用 ^I 来显示(这是大写i)
行尾(换行符) 使用 $ 来显示
空格 使用 . 来显示(需要另外开启显示空格)
1.3.4.6 高亮搜索 1 2 :set hlsearch | :set hl :set nohlsearch | :set nohl
1.3.4.7 语法高亮
1.3.4.8 文件格式 1 2 :set fileformat=dos | :set ff=doc :set fileformat=unix | :set ff=unix
1.3.4.9 Tab 用空格代替 1 2 :set expandtab | :set et :set noexpandtab | :set noet
1.3.4.10 Tab用指定空格的个数代替 1 :set tabstop=N | :set ts=N
1.3.4.11 设置缩进宽度 1 2 3 4 >> << :set shiftwidth=4
1.3.4.12 设置光标所在行的标识线 1 2 :set cursorline | :set cul :set nocursorline | :set nocul
1.3.4.13 加密 1 2 3 4 :set key=password :set key=
1.3.4.14 帮助(vim的定制) set 帮助
1 2 3 4 5 6 7 8 :help option-list :set :set all
1.4命令模式 命令模式,又称普通模式。功能强大,但在此模式下输入的命令不会在屏幕上显示,所以得记住自己输入了什么,以及非常多的快捷键(区分大小写!!! )
1.4.1 退出vim
1.4.2 光标跳转 字符间跳转:
1 2 3 4 5 6 h/← l/→ j/↓ k/↑ Nh | Nl | Nj | Nk
单词间跳转:
当前页跳转:
行首行尾跳转:
行间移动:
句间移动:
段落间移动:
命令模式翻屏:
1 2 3 4 5 6 ctrl+f ctrl+b ctrl+d ctrl+u
1.4.3 字符编辑
1.4.4 替换命令(replace)
1.4.5 删除命令(delete) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 d d$ | D d^ d0 dw de db dG dgg dd Ndd
1.4.6 复制命令(yank) 1 2 3 4 5 6 7 8 9 10 11 12 y y$ y0 y^ yy | Y Nyy | NY yw ye yb
1.4.7 粘贴命令(paste)
1.4.8 改变命令(change) 1 2 3 4 5 6 7 8 9 10 11 12 c c$ | C c^ c0 cc Ncc cw ce cb
1.4.9 查找 1 2 3 4 5 6 7 /PATTERN ?PATTERN n N
1.4.10 撤销更改 1 2 3 4 5 6 7 8 u Nu U ctrl+r . N.
1.4.11 高级用法 start position + command + end position
从哪开始 要做什么 到哪里结束
1 2 3 4 5 6 7 8 9 10 11 start command end 0y$ di" #光标在" "之间的话,则删除" "之间的内容,i" 代表"" 内部的内容 yi( vi[ dtx dfx ytx yfx 10iabc ESC
1.5 可视化模式 在末行有”– VISUAL –”指示时,表示现在处于可视化模式中
可视化模式中允许选择的文本块:
v 面向字符, – VISUAL –
V 面向整行,– VISUAL LINE –
ctrl-v 面向块,– VISUAL BLOCK –
可视化键可用于与移动键结合使用
例如:w ) } 箭头 G 等
被高亮显示的文字可被删除,复制,变更,过滤,搜索,替换等
1 2 3 4 5 6 7 8 1、光标移动到指定的第一行行首 2、按下 ctrl+v 进入可视化模式 3、向下移动光标,选中希望操作的每一行第一个字符 4、输入大写字母 I 切换至插入模式 5、输入 6、按下 ESC 键
1.6 多窗口模式 1.6.1 多文件分割 1 2 3 4 5 6 vim file1 file2... :next(:n) :prev(:N)
1 2 3 4 5 6 7 8 9 vim -o | -O file1 file2... -o -O :wqall ctrl+w,方向键
1.6.2 单文件窗口分割 1 2 3 4 5 6 ctrl + w,s ctrl + w,v ctrl + w,q ctrl + w,o :wqall ctrl+w,方向键
1.7 帮助(vim的指令) 1 2 3 4 :help :help topic :help index :q
vim 帮助程序
1.8 vim 总结图