VIM的初步认识
不是很了解VIM的可以先去看看这篇文章Linux字符界面与VI编辑器
你会发现VIM和VI只差了一个M字,是否它们两者有什么关系?对的你们有猜错,它对 Vi 作了 许多 增强: 多层撤销, 多窗口, 多缓冲区(buffer), 高亮度语法显示, 命令行编辑, 文件名匹配, 在线帮助, 可视选定, 等等. 用 ":help vi_diff.txt" 看 Vim 和 Vi 的差别 的 摘要(以上这句话摘自CentOS7 VIM帮助文档,查看这个文档可以在终端界面下输入$ man vim进行查看,要是不知道终端是什么,请查看上面那篇文章)。
VIM的四种模式与VI的三种模式
实际上VIM的模式与VI的模式是一样的,不过VIM比VI多了一种可视模式。不过我个人觉得VI的三种模式比VIM的四种模式在命名更形象一些,所以接下来的文章使用了VI的模式名称。
-
VI的三种模式
- 指令模式:输入指令以及移动光标时使用
- 文本输入模式:对文本内容进行编辑
- 末行模式 :文字编辑辅助功能,比如字符串修改,替代,保存文件等。
- VIM的四种模式
- 正常模式:等价于VI的指令模式
- 文本输入模式:等价于VI的文本输入模式
- 命令模式:等价于VI的末行模式
- 可视模式:这是VIM比VI多出来的一种模式,正常模式下输入v进入可视模式,然后移动光标,光标选中的区域会高亮,最后用操作命令对选中的区域进行操作。
VIM常用指令(新手推荐在字符界面下使用$ vimtutor指令,该指令是VIM文本编辑器的教程,帮助快速上手VIM。)
注意:本文编写时没有注意中英文的切换,可能存在中文字母、字符,不建议Ctrl C,Ctrl V。)
- VIM进入和退出
- vim(字符界面):打开VIM文本编辑器
- vim 文件名(字符界面):若存在该文件,则打开该文件,若不存在,则创建该文件(注意,创建的文件是先保存在缓存中,编辑完成后输入保存指令,才会保存在磁盘中)
- :q!:不保存文本,强制退出VIM程序
- :wq:保存修改并退出
- :wq a.txt:保存文件,文件名为a.txt
- :w 文件名:文件另存为
- 移动指令
- h:光标左移一位
- l:光标右移一位
- j:光标向下移动一行
- k:光标向上移动一行
- w:从当前光标当前位置直到下一个单词起始处,不包括它的第一个字符
- e:从当前光标当前位置直到单词末尾,包括最后一个字符
- 0:光标返回行首
- Page Up:向上翻页
- Page Down:向下翻页
- ctrl f : 向下翻页
- ctrl b : 向上翻页
文本编辑指令
-
文本插入指令
- i:在光标前插入文本,指令模式下输入i会进入文本输入模式
- I:与i一样
- A:在光标所在行的末尾插入内容,指令模式下输入A会进入文本输入模式
- a:在光标后插入文本,指令模式下输入a会进入文本输入模式
- o:在光标所在行的下方插入一行,指令模式下输入o会进入文本输入模式
- O:在光标所在行的上方插入一行,指令模式下输入O会进入文本输入模式
-
文本删除指令
- x:删除光标位置的字符
- d motion:删除操作符d,需要配合动作(motion)一起使用,下面试动作,使用方法例如:dw、de
- w:从当前光标当前位置直到下一个单词起始处,不包括它的第一个字符
- e:从当前光标当前位置直到单词末尾,包括最后一个字符
- $:从当前光标当前位置直到当前行末
- dd:删除整行
-
撤销类指令
- u:撤销上一次的操作
- U:撤销对整行的操作
- Ctrl+R :撤销掉撤销命令
-
置换类指令
- p:将最后一次删除的内容置入光标之后
- r+字符:将光标当前位置的字符,用新输入的字符去替换
- R :指令模式下输入R,进入替换模式,可以连续替换多个字符,直到ESC退出该模式
-
更改类指令c(与删除类操作符d一样,语法c motion(动作))
- cw:从光标开始,改变文本直到一个单词的末尾(我练习的时候体会不出cw和ce的区别,望知道的朋友告知一下)
- ce:从光标开始,改变文本直到一个单词的末尾
- c$:从光标开始,改变文本直到该行末尾
-
替换指令(末行模式)
- :s/old/new:替换所在行第一个匹配串,第一个old被new替换
- :s/old/new/g:替换全行的匹配串,全行的old被new替换
- :#,#s/old/new:其中 #,# 代表的是替换操作的若干行中首尾两行的行号。
- :%s/old/new/g:替换整个文件中所有匹配串
- :%s/old/new/gc:找到全文所有的匹配串,并逐一询问是否替换
- 使用计数指定动作(所有动作指令前都可指定数字,表示该动作执行的次数)
- 简单的例如h、l、j、k操作前加数字。2h-光标左移两位。2j-光标下移两行
- d number motion:如d2e,删除从光标开始到单词末尾,该操作执行两次
- c number motion:如c2e,更改从光标开始到单词末尾,该操作执行两次
- 定位及文件状态
- Ctrl+g:显示文件名以及光标的位置
- G:光标跳转到文件最后一行
- gg:光标跳转到文件第一行
- 行数 + G:光标跳转到输入的行数
- 搜索类命令
- /(命令模式下) +需要搜索的字符:如/error,正向搜索error字符
- ?+需要搜索的字符:逆向搜索字符
- n:下一个相同的字符
- N:上一个相同的字符
- :set ic(Ingore Case):设置搜索时忽略大小写选项
- :set noic:设置搜索时禁用忽略大小写选项
- :set hls(hlsearch):设置所有匹配项高亮选项
- :set nohls:关闭所有匹配项高亮
- :set is(incsearch):输入/指令后,输入字符直接匹配内容(边输字符边查找)
- :set nois:输入/指令,并且输入字符按下回车键后才匹配字符(输入完毕后再查找)
- Ctrl+o:光标回退到之前的位置
- Ctrl+i:光标跳转到较新的位置
- %:用来查找相配对的括号,需要将光标停留在括号上,例如光标在(上,输入%,光标会自动跳到与之相对应的)上
- 在VIM内调用外部命令的方法(末行模式下)
- :!+外部命令:例如:! ls,列举当前目录
- 提取和合并文件
- :r 文件名:例如r a.txt,在当前文本光标后插入a.txt文本的内容
- :r ! 外部命令:例如 :r ! ls,在光标后插入外部命令返回的结果
- 可视模式的命令(指令模式下输入v进入可视模式)
- 截取部分内容保存到另一个文件中
1. 按 v 键进入可视模式,移动光标。您会注意到光标之间的文本被高亮了。
2. 然后按 : 字符。您将看到屏幕底部会出现 :'<,'> 。
3. 现在请输入 w TEST,其中 TEST 是一个未被使用的文件名。确认您看到了:'<,'>w TEST 之后按 <回车> 键。
4. 这时 Vim 会把选中的行写入到以 TEST 命名的文件中去。使用 :!dir 或 :!ls确认文件被正确保存。
- 复制粘贴文本
1. 指令模式下输入v进入可视模式
- 移动光标,使得需要复制的内容高亮
- 输入y,复制选中内容
- 移动光标到需要粘贴的位置,输入p粘贴
-
启用VIM特性
Vim 的功能特性要比 Vi 多得多,但其中大部分都没有缺省启用。为了使用更多的
特性,您得创建一个 vimrc 文件。- 开始编辑 vimrc 文件,具体命令取决于您所使用的操作系统:
:edit ~/.vimrc 这是 Unix 系统所使用的命令
:edit $VIM/_vimrc 这是 MS-Windows 系统所使用的命令 - 接着读取 vimrc 示例文件的内容:
:r $VIMRUNTIME/vimrc_example.vim - 保存文件,命令为:
:write
下次您启动 Vim 时,编辑器就会有了语法高亮的功能。
您可以把您喜欢的各种设置添加到这个 vimrc 文件中。
要了解更多信息请输入 :help vimrc-intro - 开始编辑 vimrc 文件,具体命令取决于您所使用的操作系统:
-
VIM补全功能
- 指令模式下输入:e(不要按回车)
- Ctrl+d,显示所有以e开头的选项
- Tab切换选项
- VIM帮助
- :help:帮助命令
- F1:帮助