Vim常用命令

Vim官网:*
http://www.vim.org/

Vim文档:

  • http://www.vim.org/docs.php
  • http://vim.wikia.com/wiki/Vim_Tips_Wiki

Vim简介

  • Vim(Vi[Improved])编辑器是功能强大的跨平台文本文件编辑工具,继承自Unix系统Vi编辑器,支持Linux/Mac OS X/Windows系统,利用它可以建立、修改文本文件
  • Vim是从 vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。
  • vim的设计理念是命令的组合

Vim的6种基本模式

  1. 普通模式
    使用vim打开一个文件时默认模式。在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。这正好和许多新用户期待的操作方式相反(大多数编辑器默认模式为插入模式)
  2. 插入模式
    也可以叫做编辑模式,在普通模式下敲击iao 就进入插入模式,允许用户通过键盘输入、编辑。在这个模式中,大多数按键都会向文本缓冲中插入文本。大多数新用户希望文本编辑器编辑过程中一只保持这个模式。在插入模式中,可以按ESC键回到普通模式
  3. 可视模式
    在普通模式下敲击前盘上的v键,就进入可视化模式,然后移动光标就可以选中一块文本,常用来完成文本的赋值、粘贴、删除等操作。这个模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮的区域上。Vim的“文本对象”也能和移动命令一样用在这个模式中
  4. 选择模式
    这个模式和无模式编辑器的行为比较相似(Windows标准文本控制的方式)。这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式
  5. 命令行模式
    在命令行模式可以输入会被解释成并执行的文本。在执行命令后,Vim返回到命令模式之前的模式,通常是普通模式
  6. Ex模式
    这和命令行模式比较相似,在使用:visual命令离开Ex模式前,可以一次执行多条命令。

这6中模式我们常用到就是普通模式插入模式命令行模式

Vim键盘图

Vim键盘图.jpg

模式的切换

在刚进入Vim时,便进入了普通模式,在普通模式中可以按i(插入)或者a(附加)进入插入模式,在普通模式中按:进入命令行模式;在命令行模式中和插入模式中按ESC返回到普通模式。如图:

vim工作模式.png

常用命令及说明

  • 单个字符
命令 说明
h 移动
l(小写字母L) 移动
j 移动
k 移动
xh 移动x个字符距离
  • 单词移动
命令 说明
w 将光标移动到下一个单词的开头
b 将光标移动到前一个单词的开头
e 将光标移动到下一个单词的词末
E 移动到单词的结尾(忽略标点符号)
ge 将光标移动到上一个单词的词末
2w 指定移动的次数
  • 行移动
命令 说明
$ 将光标移动到当前行的行尾
0 将光标移动到当前行的行首
^ 将光标移动到当前行的第一个非空字符(行首和当前行非空字符不是一个位置)
2| 移到当前行的第2
fx 将光标移动到当前行的第一个字符x
3fx 将光标移动到航前行的第3个字符x
tx 将光标移动到目标字符x的前一个字符上
% 用于符号间的移动,它会在一对()[]{}之间跳跃

fxtx 可以通过 ;, 进行重复移动,一个是正向重复,一个是反向重复

  • 文本块移动
命令 说明
( 移到当前句子的开头
) 移到下一个句子的开头
{ 移到当前一段的开头
} 移到下一段的开头
[[ 移到当前这一节的开头
]] 移到下一节的开头
  • 在屏幕中移动
命令 说明
xG 跳转到指定的第x行,G移动到文件按末尾
``(2次单引号) 返回到跳转前的位置
gg 移动到文件开头
x% 移动到文件中间,就使用50%
H 移动到home
M 移动到屏幕中间
L 移动到一屏末尾
ctrl+G 查看当前的位置状态
  • 滚屏与跳转
命令 说明
ctrl+u/ctrl+d 半屏滚动
ctrl+f/ctrl+b 全屏滚动
  • 定位光标的位置
命令 说明
zz 将光标置于屏幕的中间
zt 将光标移动到屏幕的顶部
zb 将光标移动到屏幕的底部
  • 设置跳转标记
命令 说明
mx , my , mz 设置三个位置
x , y , z 跳转到设置
  • 文本插入操作
命令 说明
i 在当前光标的前面插入字符
a 在当前光标的后面追加字符
o 在当前光标的下一行行首插入字符
I(大写字母i) 在一行的开头添加文本
A 在一行的结尾处添加文本
O 在光标当前行的上一行插入文本
s 删除当前光标处的字符并进入到插入模式
S 删除光标所在处的行,并进入到插入模式
u 撤销修改
  • 文本删除操作
命令 说明
x 删除当前光标所在处的字符
3x 删除3个连续字符,以此类推
X 删除当前光标左边的字符
Delete x
dw 删除一个单词(从光标处到空格)
daw 无论光标在什么位置,删除光标所在的整个单词(包括空白字符)
diw 删除整个单词文本,但是保留空格字符不删除
d2w 删除从当前光标开始处的2个单词
d$D 删除从光标到一行末尾的整个文本
d0(字母d和数字0) 删除从光标到一行开头的所有单词
dl(字母d和小写字母L) 删除当前光标处的字符(等同于x)
dh 删除当前光标左边的字符(等同于X)
dd 删除当前光标处的一整行(等同于D)
5dd 删除从光标开始处的5行代码
d^ 删除至行首
dgg 删除从光标到文本开头
dG 删除从光标到文本结尾
d1G 删除至文档首部
J 删除一个分行符,将当前行与下一行合并
  • 文本复制、剪切与粘贴
