Vim高级操作

Vim高级操作

vim模式及切换

普通模式

该模式是vim的默认模式

插入模式

该模式是一般编辑器的正常模式,在该模式下进行文档的编辑工作

可视模式

该模式下通过光标移动,高亮选择区

命令行模式

该模式下执行一些vim编辑器的设置及文档替换等及一些vim支持的命令操作

普通模式 ——> 插入模式

操作说明
i在光标左侧插入正文
a在光标右侧插入正文
o在光标所在行的下一行增添新行
O在光标所在行的上一行增添新行
I在光标所在行的开头插入
A在光标所在行的末尾插入

插入模式 ——> 普通模式

按ESC由插入模式切换到普通模式

普通模式 ——> 可视模式

操作说明
v字符移动高亮
V按行高亮
ctrl + v按块高亮
vi{选中{}中间的内容,不包括{}
va{选中{}中间内容,包括{}
vi(选中()中间内容
vi<选中<>中间内容
vi[选中[]中间内容
vit选中中间的内容
vi”选中”"中间内容
vi’选中”中间的内容、
vis选中一个句子
vib选中一个block
viw选中一个单词
vip选中一个段落
o切换光标开头和结尾

可视模式 ——> 普通模式

在模式下v的反操作

普通模式 ——> 命令行模式

命令行模式输入":"进入命令行模式

光标移动

字符移动

操作说明
h
j
k
l

单词移动

操作说明
w移动到下个单词开头
W移动到下个单词开头(单词含标点)
e移动到下个单词结尾
E移动到下个单词结尾(单词含标点)
b移动到上个单词结尾
B移动到上个单词结尾(单词含标点)
fx向后搜索<字母>并跳转到第一个匹配的位置
Fx向前搜索<字母>并跳转到第一个匹配的位置
%移动到{,[(

行内移动

操作说明
0移动到行首
^移动到行首
$移动到行尾
g_移动到行内最后一个非空白符

行间移动

操作说明
ngg移动到n行
G移动到行尾

页内移动

操作说明
H移动到当前页面顶部
M移动到当前页面中间
L移动到当前页面底部

文档移动

操作说明
Ctrl + b向后滚动一屏
Ctrl + f向前滚动一屏
Ctrl + d向前滚动半屏
Ctrl + u向后滚动半屏
zz移动屏幕使光标居中

文档编辑

编辑

操作说明
r替换当前字符
J将下一行合并到当前行
gJjoin line below to the current one without space in between
gwipreflow paragraph
cc清空当前行, 然后进入插入模式
c$从光标位置开始, 修改当前行
ciwchange (replace) entire word
cw从光标位置开始, 修改单词
s删除当前字符, 然后进入插入模式
S清空当前行, 然后进入插入模式 (同cc)
xp当前字符后移
u撤销
Ctrl + r重复
.再次执行上个命令

查找/替换

操作说明
/pattern查找pattern
?pattern向上查找pattern
\vpatternpattern 中的非字母数字字符被视为正则表达式特殊字符 (不需转义字符)
n查找下一个
N查找上一个
:%s/old/new/g替换全部
:%s/old/new/gc(逐个)替换
:noh移除搜索结果的高亮显示

删除

操作说明
x删除光标后字符
X删除光标前字符
dd删除改行
dw删除单词
d$删除到行尾
d^删除到行首
ndd删除n行

剪切, 复制, 粘贴

操作说明
yy复制当前行
nyy复制 n 行
yw复制当前单词
y$复制, 从光标位置到行末
p在光标后粘贴
P在光标前粘贴
dd剪切当前行
ndd剪切 2 行
dw剪切当前单词
D剪切, 从光标位置到行末
d$剪切, 从光标位置到行末 (同D)
x剪切当前字符

分屏和标签

操作说明
:e file新建缓冲区打开 filename
:bnext or :bn切换到下个缓冲区
:bprev or :bp切换到上个缓冲区
:bd关闭缓冲区
:ls列出所有打开的缓冲区
:sp file新建缓冲区打开 filename 并水平分割窗口
:vsp file新缓冲区打开 filename 并垂直分割窗口
Ctrl + ws水平分割窗口
Ctrl + ww在窗口间切换
Ctrl + wq关闭窗口
Ctrl + wv垂直分割窗口
Ctrl + wh切换到右侧窗口
Ctrl + wl切换到左侧窗口
Ctrl + wj切换到下侧窗口
Ctrl + wk切换到上侧窗口

可视化模式 VISUAL
进入一般的可视化模式
命令模式下,
v - 命令进入的字符可视化模式(Characterwise visual mode), 文本选择是以字符为单位的
V - 命令进入的行可视化模式(Linewise visual mode), 文本选择是以行为单位的
ctrl-V/v - 进入的块可视化模式(Blockwise visual mode), 可以选择一个矩形内的文本, 类似于Notepad++和UE里的列编辑

代码块选择的可视化模式
vi{pattern character} 或者 va{pattern character}

例如:
vi" - 选中双引号之间的所有内容,但是不包含双引号;
va" - 选中双引号之间的内容且包括双引号
其他的还有 vi{, vi(, vi[, vi(, vi’ 等

vis, vip, viw, viB, vib

vis - 将光标停留在段落中的任何字符上,该命令会选中一个段落(空行分隔),但不包含段首和段尾的空白字符
vip - 将光标停留在段落中的任何字符上,该命令会选中一个段落(空行分隔),包含段首和段尾的空白字符
viw - 将光标停留在某单词的任何字符上,该命令会选中整个单词
viB - 将光标停留在一个大括号内,使用该命令选中该大括号内的代码
vib - 将光标停留在一个小括号内,使用该命令选中该小括号内的代码

快速查找替换
单词操作
w - 下一个单词开头
b - 上一个单词开头
e - 如果光标在当前单词上(非结尾字符),则跳到当前单词结尾;否则跳到下一个单词的结尾

跳到上一个单词的结尾怎么办?vim应该没有提供单个字符的命令,可以使用组合be,即先跳到上一个单词,再跳到当前单词的结尾

行操作
0 - 移动光标到行首
^ - 移动光标到行首非空字符
$ - 移动光标到行尾
g_ - 移动光标到行尾非空字符

括号操作
% - 如果当前光标停留在非成对字符上,跳到下一个成对字符处;如果当前光标停留在成对字符上,则跳到与当前字符匹配的字符

f(find)命令也可以用于移动,fx将找到光标后第一个为x的字符,3fd将找到第三个为d的字符。

F 同f,反向查找。

df( 配合 f ,删除从光标处到 ( 的字符,单行操作


参考:

anzhihe 安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/3706.html | ☆★★每天进步一点点,加油!★★☆ | 

您可能还感兴趣的文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注