什么是Vim?
Vim是从vi发展而来的文本编辑器,代码补全、编译以及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,下图为Vim的键盘图
Vim的使用
基本上vi/vim共分为三种模式:命令模式(Command Mode)、输入模式(Insert Mode)和命令行模式(Command-Line Mode)
三种工作模式的切换方法如下:
命令模式
当用户通过命令vim [FILENAME] <enter>
进入vim或按下ESC
时,便进入了命令模式,此状态下敲击键盘动作会被识别为命令,而非输入字符,以下是命令模式常用的几个命令
-
h
:光标向左移动一个字符 -
j
:光标向下移动一个字符 -
k
:光标向上移动一个字符 -
l
:光标向右移动一个字符 -
[num]+[command]
:光标向目标方向移动num
个字符30j
是向下移动30行2w
移动光标至此后第二个单词的首字母3e
移动光标至此后第三个单词的结尾0
移动光标至行首
-
x
:删除当前光标所在处的字符 -
i
:切换到输入模式,在光标之前开始输入文本 -
a
:进入插入模式,在光标下一个位置开始输入文本 -
a
:切换到输入模式,在当前光标下一个位置开始输入文本 -
d [num] motion
:完成删除操作,其中[motion]
包括以下几种模式-
dw
:删除当前单词光标所在位置到下一个单词的首字母前 -
de
:删除当前单词光标所在位置到空格前 -
d$
:删除当前光标所在处到该行的最后一个字符 -
dd
:剪切当前光标所在行(无所谓光标位置)
-
-
u
:撤销上一命令;U
:将光标所在行恢复初始状态;CTRL-R
:撤销上一次撤销 -
p
:粘贴剪切板内容到光标下方;P
:粘贴剪切板内容到光标上方 -
r[x]
:用x
取代光标所在字符;R[x]
:一直处于取代模式,直到按下ESC
为止 -
c [num] motion
:完成取代操作,其中[motion]
包括以下几种模式cw
:清除光标所在位置到下一个单词的首字母前并进入输入模式ce
:清除光标所在位置到单词结尾并进入输入模式c$
:清除光标所在处到该行最后一个字符并进入输入模式cc
:清除光标所在行并进入输入模式(无所谓光标在行内位置)
-
CTRL+g
:会在底线输出当前光标所在行
G
:移动到当前文本的最后一行,gg
:移动到当前文本的第一行;[num]G
:移动到当前文本的第[num]
行 -
搜索替换:
/string
:向光标之下寻找名称为string
的字符串?string
:向光标之上寻找名称为string
的字符串;n
向下搜索,N
向上搜索%
:寻找与光标所在位置匹配的括号:n1,n2s/word1/word2
:在第n1与n2行之间寻找字符串word1,并将第一个取代为word2:n1,n2s/word1/word2/g
:在第n1与n2行之间寻找字符串word1,并将其全部取代为word2:n1,n2s/word1/word2/gc
:在第n1与n2行之间寻找字符串word1,并将其取代为word2,且在取代前显示提示字符给用户确认是否需要取代:%s/word1/word2/g
或:1,$s/word1/word2/g
:从第一行到最后一行进行替换:set ic
:忽略大小写匹配;:set noic
:大小写匹配:set hls is
:匹配结果高亮;:set nohlsearch
:取消匹配结果高亮
-
:![external command]
:执行外部命令,按ENTER
返回 -
v
:保存当前文本中的部分内容。将光标移动至想要保存的内容的开始,按下v
后,移动光标至保存内容的结尾,该部分文本会被高亮,按:
,底线将出现:'<,'>
,这时输入w FILENAME
,vim将把该部分内容保存至当下目录下的文件FILENAME中 -
:r FILENAME
:读取文件FILENAME中的内容并粘贴在当前光标之下;:r ![external command]
:执行外部命令,并将返回的结果粘贴在当前光标之下 -
o
:在当前行的下方插入一个新行,并进入插入模式;O
:在当前行的上方插入一个新行,并进入插入模式 -
v
进入选择模式,选择好目标内容后,按y
进行复制,按p
进行粘贴 -
:help
:进入在线帮助系统;CTRL-W
:页面之间的切换;:q
:离开帮助页面;:help [command]
:具体命令
输入模式
在命令模式下按下i
就进入了输入模式,使用ESC
可以返回命令模式,此模式下即正常的键盘输入模式。
底线命令模式
在命令模式下按下:
(英文冒号)就可以进入底线命令模式,底线命令模式的基本命令有:
:w
:保存文件:q
:退出Vim编辑器:wq
:保存文件并退出Vim编辑器:q!
:不保存修改强制退出Vim编辑器
按ESC
键可以随时退出底线命令模式
Vim实用技巧进阶(动态更新)
在通过sudo apt-get install vim
安装完成vim后,可以通过命令vimtutor
命令打开vim的指导书,边看边练习
宏指令
用来对一组相似的行,段落甚至文件做重复的变更
宏的执行有两种方式
- 串行的在每个目标上执行
- 并行的在多个目标上执行
宏录制
录制语法 q{register}[commands]q
q
开始录制{register}
表明寄存器的名称[commands]
一组操作命令(一系列的键盘按键)q
停止录制,最后把[commands]以文本形式存到前面的寄存器里面
:reg a
查看寄存器a
里的内容:registers
列出所有的寄存器"<register>[commands]
将文本复制到寄存器中"<register>p
从寄存器中粘贴文本
宏执行
执行语法 @{register}
, @@
可以重复最近一次的宏执行