系统的学习和总结VIM的使用
2016-07-24 18:47
225 查看
1. 光标的移动
字符移动
h:向左移动一个字符j:向下移动一行
k:向上移动一行
l:向右移动一个字符
数字+h|j|k|l移动指定的行或者字符
单词移动
w: 将光标向前移动到下一个单词的词首b: 将光标向后移动到前一个单词的词首
e: 将光标移动到下一个单词的词末
ge: 将光标移动到前一个单词的词末
2w: 指定移动的次数
行移动
$: 移动到行尾0: 移动到行首
^: 移动到行首的第一个非空字符
2|:移动到第二列
fx:将光标移动到当前行第一个字符x上
3fx:将光标移动到当前行第3字符x上
tx:将光标移动到目标字符的前一个字符上
fx和tx可以通过;和,进行重复移动,;表示正向重复 ,表示反向重复
%:用于符号之间的移动,它可以在(),[],{}之间跳跃
文本块移动
(, 移动到当前句子的开头), 移动到下一句子的开头
{, 移动到当前段的开头
}, 移动到下一段的开头
[[, 移动到当前节的开头
]], 移动到下一节的开头
屏幕中移动
gg:移动到整个文件的开头G: 移动到整个文件的结尾
xG:跳转到指定的行
H: 移动到当前屏幕的开始
M: 移动到当前屏幕的中间
L: 移动到当前屏幕的末尾
x%: 移动到文章指定的比例位置
两点或者单引号可以返回到跳转前的位置(“或者”)
ctrl+G: 查看当前文件的位置状态
2. 滚屏和跳转
半屏滚动: ctrl+u(向上滚动) ctrl+d(向下滚动)全屏滚动: ctrl+f(向上滚动) ctrl+b(向下滚动)
定位光标的位置:
zz: 将光标所在位置置于屏幕的中间
zt: 将光标所在位置置于屏幕的顶部
zb: 将光标所在位置置于屏幕的底部
设置跳转标记:
mx,my,mz设置三个位置(如何设置)
x,y,`z 跳转到设置
3. 文本插入操作
i 在当前光标的前面插入字符a 在当前光标的后面追加字符
o 在光标所在行的下一行行首插入字符
I 在一行的开头添加文本
A 在一行的结尾添加文本
O 在光标所在行的上一行插入文本
s 删除当前光标所在的字符并进入插入模式
S 删除光标所在处的行,并进入插入模式
注意: 通过u可以撤销之前的修改
4. 文本删除
字符删除x: 删除当前光标所在的字符
X: 删除当前光标之前的字符
单词删除:
dw: 删除一个单词(从光标到空白)
daw: 无论光标在什么位置,删除光标所在的整个单词,包括单词后面的空白字符
diw: 删除整个单词,但是保留后面的空白字符不删除
d2w: 删除从当前光标开始的连续两个单词
d$: 删除光标到行未的所有单词
d0: 删除光标到行首的所有单词
dx:等价于x
dh:等价于X
删除行:
dd 删除光标所在的行,等价于D
5dd,删除从光标开始向下的5行
dgg:删除从光标到文本的开头
dG:删除从光标到文办的结尾
启发,d+位置或者范围可以组合出不同的删除命令
行合并
J: 删除一个分行符,将当前行与下一行合并
5. 文本的复制、剪贴与粘贴
复制文本
y: 复制p:粘贴
yw:复制一个单词
y2w: 复制两个单词
y$: 复制从当前光标到行结尾的所有单词
y0: 复制从当前光标到行首的所有单词
yy: 复制一整行 (复制到光标所在行的下一行)
2yy:复制当前光标所在行开始的2行
复制文板块:
首先输入v进入可视化模式
移动光标选择文本
执行复制与粘贴的操作
剪切文本
先删除(同上),再粘贴(p)6 文本的修改与替换
cw: 删除从光标处到单词结尾的文本并进入插入模式cb: 删除从光标处到单词开头的文本并进入插入模式
cc: 删除光标所在行并进入到插入模式
~: 修改光标下字符的大小写
r: 替换当前光标下的字符
R: 进入到替换模式
xp: 交换光标和下一个字符
7 组合命令的使用
复制yL (复制从光标到屏幕底部的所有内容)
yH (复制从光标到屏幕顶部的所有内容)
y+ (复制从光标及其下一行的内容)
y5| (复制从光标到第五列之间的内容)
2y)(复制从光标到第五列之间的内容)
y{ 复制上一段, y} 复制下一段
yG 复制到文件的结尾
y13G 复制光标开始到下面的13行
删除
dL (删除从光标到屏幕顶部的所有内容)
dH (删除从光标到屏幕顶部的所有内容)
d+ (删除从光标及其下一行的内容)
d5| (删除从光标到第五列之间的内容)
2d)(删除从光标到第五列之间的内容)
d{ 删除上一段, d} 删除下一段
dG 删除制到文件的结尾
d13G 删除光标开始到下面的13行
更改
cL (更改从光标到屏幕顶部的所有内容)
cH (更改从光标到屏幕顶部的所有内容)
c+ (更改从光标及其下一行的内容)
c5| (更改从光标到第五列之间的内容)
2c)(更改从光标到第五列之间的内容)
c{ 更改上一段, c} 更改下一段
cG 更改到文件的结尾
c13G 更改光标开始到下面的13行
8 文本的查找与替换
查找/string: 进入正向查找模式, n 查看下一个 (set hls 高亮显示)
?string: 进入方向查找模式, n 反向查看下一个
( * 高亮显示与当前光标所在字符相同的所有字符)
替换
: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 依次替换每个字符串关键字
可以使用正则表达式进行模式匹配替换
9 修改的撤销、重做和保存
u: 撤销上一步的操作ctrl+r: 将原来的撤销再重做一遍
U:恢复一整行文件打开是文件的文本状态
wq:保存退出
e!: 放弃修改,但不关闭文件
q!: 放弃修改,并关闭文件
10 编辑多个文件
文件和缓冲区的区别,vim每打开一个文件都会创建一个对应的缓冲区。vim *.c
buffers或者ls: 显示所有打开的文件
buffer N: 跳转到缓存区中第N个文件的缓存区
bnext/bprev:遍历缓冲区列表
bfirst/blast: 跳转到缓冲区列表的开头和结尾
write: 将缓冲区写入文件
edit! 或者e! 放弃缓存区的修改
edit filename: 切换到要编辑的文件
wnext:保存当前缓存区的修改并跳转到缓冲区列表中的下一个文件
注意: set autowrite 自动保存缓冲区的文件到文件
11 标签页和折叠栏
标签页tabedit: 创建一个标签页
tab split: 创建一个标签页,使用当前文件缓冲区中的数据
tabn/tabp: 命令切换标签页
gt/gT: 按键切换标签页
tabclose: 关闭当前的标签页
tabonly:关闭其它的标签页
折叠
zf200G:将光标和200行之间的代码折叠起来(不是在命令行模式下)
za:打开和关闭折叠
zr/zm:一层一层的打开和关闭折叠
zR/zM:分别打开和关闭所有的折叠
zj/zk: 在各个折叠处相互跳转
zd: 删除光标下的折叠
zD:删除光标下的折叠以及嵌套的折叠
zE:删除所有的折叠标签
注意:创建的折叠当退出vim之后就丢失了
12 多窗口的操作
split filename: 水平分割窗口vsplit filename: 垂直分割窗口
ctrl+w h|j|k|l: 切换窗口
ctrl+w w : 在窗口之间顺序跳转
ctrl+w H|J|K|L: 移动窗口
ctrl+w +/-: 调整窗口的高度
ctrl+w
相关文章推荐
- java项目中的路径
- C11多线程
- 深度学习框架 Torch 7 问题笔记
- SparkContext启动分析
- C++编写Config类读取配置文件
- 关于node
- tornado的异步
- 什么是Reactor模式,或者叫反应器模式
- list_head用法(一)
- 计算机系统进制备忘
- isKindOfClass和isMemberOfClass的区别
- Cloudera Impala 编译、安装与配置
- Autorelease自动释放池的使用
- java泛型中<?>和<T>有什么区别?
- Android之获取网络位置的经纬度
- java文件操作
- 探秘Java中String、StringBuilder以及StringBuffer
- tomcat超时启动Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If the serve
- 第八章 互斥型信号量管理
- http://itindex.net/detail/51074-java-%E5%88%A9%E7%94%A8-jackson