饥人谷技术博客

Vim的使用介绍

2019-06-11  本文已影响4人  饥人谷张雪莲

Vim是什么

Vim是从vi发展出来的一个文本编辑器,其代码补充,编译及错误跳转方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。并且在vi的基础上也做了很多改进,增加了多级撤销、多窗口操作、崩溃后也可以恢复、增加了稳定性、关键字自动补全、上下文自动补全等功能。

Vim的工作模式

Vim一共有6种工作模式

  1. 光标移动命令
单个字符移动:
h:  向左移动
l:  向右移动
j:  向下移动
k:  向上移动
xh:  向左移动x个字符距离

单词移动:
w:  将光标移动到下一个单词的开头
b:  将光标移动到前一个单词的开头
e:  将光标移动到下一个单词的词末
E:  移动到单词的结尾(忽略标点符号)
ge:  将光标移动到上一个单词的词末
2w:  指定移动的次数

行移动:
$:  将光标移动到当前行的行尾
0:  将光标移动到当前行的行首
^:  将光标移动到当前行的第一个非空字符(行首和当前行非空字符不是一个位置)
2|:  移到当前行的第2列
fx:  将光标移动到当前行的第一个字符x上
3fx: 将光标移动到航前行的第3个字符x上
tx:   将光标移动到目标字符x的前一个字符上
fx和tx可以通过;和,进行重复移动,一个是正向重复,一个是反向重复
%:  用于符号间的移动,它会在一对()、[]、{}之间跳跃

文本块移动:
(:  移到当前句子的开头
):  移到下一个句子的开头
{:  移到当前一段的开头
}:  移到下一段的开头
[[:  移到当前这一节的开头
]]:  移到下一节的开头

在屏幕中移动
xG:  跳转到指定的第x行,G移动到文件按末尾,``(2次单引号)返回到跳转前的位置
gg:  移动到文件开头
x%:  移动到文件中间,就使用50%
H:  移动到home
M:  移动到屏幕中间
L:  移动到一屏末尾
ctrl+G:  查看当前的位置状态
  1. 滚屏与跳转
半屏滚动:  ctrl+u/ctrl+d
全屏滚动:  ctrl+f/ctrl+b

定位光标的位置
zz:  将光标置于屏幕的中间
zt:  将光标移动到屏幕的顶部
zb:  将光标移动到屏幕的底部

