vim 文本编辑器
vim 文本编辑器
vim是vi的升级版,最常见的区别是能用多种颜色显示显示系统文件的一些特殊信息。
- vi: Visual Interface 文本编辑器,可视化接口
- vim:vi iMproved的缩写,即vi的增强版
vim编辑器分为三种主要模式:
- 命令模式(编辑模式):默认模式,移动光标,剪切/粘贴文本(界面表现:左下角显示文件名或为空)
- 插入模式(输入模式):修改文本(界面表现:左下角显示—INSERT–)插入模式下,按ESC按键返回命令模式
- 末行模式(扩展模式):保存、退出等(界面表现:左下角显示—VISUAL–)末行模式下连续按两次ESC按键返回末行模式
- Esc建:退出当前模式
- Esc建Esc建:总是返回到命令模式
4.2.2 语法
vim [options] [file …]
vim [options] -
vim [options] -t tag
vim [options] -q [errorfile]
ex
view
gvim gview evim eview
rvim rview rgvim rgview
-
用vim打开文件用法:
例如:【vim abc.txt】打开abc.txt文件
例如:【vim +# abc.txt】打开abc.txt文件,光标定位在abc.txt文件的第#行
例如:【vim + abc.txt】打开abc.txt文件,光标定位在最后一行
例如:【vim +/PATTERN abc.txt】打开abc.txt文件,定位第一次被PATTERN(模式)匹配到的行的行首 -
模式之间的切换
注意:vim打开文件后,默认进入的模式为:命令模式:
命令模式下进入插入模式(输入模式)输入:【i】或者【o】或者【a】等
命令模式下进入末行模式(扩展模式)输入:【:】
使用vim编辑多个文件
【vim FILE1 FILE2 FILE3】可以同时编辑FILE1 FILE2 FILE3这三个文件
【:next】切换至下一个文件
【:prev】切换至前一个文件
【:last】切换至最后一个文件
【:first】切换至第一个文件
4.2.3 vim的命令模式(编辑模式)常用快捷键
1) 模式转换
a) 【i】:在当前光标所在字符的前面,转为输入模式
b) 【a】:在当前光标所在字符的后面,转换为输入模式
c) 【o】:在当前光标所在行的下方,新建一行,并转换为输入模式:
d) 【I】:在当前光标所在行的行首,转换为输入模式
e) 【A】:在当前光标所在行的行尾,转换为输入模式
f) 【O】:在当前光标所在行的上方,新建一行,并转换为输入模式;
g) 【cc】删除当前行并输入新内容,相当于S。扩展【#cc】
h) 【C】删除当前光标到行尾,并切换成插入模式
- 改变命令
【c】修改后切换成插入模式 - 命令模式–>插入模式
【c^】删除光标处到行首的字符,并进入插入模式
【c$】删除光标处到行尾的字符,并进入插入模式
【c0】(c零)删除光标处到当前行首的第一非空字符,并进入插入模式
【cb】删除当前第一个单词,并进入插入模式
【ce】删除下一个单词,并进入插入模式
【cw】删除光标处到单词词尾,并进入插入模式
2) 逐字符移动
a) 【h】向左
b) 【l】向右(小写的L)
c) 【j】向上
d) 【k】向下
e) 【#COMMAND】移动#个字符
例如: 【#h】向左移动#个字符
【#l】向右移动#个字符
【#j】向上移动#个字符(相当于向上移动#行)
【#k】向下移动#个字符(相当于向下移动#行)
3) 当前页跳转
a) 【H】:当前页的页首
b) 【M】:当前页的中间行
c) 【L】当前页的页底
4) 以单词为单位移动
a) 【w】移动至下一个单词的词首
b) 【e】跳至当前或下一个单词的词尾
c) 【b】跳至当前或前一个单词的词首
d) 【#COMMAND】跳到第#个单词
例如: 【#w】跳转到第#个单词的词首
【#e】向下跳转到第#个单词的词尾
【#b】向上跳转到第#个单词的词首
5) 行内跳转
a) 【0】(零) :绝对行首,光标移动到当前行的行首
b) 【^】光标移动到当前行首的第一个非空白字符
c) 【&】光标移动到当前行的行尾
6) 行间跳转(相当于上下跳转)
a) 【G】跳转到最后一行(整个文档的最后一行)
b) 【gg或者1G】跳转到文档的第一行
c) 【#G】跳转到第#行(文档最上为第一行)
注意:想要跳转到最后一行可以输入【0G】也是最后一行
7) 句间移动
a) 【)】下一句
b) 【(】上一句
8) 段落间移动
a) 【}】下一段
b) 【{】上一段
9) 常用快捷键滚动
a) 【Ctrl + e】向下滚动一行
b) 【Ctrl + y】向上滚动一行
c) 【Ctrl + d】向下滚动半屏
d) 【Ctrl + u】向上滚动半屏
e) 【Ctrl + f】向下滚动一屏
f) 【Ctrl + b】向上滚动一屏
10) 字符编辑
- 【x】删除光标处的字符
- 【#x】删除从光标处开始向后#个字符
- 【xp】光标所在处的字符和光标后面的字符对调位置
- 【~】转换大小写
- 【J】删除当前行后的换行符
11) 替换命令(r,replace)
- 【r】替换光标所在字符
- 【R】切换成REPLACE模式
12) 删除命令(剪切命令)
注意:d命令删除的字符会默认复制到剪贴板
a) 【d】删除命令,可以结合光标跳转字符,实现范围删除
b) 【d$】删除到行尾
c) 【d^】删除到非空行首
d) 【d0】删除到行首
e) 【dd】删除光标所在行
f) 【#dd】多行删除
g) 【D】从当前光标位置一直删除到行尾,留空行,等同于【d$】
h) 【de】
i) 【dw】
j) 【db】
k) 【#COMMAND】
l) 【Shift + j】删除两行质检的空行,实际上是合并两行
插入模式(输入模式下的剪切)
正常模式(默认模式)下按v(逐字)或V(逐行)进入可视模式,然后用【j】【k】【l】【h】命令移动即可选择某些行或字符,再按d即可剪切
13) 复制命令(y,yank)
a) 【y】复制,可以结合光标跳转字符,实现范围复制(行为与d有类似之处)
b) 【y$】复制到行尾
c) 【y^】复制到非空行首
d) 【y0】复制到行首
e) 【yy】复制当前行
f) 【#yy】复制多行
g) 【Y】整行复制
h) 【ye】
i) 【yw】
j) 【yb】
k) 【#COMMAND】
14) 粘贴命令(p,paste)
a) 【p】缓冲区存的如果为整行,则粘贴当前光标所在行的下方,否则粘贴至当前光标所在处的后面
b) 【P】缓冲区存的如果为整行,则粘贴当前光标所在行的上方,否则粘贴至当前光标所在处的前面
15) 撤销更改
a) 【u】撤销最近的更改
b) 【#u】撤销之前多次更改
c) 【U】撤销光标落在这行后所有此行的更改
d) 【按Ctrl + r】重做最后的“撤销”更改(相当于取消撤销)
e) 【.】重做前一个操作
f) 【#】重复前一个操作#次
4.2.4 vim的末行模式(扩展模式)
命令模式下进入末行模式(扩展模式)输入:【:】
4.2.4.1 退出命令
【:q】退出
【:x】保存退出
【:wq】保存并退出
【:q!】强制退出并或略所有更改
【:e!】放弃所有修改,并打开源文件
注意:在默认模式的退出方法
【ZZ】保存并退出
【ZQ】不保存退出
附加:
【:!COMMAND】执行COMMAND命令,和shell交互
【r!COMMAND】读入命令的输出
【r filename】读取filename文件内容到当前文件中
【w filename】将当前文件内容下入filename文件中
4.2.4.2 地址定界(可以用于查找和替换等)
语法:【:start_pos,end_pos】
例如:
【:#】具体第#行,例如2表示第2行
【#,#】从左侧#表示起始行,到右侧#表示结尾行
【#,+#】从左侧#表示的起始行,加上右侧#表示的行数
例如【:2,+3】表示2到5行
【.】表示当前行
【$】最后一行
【%】全文,相当于【1,$】
例如:【:.,$-1
】表示当前行到倒数第二行
- 扩展命令模式:地址定界
注意:地址界定默认是从光标位置开始(即在默认模式进入命令模式时的光标位置)向下搜索匹配(如果查到到文件结尾,依旧没找到,会从头开始查找)
【:/pat1/,/pat2/】从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束
【:#,/pat/】从第#行开始,一直到第一次被pat匹配到的行结束
【:/pat/,$】从第一次被pat匹配到的行开始,一直到最后一行 - 地址界定后面可跟随的编辑命令
【d】例如:【:/pat1/,/pat2/d】
表示,从光标位置开始向下匹配,第一次匹配到“pat1”的位置开始到第一次匹配到pat2结束是的末行,删除末行。(注意:如果匹配结果是多行,只会删除最后一行)
【y】例如:【:/pat1/,/pat2/y】
表示,从光标位置开始向下匹配,第一次匹配到“pat1”的位置到第一次匹配到“pat2”的位置直接,复制内容到剪贴板。
【w file】将范围内的行另存至指定文件中。
例如:【:/pat1/,/pat2/w ./abc.txt】
表示从光标位置开始向下匹配,第一次匹配到pat1的位置到第一次匹配到pat2的位置内容写到当前目录下的abc.txt文件中。
【r file】在指定位置插入指定文件中的所有内容。
例如:【:/pat1/,/pat2/r ./abc.txt】
表示从光标位置开始向下匹配,第一次匹配到“pat1”的位置到第一次匹配到“pat2”的位置的行末插入abc.txt文件内容
4.2.4.3 查找并替换
-
【:/PATTERN】从当前光标所在处向文件尾部查找匹配“PATTERN”相同的内容。
-
【:?PATTERN】从当前光标所在处向文件首部查找匹配“PATTERN”相同内容
-
【n】与命令同方向
-
【N】与命令反方向
扩展命令模型:查找并替换 -
【s】在扩展模式下完成查找替换操作
格式:【s/要查找的内容/替换为的内容/修饰符】- 要查找的内容:可以使用模式
- 替换为的内容:不能使用模式,单可以使用\1,\2等后向引用符号;还可以使用“&”引用前面查找时查找的整个内容
- 修饰符:
- 【i】忽略大小写
- 【g】管局替换;默认情况下,每行只替换第一次出现
- 【gc】全局替换,每次替换前询问
注意:查找替换中的分隔符【/】可用其他符号替代,例如【@】【#】等
例子:【s/a/Good/g】或者【s@a@Good@g】查找当前光标所在行的“a”字符,全部替换成“Good”字符
替换后:
例如:【s#/boot#/#i】将光标所在行的【/boot】替换成【/】,默认只会替换一个,匹配时会忽略大小写
例如:【4s@^.*\(你好\).*@\1@ig
】
在4行查找匹配“^.*\(你好\).*
”这个正则表达式 能匹配到的内容,替换成“你好”
替换前:
替换后:
如果需要对全文替换可以使用如下命令
【:1,$s/^.*\(你好\).*/\1/ig
】其中【1,$】为地址界定。
4.2.4.4 地址定界与查找替换扩展模式结合使用
【:4,8s/^.*\(你好\).*/\1/ig
】这种为只替换第4行到第8行之间的内容,其中【4,8】表示4行到8行之间的内容
【:/par1/,/par2/s/^.*\(你好\).*/\1/ig
】这种为从第一次匹配到par1到第一次匹配par2之间的内容中间,
按照【s/^.*\(你好\).*/\1/ig
】命令进行匹配替换
4.2.4.5 帮助命令
- 【:help or F1】显示整个帮助
- 【:help xxx】显示xxx的帮助,比如:【:help I】【:help CTRL-[】即Ctrl+[的帮助
- 【:help ‘number’】Vim选项的帮助用单引号刮起
- 【:help 】特殊建的帮助用<>扩起
- 【:help –t】Vim启动参数的帮助用-
- 【:help –i_】插入模式下Esc的帮助,某个模式下的帮助用(模式_主题)的模式
帮助文件中位于||之间的内容是超链接,可以用Ctrl+]进入链接,Ctrl+o(Ctrl + t)返回
4.2.4.6 其他非编辑命令
-
【:.】重复前一次命令
-
【:set ruler?】查看是否设置了ruler,在.vimrc中,使用set命令设置的选项都可以通过这个命令查看
-
【:scriptnames】查看vim脚本文件的位置,比如.vimrc文件,语法文件及plugin等
-
显示非打印字符
【:set list】显示非打印字符,比如tab,空格,行尾等。如果tab无法显示,请确定用set lcs=tab:>-命令设置了.vimrc文件,并确保你的文件中的确有tab,如果开启了expendtab,那么tab将被扩展为空格。
【:set nolist】关闭非打印字符 -
行号:
【:set number】显示行号或者【:set nu】
【:set nu】关闭行号显示 -
大小写
【:set ignorecase】忽略区分大小写或者【:set ic】
【:set noignorecase】不忽略大小写或者【:set noic】 -
设置自动缩进
【:set autoindent】设置自动缩进或者【:set ai】
【:set noai】取消制动缩进 -
查找文本高亮显示或取消
【:set hlsearch】设置高亮显示
【:set nohlsearch】取消高亮显示 -
语法高亮显示
【:syntax on】开启语法高亮显示
【:synatx off】关闭语法高亮显示 -
辅助保留格式
【:set paste】启用复制保留格式
【:set noPaste】关闭复制保留格式 -
文件格式
【:set fileforma=doc】启用windows格式。或者【:set ff=doc】
【:set fileforma=unix】启用unix格式。或者【:set ff=nuix】 -
设置文本宽度
【:set textwidth=65】启用
【:set wrapmargin=15】禁用 -
设置光标所在行的标识线
【:set cursorline】或者【:set cul】启用标识线
【:set no cursorline】或者【:set not cul】禁用标识线 -
【:set or】查看set帮助或者【:set all】
4.2.5 vim可视化模式
默认模式下输入:
- 【v】按照字符选取,或者【ctrl + v】
- 【V】按矩形快选取
可视化建可用于与移动建结合使用
【w】【)】【}】箭头灯
突出显示的文字可被删除,复制,变更,过滤,搜索,替换等
4.2.6 vim多窗口
语法:【vim –o|-O FILE1 FILE2 …】
【-o】水平分割显示
【-O】垂直分割显示
命令模式下输入【:qa】关闭所有窗口
窗口间切换:Ctrl+w,Arrow
- 单文件窗口分割:
- 【Ctrl+w,s】split,水平分割
- 【Ctrl+w,v】vertical,垂直分割
- 【Ctrl+w,q】取消相邻窗口
- 【Ctrl+w,o】取消全部窗口
- 【:wqall】退出
4.2.7 vim配置文件
【/etc/vimrc】vim的全局配置文件
【~/.vimrc】用户的vim配置文件
4.2.8 相关编辑器
文本:ASCII,Unicode
- 文本编辑器种类:
行编辑器:sed
全屏编辑器:nano,vi
vim-Vi Improved
其他编辑器:
gedit 一个简单的图形编辑器
gvim 一个Vim编辑器的图形版本
4.2.9 帮助(vim --help)
[root@gdy103 ~]# vim --help
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Apr 5 2012 10:17:30)
用法: vim [参数] [文件 ..] 编辑指定的文件
或: vim [参数] - 从标准输入(stdin)读取文本
或: vim [参数] -t tag 编辑 tag 定义处的文件
或: vim [参数] -q [errorfile] 编辑第一个出错处的文件
参数:
-- 在这以后只有文件名
-v Vi 模式 (同 "vi")
-e Ex 模式 (同 "ex")
-s 安静(批处理)模式 (只能与 "ex" 一起使用)
-d Diff 模式 (同 "vimdiff")
-y 容易模式 (同 "evim",无模式)
-R 只读模式 (同 "view")
-Z 限制模式 (同 "rvim")
-m 不可修改(写入文件)
-M 文本不可修改
-b 二进制模式
-l Lisp 模式
-C 兼容传统的 Vi: 'compatible'
-N 不完全兼容传统的 Vi: 'nocompatible'
-V[N][fname] Be verbose [level N] [log messages to fname]
-D 调试模式
-n 不使用交换文件,只使用内存
-r 列出交换文件并退出
-r (跟文件名) 恢复崩溃的会话
-L 同 -r
-A 以 Arabic 模式启动
-H 以 Hebrew 模式启动
-F 以 Farsi 模式启动
-T <terminal> 设定终端类型为 <terminal>
-u <vimrc> 使用 <vimrc> 替代任何 .vimrc
--noplugin 不加载 plugin 脚本
-P[N] 打开 N 个标签页 (默认值: 每个文件一个)
-o[N] 打开 N 个窗口 (默认值: 每个文件一个)
-O[N] 同 -o 但垂直分割
+ 启动后跳到文件末尾
+<lnum> 启动后跳到第 <lnum> 行
--cmd <command> 加载任何 vimrc 文件前执行 <command>
-c <command> 加载第一个文件后执行 <command>
-S <session> 加载第一个文件后执行文件 <session>
-s <scriptin> 从文件 <scriptin> 读入正常模式的命令
-w <scriptout> 将所有输入的命令追加到文件 <scriptout>
-W <scriptout> 将所有输入的命令写入到文件 <scriptout>
-x 编辑加密的文件
--startuptime <file> Write startup timing messages to <file>
-i <viminfo> 使用 <viminfo> 取代 .viminfo
-h 或 --help 打印帮助(本信息)并退出
--version 打印版本信息并退出
[root@gdy103 ~]#