命令 说明
y 复制
y0(数字0) 复制从当前光标到行首的所有单词
yy 复制一整行
3yy 复制从当前光标所在行开始的3
y^ 复制至行首,不含光标所在处字符
y$ 复制从当前光标到行结尾的所有单词
yw 复制一个单词
y2w 复制2个单词
yG 复制至文本末
y1G 复制至文本开头
p 粘贴到光标后
P 粘贴到光标前
ddp 剪切并粘贴

复制文本块
1.首先进入visual(可视)模式:v
2.移动光标选择文本
3.复制与粘贴的操作

  • 文本的修改与替换
命令 说明
cw 删除从光标处到单词结尾的文本并进入到插入模式
cb 删除从光标处到单词开头的文本并进入到插入模式
cc 删除一整行并进入到插入模式
~ 修改光标下字符的大小写
r 替换当前光标下的字符
R 进入到替换模式,连续替换,直到按下Esc
xp 交换光标和下一个字符
r+<待替换字母> 将游标所在字母替换为指定字母
C(大写) 替换游标以后至行末
  • 文本的查找与替换
命令 说明
/string 正向查找
?string 反向查找
f<字母> 向后搜索<字母>并跳转到第一个匹配的位置
F<字母> 向前搜索<字母>并跳转到第一个匹配的位置
t<字母> 向后搜索<字母>并跳转到第一个匹配位置之前的字母
T<字母> 向前搜索<字母>并跳转到第一个匹配位置之后的字母
:s/old/new 将当前行的第一个字符串old替换为new
:s/old/new/g 将当前行的所有字符串old替换为new
:90s/old/new/g(90指定的行数) 将指定行的所有字符串old替换为new
:90,93s/old/new/g(90,93指定的行数) 将指定范围的行的所有字符串old替换为new
:%s/old/new/g 将文本中所有的字符串old替换为new
:%s/old/new/gc 依次替换每个字符串关键字
:%s/^struct/int/g 将所有以struct开头的字符串替换为int

设置高亮显示
:set hls
*按键将当前光标处的单词高亮显示,使用n浏览下一个查找高亮的结果

  • 撤销修改、重做与保存
命令 说明
u 撤销上一步的操作
Ctrl+r 将原来的插销重做一遍
U 恢复一整行原来的面貌(文件打开时的文本状态)
:q 若文件没有修改,直接退出
:q! 文件已经被修改,放弃修改退出,不保存
:wq 文件已经被修改,保存修改并退出
:wq! 强制保存并退出
:w文件路径 另存为
:saveas 文件路径 另存为
:x 保存并退出
shift+zz 退出vim
  • 文本格式
命令 说明
>> 整行向右缩进
<< 整行向左回退
/+<需要查找的字符串>+回车 向下查找(进入查找之后,输入nN可以继续查找,n是查找下一个内容,N查找上一个内容,命令行模式下输入noh回车可取消搜索)
?+<需要查找的字符串>+回车 向上查找(进入查找之后,输入nN可以继续查找,n是查找下一个内容,N查找上一个内容,命令行模式下输入noh回车可取消搜索)
\* 寻找游标所在处的单词
:set nu 显示行号
:set shiftwidth=10 设置缩进为10个字符,以此类推(输入Esc回到普通模式,再次尝试>>看缩进是否变化)
:ce(center) 本行内容居中
:ri(right) 本行内容居右
:le(left) 本行内容居左
:== 当前行自动缩进
:n== (n是自然数)表示自动缩进从当前行起的下面n
  • 编辑多个文件

  • 文件和缓冲区的区别:
    文件是保存在磁盘上的,而打开的文件的文件是在内存中,在内存中有一个缓冲区,用来存放打开的文件。vim每次打开文件时都会创建一个缓冲区,vim支持打开多个文件

命令 说明
:buffers 查看缓冲区列表(等同于(小写字母L)ls)
:buffer N 根据缓冲区列表的编号跳转到指定缓冲区
:bnext/bprev 遍历缓冲区列表
:bfirst/blast 分别调到缓冲区列表的开头和结尾
:write 将缓冲区的修改保存到磁盘上
:edit! e! 放弃缓冲区的修改,恢复到文件打开时的状态
:edit file 编辑另一个文件
:wnext 保存当前缓冲区的修改并跳转到缓冲区列表中的下一个文件
  • 标签页与折叠栏
命令 说明
tabedit file / tab split 标签页的新建
tabn / tabp 标签页的切换
gt / gT 按键
tabclose 标签页的关闭
tabonly 关闭当前的标签页
zf200G 将光标和200行之间的代码折叠起来
za 打开和关闭折叠
zr / zm 一层一层地打开和关闭折叠
zR / zM 分别打开和关闭所有的折叠
zj 跳转到下一个折叠处
zk 跳转到上一个折叠处
zd 删除光标下的折叠
zD 删除光标下的折叠以及嵌套的折叠
zE 删除所有的折叠标签

创建的折叠当退出vim之后就失效了

  • 多窗口操作
命令 说明
split / vsplit fileName 分割窗口
ctrl+w hjkl
ctrl+w w
窗口间跳转
ctrl+w HJKL 移动窗口
ctrl+w +/- 调整窗口的高度
ctrl+w 调整窗口的宽度
ctrl+w = 所有的窗口设置相同的尺寸
close 关闭一个窗口
qall 退出所有窗口
qall! 放弃修改,退出所有窗口
wqall 保存并退出所有窗口
wall 保存所有窗口

你可能感兴趣的:(Vim常用命令)