Vim的基本使用(一)

本文包含Vim的基本使用有: 移动光标、屏幕滚动、模式查找、位置标记、删除文本、撤销与重做、插入文本、复制与移动、修改文本、写入与退出。

1. 移动光标

h => 左
j => 下
k => 上
l => 右

0 => 移动到行首(不可指定计数)
$ => 移动到行末(n-1)

^ => 移动到本行第一个非空白字符(不可指定计数)
_ => 移动到本行第一个非空白字符(n-1)

数字+| => 移动到第n列

f+字符 => 移动到该行右边该字符处
F+字符 => 移动到该行左边该字符处
t+字符 => 移动到该行右边该字符前
T+字符 => 移动到该行左边该字符后

- => 移动到前一行第一个非空白字符
+ => 移动到下一行第一个非空白字符

数字+G => 移动到第n行第一个非空白字符
数字+gg => 移动到第n行第一个非空白字符

G => 移动到最后一行行首
gg => 移动到第一行行首

数字+% => 移动到全文件百分之n处

M => 移动到屏幕中间行第一个非空白字符

% => '()[]{}'括号匹配(不可指定计数)

w => 移动到下一个单词词首
e => 移动到下一个单词词尾
b => 移动到上一个单词词首
ge => 移动到上一个单词词尾

W => 移动到下一个空白格开的字串首
E => 移动到下一个空白格开的字串尾
B => 移动到上一个空白格开的字串首
gE => 移动到上一个空白隔开的字串尾

