VIM-->基础操作汇总

插入

        i       在Normal模式按下,在当前光标所选字符之前插入
I 在Normal模式按下,在当前光标所选行首插入
a 在Normal模式按下,在当前光标所选字符之后插入
A 在Normal模式按下,在当前光标所选行尾插入
o 在Normal模式按下,在当前光标所在行之后插入
O 在Normal模式按下,在当前光标所在行之前插入

分隔窗口

:split

1、将当前文件进行上下分隔编辑,使用CTRL-w-w进行切换。

2、若在:split后跟了其他文件名,表示打开指定文件,与当前文件进行上下分隔。

3、若在split前加数字,代表新分隔窗口的行数占用

4、将split替换为vsplit既为左右分隔,其他特征一样。

:close 关闭当前光标所在窗口
:only 关闭除当前窗口以外的其他窗口
:new

1、上下分隔的方式打开一个新窗口并编辑空缓存区

2、将new替换为vnew则是垂直分隔编辑新缓存

CTRL-w  

当进行很多分隔时,为了快速切换,CTRL-w 后面加上方向键就可以快速定位。

当方向键换为大写字母,则代表移动窗口。

CRTL-w-h  到左边窗口  CRTL-w-H  向左移动窗口

CRTL-w-j  到下面窗口   CRTL-w-J  向下移动窗口

CRTL-w-k  到上面窗口  CRTL-w-K  向上移动窗口

CRTL-w-l  到右边窗口   CRTL-w-L  向右移动窗口

CRTL-w-t  到顶部窗口

CRTL-w-b  到底部窗口

:qall

退出所有窗口并退出vim,当有未保存文件,可以用 :wqall 先保存退出,或者用 :qall! 强制退出

vim -o FileName

启动vim时使用此指令表示以水平分隔方式打开所有FileName文件,当o为大写,则是垂直分隔

:all

:all为后面指定文件水平分隔并编辑,:vall 则为垂直分割

vimdiff file1 file2

1、以垂直分割的方式比较两个文件不同,相同位置会自动折叠。在折叠行使用 zo 展开,用 zc 折叠。

2、经常使用 :diffupdate ,高亮显示两个文件不同

补全

CTRL-p 向下查找word补全
CTRL-n 向上查找word补全
CTRL-x-f 补全文件名
CTRL-x-l 补全整行
CTRL-x-d 补全宏定义
CTRL-x-i 补全include
CTRL-x-k 补全来自字典文件的word
CTRL-x-t 补全来自thesaurus的word
CTRL-x-j 补全tags
CTRL-x-v 补全vim命令行

移动

w

光标移动到下一个单词的第一个字母

w前加数字代表向后移动几个单词

b

光标移动到前一个单词的第一个字母

b前加数字代表向前移动几个单词

e

光标移动到下一个单词的最后一个字母

e前加g代表移动到前一个单词的最后一个字母上

e/eg前面加数字代表向后/向前第几个单词最后一个字母上

$

移动到行尾与[End]按键一样

可以在前面加数字,代表移动到下n-1行尾

^

移动到第一个非空白字符上

0

移动到行首与[Home]按键一样

f

f后跟字符代表移动到当前行的字符上

前面可以加数字,代表移动到第几个字符

将f大写'F',则为反方向搜索

使用";"重复,","为反向重复

t

与f类似,不过是移动到字符的前一个字符上

同样可以大写反方向搜索

使用";"重复,","为反向重复

%

1、跳到匹配的括号上去

2、前面加数字,代表移动到文件百分之多少的位置

3、在程序中,在#ifdef这类结构上使用,会循环跳转到#else,#endif处

G

G前加数字,代表移动到对应行去

不加数字则到最后一行

gg为快速跳转到第一行

CTRL-u

向上滚动半屏

CTRL-d

向下滚动半屏

CTRL-e

向上滚动一行

CTRL-y

向下滚动一行

CTRL-f

向下滚动一屏

CTRL-b

向上滚动一屏

zz

把当前行置于屏幕中央

zt

把当前行置于屏幕顶端

zb

把当前行置于屏幕底端

``

将光标定位到跳转之前的位置

可以将第二个返单号"`"替换为一个字母,这个字母代表mark

mark使用如下:

1、在当前处使用m+字母标记,比如"ma"

2、在其他位置跳转回标记处,比如"`a"

3、也可以使用单引号,比如"'a",代表跳转到mark行首

4、使用:marks 查看已经有的标记

默认存在以下标记:

 '      此次跳转之前的起跳点

"      上次编辑该文件时光标最后位置

[       最后一次修改的起始位置

]       最后一次修改的结束位置

[#

在#if-#endif结构中是,使用"[#"跳转到#if,使用"]#"跳转到#else或#endif

[[

移动到上一个代码块首

[]则为移动到上一个代码块尾

]]

移动到下一个代码块首

][则为移动到下一个代码块尾

[/

跳转到注释/**/首

]/则为跳转到注释尾

折行

zf 创建折行
zo 打开当前折行
zc 关闭当前折行
set foldmethd=syntax 基于缩进或语法进行代码折叠
set nofoldenable 启动vim时取消折叠

复制

nyy 赋值包括当前行在内的n行,当n=1时,可以忽略
byw 复制当前光标下的单词,“b”是为了回到单词首

替换

格式如下:

:[range]s/from/to/[flags]
#将from替换为to

 range:指定替换范围

%:替换所有行的第一次发现的目标

空:仅替换当前行的第一次发现的目标

n,m:替换n到m行

n:替换第n行

`a,`b:从标记a到标记b的范围

`<,`>:visual模式选择的范围

flags:指定替换规则

g:替换一行的发现的所有目标

p:列出被替换的行

c:替换前需要用户确认

查找 

本文件查找:

在normal模式下,移动到需要查到的字符串,按下[SHIFT]+[*]即可自动捕捉,但这仅仅对于单词而言。

如果要跨单词,需要使用传统的"/"命令输入方式

匹配操作

ci/a+符号 对配对符号内的内容更改,当i为a时,连同符号一起操作
di/a+符号 对配对符号内的内容删除,当i为a时,连同符号一起操作
yi/a+符号 对配对符号内的内容复制,当i为a时,连同符号一起操作
vi/a+符号 对配对符号内的内容选中,当i为a时,连同符号一起操作

大小写转换

gu+符号 将符号指定区域大写转小写,符号即为:w,0,$等等
gU+符号 将符号指定区域小写转大写
~ 将光标下字母大小写替换

大块操作

1、多行操作:使用[CTRL]+V选中多行,在选中的第一行进行一般的编辑操作,[ESC]后,操作便复制到其他行。

原文地址:https://www.cnblogs.com/KcMeterCEC/p/5390245.html