Vim是Linux上著名的文本编辑器,它是早年的Vi编辑器的加强版。gVim是Vim的图形前端,它是跨平台的编辑器,基本上主流的操作系统上面都有它的版本。gVim是一个国际版本,会根据安装的平台自动选择相应语言包,支持中文及其各种编码,连界面也是中文的,在Linux Mint 12软件管理器中, gVim被叫做vim-gnome。
Vim一般会有全局配置和用户配置。全局配置文件目录可以在打开vim之后在命令行模式输入:echo $VIM查看,用户配置文件目录可以在打开vim之后在命令行模式输入:echo $HOME查看。
Vim键盘图:
一、vi参数说明:
文件打开或关闭方法 | |
---|---|
vi +n [file] | n为数字,“+”也需输入,使用vi打开文件并将光标移到第n行 |
vi + [file] | n为数字,“+”也需输入,使用vi打开文件并将光标移到最后一行 |
vi +/pattern [file] | pattern为正则表达式,“+”也需输入,使用vi打开文件并将光标移到匹配pattern的第一处地方 |
vi -R [file] | 使用vi只读打开文件 |
vi -d [file1] [file2] ...[filen] | 使用vi对比模式(diff)打开n个文件 |
vi -o [file1] [file2] ...[filen] | 使用vi水平窗口打开n个文件 |
vi -O [file1] [file2] ...[filen] | 使用vi垂直窗口打开n个文件 |
一、命令模式:
用户刚刚启动 vi/vim,便进入了命令模式。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。常用命令:
1、切换到输入模式的方法
切换到输入模式的方法 | |
---|---|
i(insert) | 在当前字符的左侧插入 |
I | 在当前行首字符(非空白字符)的左边插入 |
a(append) | 在当前字符的右侧插入 |
A | 在当前行尾字符的右边插入 |
o | 在下一行插入 |
O | 在上一行插入 |
s(substitute) | 删除当前字符然后进入插入模式 |
S | 删除当前行然后进入插入模式 |
2、: 切换到命令行模式;
3、其他常用命令
移动光标的方法 | |
---|---|
h 或 向左箭头键(←) | 光标向左移动一个字符 |
j 或 向下箭头键(↓) | 光标向下移动一个字符 |
k 或 向上箭头键(↑) | 光标向上移动一个字符 |
l 或 向右箭头键(→) | 光标向右移动一个字符 |
如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。 如果想要进行多次移动的话,例如向下移动 30 行,可以使用 "30j" 或 "30↓" 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可! | |
[Ctrl] + [f] | 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用) |
[Ctrl] + [b] | 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用) |
[Ctrl] + [d] | 屏幕『向下』移动半页 |
[Ctrl] + [u] | 屏幕『向上』移动半页 |
[Ctrl] + [e] | 屏幕『向下』移动一行 |
[Ctrl] + [y] | 屏幕『向上』移动一行 |
+ | 光标移动到非空格符的下一行 |
- | 光标移动到非空格符的上一行 |
n<space> | 那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20<space> 则光标会向后面移动 20 个字符距离。 |
0 或功能键[Home] | 这是数字『 0 』:移动到这一行的最前面字符处 (常用) |
$ 或功能键[End] | 移动到这一行的最后面字符处(常用) |
H | 光标移动到这个屏幕的最上方那一行的第一个字符 |
M | 光标移动到这个屏幕的中央那一行的第一个字符 |
L | 光标移动到这个屏幕的最下方那一行的第一个字符 |
G | 移动到这个档案的最后一行(常用) |
nG | n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu) |
gg | 移动到这个档案的第一行,相当于 1G 啊! (常用) |
n<Enter> | n 为数字。光标向下移动 n 行(常用) |
zz | 如果光标所在的行之前的行足够撑满半屏幕,那么让光标所在的行居于屏幕中心 |
zt | 让光标所在的行居于屏幕第一行(top) |
zb | 如果光标所在的行之前的行足够撑满一屏幕,让光标所在的行居于屏幕最后一行(bottom) |
选择、剪切、复制与粘贴 | |
---|---|
v | 进入visual字符可视化模式,操作的最小单位是一个字符,再按一次退出 |
V | 进入visual行可视化模式,操作的最小单位是一行,再按一次退出 |
[Ctrl] + [v]或 [Ctrl] + [V] |
进入visual块可视化模式,相当于列选择模式,再按一次退出。在Windows中,[Ctrl] + [v]可能已经被映射为粘贴操作,可以使用ctrl-Q 进入块可视化模式。 |
o | 在visual模式下,在已选中的区域内对角线的字符交替选中 |
O | 在visual模式下,在已选中的区域内同一行的首末字符交替选中 |
~ | 在visual模式下,将已选中的文本大写转为小写,小写转为大写 |
x | 剪切光标所在处的字符 |
nx | n为数字,剪切光标所在处之后的n个字符 |
X | 剪切光标所在处之前的一个字符,相当于backspace退格键 |
nX | n为数字,剪切光标所在处之前的n个字符 |
d | 在visual模式下,将选中的内容进行剪切 |
dd | 剪切光标所在的那一整行(常用) |
ndd | n为数字,剪切光标所在行(包括当前行)下的n行 |
dnG | n为数字,剪切从第n行(从1开始计数)到光标所在行之间的所有行,包括第n行和光标所在行 |
dG | 剪切从光标所在行到最后一行的所有行,包括光标所在行和最后一行 |
d$ | 剪切光标所在字符(包括当前字符)之后的光标所在行的字符 |
d0 | 剪切光标所在字符(不包括当前字符)之前的光标所在行的字符 |
y | 在visual模式下,将选中的内容进行复制 |
yy | 复制游标所在的那一行(常用) |
nyy | n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用) |
ynG | n为数字,复制从第n行(从1开始计数)到光标所在行之间的所有行,包括第n行和光标所在行 |
yG | 复制从光标所在行到最后一行的所有行,包括光标所在行和最后一行 |
y0 | 复制光标所在字符(不包括当前字符)之前的光标所在行的字符 |
y$ | 复制光标所在字符(包括当前字符)之后的光标所在行的字符 |
P | 将已复制的一行粘贴在光标所在行的上一行/将已复制的一个字符粘贴在光标所在字符之前 |
p | 将已复制的行粘贴在光标所在行的下一行/将已复制的一个字符粘贴在光标所在字符之后 |
J | 将光标所在行与下一行的数据结合成同一行 |
cc | 删除当前行,并进入编辑模式 |
C | 删除光标所在字符(包括当前字符)之后的光标所在行的字符 |
u | 撤销前一个动作(常用) |
[Ctrl]+r | 将撤销的动作重新执行(常用) |
这个 u 与 [Ctrl]+r 是很常用的指令!一个是撤销,另一个则是重做一次~ 利用这两个功能按键,你的编辑,嘿嘿!很快乐的啦! | |
. | 不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用) |
二、编辑模式:
1、Esc 退出输入模式,切换到命令模式;
2、字符按键以及Shift组合,输入字符
3、ENTER,回车键,换行
4、BACK SPACE,退格键,删除光标前一个字符
5、DEL,删除键,删除光标后一个字符
6、方向键,在文本中移动光标
7、HOME/END,移动光标到行首/行尾
8、Page Up/Page Down,上/下翻页
9、Insert,切换光标为插入/替换模式,光标将变成竖线/下划线
三、命令行模式:
命令行模式常用命令 | |
---|---|
Esc | 退出命令行模式,切换到命令模式 |
:w(write) | 保存 |
:q(quit) |
退出 |
:x | 保存并退出 |
1、 ;
2、:w 保存
3、:q 退出
4、配置查看及修改
1):set 查看当前vim设置
2):set all 查看所有可设置属性
5、内容定位
1):$ 光标跳到内容最后一行
2):n 光标跳到内容第n行
四、可视化模式:
选择、剪切、复制与粘贴 | |
---|---|
v | 进入visual字符可视化模式,操作的最小单位是一个字符,再按一次退出 |
V | 进入visual行可视化模式,操作的最小单位是一行,再按一次退出 |
[Ctrl] + [v]或 [Ctrl] + [V] |
进入visual块可视化模式,相当于列选择模式,再按一次退出。在Windows中,[Ctrl] + [v]可能已经被映射为粘贴操作,可以使用ctrl-Q 进入块可视化模式。 |
o | 在visual模式下,在已选中的区域内对角线的字符交替选中 |
O | 在visual模式下,在已选中的区域内同一行的首末字符交替选中 |
~ | 在visual模式下,将已选中的文本大写转为小写,小写转为大写 |
x | 剪切光标所在处的字符 |
nx | n为数字,剪切光标所在处之后的n个字符 |
X | 剪切光标所在处之前的一个字符,相当于backspace退格键 |
nX | n为数字,剪切光标所在处之前的n个字符 |
d | 在visual模式下,将选中的内容进行剪切 |
dd | 剪切光标所在的那一整行(常用) |
ndd | n为数字,剪切光标所在行(包括当前行)下的n行 |
dnG | n为数字,剪切从第n行(从1开始计数)到光标所在行之间的所有行,包括第n行和光标所在行 |
dG | 剪切从光标所在行到最后一行的所有行,包括光标所在行和最后一行 |
d$ | 剪切光标所在字符(包括当前字符)之后的光标所在行的字符 |
d0 | 剪切光标所在字符(不包括当前字符)之前的光标所在行的字符 |
y | 在visual模式下,将选中的内容进行复制 |
yy | 复制游标所在的那一行(常用) |
nyy | n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用) |
ynG | n为数字,复制从第n行(从1开始计数)到光标所在行之间的所有行,包括第n行和光标所在行 |
yG | 复制从光标所在行到最后一行的所有行,包括光标所在行和最后一行 |
y0 | 复制光标所在字符(不包括当前字符)之前的光标所在行的字符 |
y$ | 复制光标所在字符(包括当前字符)之后的光标所在行的字符 |
P | 将已复制的一行粘贴在光标所在行的上一行/将已复制的一个字符粘贴在光标所在字符之前 |
p | 将已复制的行粘贴在光标所在行的下一行/将已复制的一个字符粘贴在光标所在字符之后 |
J | 将光标所在行与下一行的数据结合成同一行 |
cc | 删除当前行,并进入编辑模式 |
C | 删除光标所在字符(包括当前字符)之后的光标所在行的字符 |
u | 撤销前一个动作(常用) |