( => 移动到下一句首
) => 移动到上一句首
} => 移动到下一段落
{ => 移动到上一段落

[[ => 移动到第一行行首
]] => 移动到最后一行行首

[] => 移动到前一个'}'
][ => 移动到后一个'}'

2. 屏幕滚动

Ctrl+u => 上滚1/2页
Ctrl+d => 下滚1/2页

Ctrl+f => 上滚1页
Ctrl+b => 下滚1页

zz => 置当前行于当前屏幕正中
zt => 置当前行于当前屏幕顶部
zb => 置当前行于当前屏幕底部

3. 模式查找

/+字符串 => 向后查找该字符串
?+字符串 => 向前查找该字符串

n => 查找下一处
N => 查找上一处

* => 向后查找光标处的字符串
# => 向前查找光标出的字符串

全文查找并替换
:%s/str1/str2/g

4. 位置标记

m+{a-zA-Z} => 用{a-zA-Z}记录当前位置(不可指定计数)
`+{a-zA-Z} => 跳转到标记{a-zA-Z}的位置(不可指定计数)
'+{a-zA-Z} => 同上

`` => 跳转到跳转之前的光标位置(不可指定计数)
'' => 同上
`" => 跳转到最后编辑的光标位置(不可指定计数)
'" => 同上
`[ => 跳转到最后修改的开始位置(不可指定计数)
'[ => 同上
`] => 跳转到最后修改的结束位置(不可指定计数)
'] => 同上
`. => 跳转到文件最后被改动的位置(不可指定计数)
'. => 同上

Ctrl+o => 跳转到跳转表较早的位置
Ctrl+i => 跳转到跳转表较晚的位置

:marks => 列出标记

:jumps => 列出跳转表

5. 删除文本

x => 删除光标之后的字符
X => 删除光标之前的字符

D => 删除光标至行尾
dd => 删除光标所在行

d^ => 删除光标至行首
d$ => 删除光标至行尾

dw => 删除光标至光标所在单词词尾(包括词尾空格)
de => 删除光标至光标所在单词词尾(不包括词尾空格)

dgg => 删除至文件头
gG => 删除至文件尾

J => 删除光标所在行的行尾换行符并插入空格
gJ => 删除光标所在行的行尾换行符不插入空格

6. 撤销与重做

u => 撤销上一步操作
Ctrl+r => 恢复撤销操作
U => 撤销行内操作(不可指定计数)

7. 插入文本

i => 在光标后插入文本
a => 在光标前插入文本
A => 在当前行末插入文本
I => 在当前行的第一个非空白字符前插入文本
o => 在当前行下方开始新行
O => 在当前行上方开始新行

8. 复制与移动

Y => 复制光标至行尾
yy => 复制光标所在行

y+操作 => 复制操作覆盖的内容

p => 粘贴至光标后
P => 粘贴至光标前

gp => 粘贴至光标后并光标后移
gP => 粘贴至光标前并光标后移

将1~3行文字复制到光标所在位置
:1,3 co .
将1~3行文字复制到第7行所在位置
:1,3 co 7
将1~3行文字移动到光标所在位置
:1,3 m .
将1~3行文字写到新的文件filename中
:1,3 w filename
将1~3行文附加到新的文件filename中
:1,3 w >> filename

9. 修改文本

数字+r+字符 => 用该字符替换n个字符

R => 进入替换模式

S => 删除光标所在行并进入插入模式
cc => 删除光标所在行并进入插入模式
c^ => 删除光标至行首并进入插入模式
c$ => 删除光标至行尾并进入插入模式

cw => 删除光标所在单词并进入插入模式(不包括词尾空格)
ce => 同上
C => 删除光标至行尾并进入插入模式(n-1)
s => 删除光标所在字符并进入插入模式

~ => 反转字符的大小写并前进光标

g~+操作 => 将操作覆盖的文本反转大小写
gu+操作 => 将操作覆盖的文本转为小写
gU+操作 => 将操作覆盖的文本转为大写

Ctrl+a => 将光标之上的或之后的数值增加n
Ctrl+x => 将光标之上的或之后的数值减小n

>+操作 => 将操作覆盖的内容右移tab
<+操作 => 将操作覆盖的内容左移tab

>> => 该行左移tab
<< => 该行右移tab

xp => 删除一个字符插入到光标之后

10. 写入与退出

:w => 写入当前文件
:q => 正常退出
:wq => 保存退出
:q! => 强制退出
ZZ => 保存退出
ZQ => 强制退出

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏老马寒门IT

09-移动端开发教程-Sass入门

CSS3之前的CSS都大都是枚举属性样式,而编程语言强大的变量、函数、循环、分支等功能基本都不能在CSS中使用,让CSS的编程黯淡无光,Sass就是一种增强CS...

63490
来自专栏Java技术分享

XML基本语法

 导入一个XML文件可分为如下几部分内容:文档声明 、元素、属性、注释 、CDATA区 ,特殊字符 、处理指令

260100
来自专栏积累沉淀

linux学习之sed命令总结

sed工具的使用 grep工具的功能其实还不够强大,grep实现的只是查找功能,而它却不能实现把查找的内容替换掉。以前用vim的时候,可以查找也可以替换,但是只...

20780
来自专栏Modeng的专栏

Vue中如何使用方法、计算属性或观察者

熟悉 Vue 的都知道 方法methods、计算属性computed、观察者watcher 在 Vue 中有着非常重要的作用,有些时候我们实现一个功能的时候可以...

14620
来自专栏从零开始的linux

shell变量

bash的重要特性:变量 bash变量类别: 本地变量:只对当前shell进程有效的变量;对其它shell进程无效,包当...

34060
来自专栏HTML5学堂

拉手网面试题,不一样的难度

正文 1、JavaScriptalert(0.4*0.2);结果是多少?和你预期的一样吗?如果不一样该如何处理? 2、JavaScript以下哪条语句会产生运行...

36680
来自专栏烂笔头

Python标准库笔记(6) — struct模块

目录[-] 该模块作用是完成Python数值和C语言结构体的Python字符串形式间的转换。这可以用于处理存储在文件中或从网络连接中存储的二进制数据,以及其...

49050
来自专栏SpringBoot

第二节,Springboot自定义配置文件

配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;

26330
来自专栏老马寒门IT

09-移动端开发教程-Sass入门

1. 引言 CSS3之前的CSS都大都是枚举属性样式,而编程语言强大的变量、函数、循环、分支等功能基本都不能在CSS中使用,让CSS的编程黯淡无光,Sass就是...

30360
来自专栏超然的博客

让js调试更简单—console

console上述的集中度支持printf的占位符格式,支持的占位符有:字符(%s)、整数(%d或%i)、浮点数(%f)和对象(%o):

14210

扫码关注云+社区

领取腾讯云代金券