设置跳转标记
mx,my,mz设置三个位置
`x,`y,`z跳转到设置
  1. 文本插入操作
i:  在当前光标的前面插入字符
a:  在当前光标的后面追加字符
o:  在当前光标的下一行行首插入字符
I:  在一行的开头添加文本
A:  在一行的结尾处添加文本
O:  在光标当前行的上一行插入文本
s:  删除当前光标处的字符并进入到插入模式
S:  删除光标所在处的行,并进入到插入模式
u:  撤销修改
  1. 文本删除操作
字符删除
x:  删除当前光标所在处的字符
X:  删除当前光标左边的字符

单词删除
dw:  删除一个单词(从光标处到空格)
daw:  无论光标在什么位置,删除光标所在的整个单词(包括空白字符)
diw:  删除整个单词文本,但是保留空格字符不删除
d2w:  删除从当前光标开始处的2个单词
d$:  删除从光标到一行末尾的整个文本
d0:  删除从光标到一行开头的所有单词
dl:  删除当前光标处的字符=x
dh:  删除当前光标左边的字符=X

行删除
dd:  删除当前光标处的一整行=D
5dd:  删除从光标开始处的5行代码
dgg:  删除从光标到文本开头
dG:  删除从光标到文本结尾

行合并
J:  删除一个分行符,将当前行与下一行合并
  1. 文本复制,剪切与粘贴
y:  复制,p:粘贴
yw:  复制一个单词
y2w:  复制2个单词
y$:  复制从当前光标到行结尾的所有单词
y0:  复制从当前光标到行首的所有单词
yy:  复制一整行
2yy:  复制从当前光标所在行开始的2行

复制文本块
    1.首先进入visual模式:v
    2.移动光标选择文本
    3.复制与粘贴的操作
  1. 文本的修改与替换
cw:  删除从光标处到单词结尾的文本并进入到插入模式
cb:  删除从光标处到单词开头的文本并进入到插入模式
cc:  删除一整行并进入到插入模式
~: 修改光标下字符的大小写
r:  替换当前光标下的字符
R:  进入到替换模式
xp:  交换光标和下一个字符
  1. 文本的查找与替换
/string   正向查找
?string   反向查找

设置高亮显示
    :set hls
    *按键将当前光标处的单词高亮显示,使用n浏览下一个查找高亮的结果
:s/old/new   将当前行的第一个字符串old替换为new
:s/old/new/g   将当前行的所有字符串old替换为new
:90s/old/new/g  将指定行的所有字符串old替换为new
:90,93s/old/new/g  将指定范围的行的所有字符串old替换为new
:%s/old/new/g   将文本中所有的字符串old替换为new
:%s/old/new/gc  依次替换每个字符串关键字
:%s/^struct/int/g   将所有以struct开头的字符串替换为int
  1. 撤销修改、重做与保存
u:  撤销上一步的操作。
Ctrl+r:  将原来的插销重做一遍
U:  恢复一整行原来的面貌(文件打开时的文本状态)
q:  若文件没有修改,直接退出
q!:  文件已经被修改,放弃修改退出
wq:  文件已经被修改,保存修改并退出
e!:  放弃修改,重新回到文件打开时的状态
  1. 编辑多个文件
文件和缓冲区的区别
文件是保存在磁盘上的,而打开的文件的文件是在内存中,在内存中有一个缓冲区,用来存放打开的文件。vim每次打开文件时都会创建一个缓冲区,vim支持打开多个文件
:buffers   查看缓冲区列表==ls
:buffer N  根据缓冲区列表的编号跳转到指定缓冲区
:bnext/bprev  遍历缓冲区列表
:bfirst/blast  分别调到缓冲区列表的开头和结尾
:write   将缓冲区的修改保存到磁盘上
:edit! e!  放弃缓冲区的修改,恢复到文件打开时的状态
:edit file  编辑另一个文件
:wnext   保存当前缓冲区的修改并跳转到缓冲区列表中的下一个文件
:set autowrite
  1. 标签页与折叠栏
标签页的新建:tabedit file/tab split
标签页的切换: tabn/tabp
按键:gt/gT
标签页的关闭
    tabclose 
关闭当前的标签页: tabonly
创建一个折叠
    zf200G:将光标和200行之间的代码折叠起来
折叠的打开与关闭
    za:  打开和关闭折叠
    zr/zm: 一层一层地打开和关闭折叠
    zR/zM: 分别打开和关闭所有的折叠
折叠键的光标移动
    zj: 跳转到下一个折叠处
    zk: 跳转到上一个折叠处
删除折叠
    zd: 删除光标下的折叠
    zD: 删除光标下的折叠以及嵌套的折叠
    zE: 删除所有的折叠标签
    创建的折叠当退出vim之后就失效了。
  1. 多窗口操作
分割窗口
    split/vsplit filename
窗口间跳转
    ctrl+w hjkl
    ctrl+w w
移动窗口
    ctrl+w HJKL
调整窗口尺寸
    ctrl+w +/-  调整窗口的高度
    ctrl+w </>  调整窗口的宽度
    ctrl+w = 所有的窗口设置相同的尺寸
    :resize n将当前窗口尺寸调整为N行
关闭窗口
    close: 关闭一个窗口
    qall: 退出所有窗口
    qall!: 放弃修改,退出所有窗口
    wqall: 保存并退出所有窗口
    wall: 保存所有窗口

附上Vim键盘命令图

1.jpg
上一篇下一篇

猜你喜欢

热点阅读