注意

[n]:表示数字(不包括中括号)

加粗的表示常用的

基本操作

插入

字母 作用
i 在光标之前,进入插入模式
I 在本行开头,进入插入模式
a 在光标之后,进入插入模式
A 在本行结尾,进入插入模式
o 在本行之后新增一行,并进入插入模式
O 在本行之前新增一行,并进入插入模式
s 删除当前字符,并进入插入模式
S 删除当前行中的所有文本,并进入插入模式

查找

[n]f{word}:用来查找当前行当前光标后是否存在某个字符{word},[n]代表第n个

t + 字母:跳转到当前行内第一个匹配的字母前一个字符(按:可继续跳转至下一个)

移动

  • ctrl+ u | ctrl + d

    ctrl + u:屏幕向上翻一页

    ctrl + d:屏幕向下翻一页

  • 0 | $ | ^

    0:移动到行首

    $:跳转到该行的第一个字符

    ^:跳转到改行的最后一个字符

  • %:跳转到() {} [] (如果放在一个括号上,会跳转到匹配的括号上)

  • [n]h/j/k/l:比如20h表示向左移动20字符

  • gg | G

    gg:移动到第一行

    G:移动到最后一行

  • H | M | L

    H:移动到当前页的第一行(head)

    M:移动到编辑器中部(medium)

    L:移动到当前页的最后一行(last)

  • [n]w:移动到后面单词的开始位置

  • e:移动到下一个词语的末尾(end)

  • b:移动到上一个单词的开头(begin)

  • zz:将光标处文本移到屏幕中央

  • [n]:输入数字加上enter,光标向下移动n行

  • { | }:切换到段首

替换、删除、撤销

替换

r:输入r之后,再输入字符,就能进行替换了

删除
c(change)

caw/ciw:删除当前单词,并进入插入模式

cw:在单词中只会删除后面的(比如光标在change在a,使用cw之后是ch)(dw则是删除之后不进入插入模式)

cc:删除当前行进入插入模式

cawciw的区别:caw会删除单词周围的空格,而ciw不会

d(delete)

[n]dd:删除光标所在的向下n行(常用dd删除当前行)

dG:删除光标行及其以下行的全部内容(ggdG:删除全部)

x

x:删除光标处字符

X:删除光标前面的字符

撤销

u:撤销

ctrl + r:回退上一步被撤销的操作

U:回到当前行的初始状态

复制、粘贴

复制

"+y:复制内容到系统剪切板(注意要按三个键:", +, y)

[n]yy:复制光标所在的向下n行(常用yy复制当前行)

yaw:复制当前单词(aw:all words)

y4j:复制向下4行的内容(其他的也类似)

yfr:复制到r的内容

粘贴

"+p:粘贴系统剪切板的内容

p:将复制的数据在光标下一行贴上

P:贴在上一行

格式化代码

自动格式化

==:对光标所在行进行自动格式化对齐

gg=G:对整个文件都格式化对齐

={motion}: 自动格式化 {motion} 操作前后的行。{motion} 可以是 vim 里面任意移动光标的操作。例如常见的 j、k、G、% 等。% 用于移动光标到匹配的括号上。当光标在 { 或者 }上时,=% 会格式化整个{}括起来的内容,包括 {} 自身

  • =a{ 当光标所在行位于{}花括号内时,自动格式化对齐整个{}里面的内容,包括 {} 这两个花括号所在的行也会一起格式化,以 { 的上一行为基准来对齐。如果 { 自身的对齐错乱了,可以把 { 所在的行也一起对齐。
  • =i{ 当光标所在行位于{}花括号内时,自动格式化对齐整个{}里面的内容,不包括 {} 这两个花括号所在的行,以 { 所在的行为基准来进行对齐。如果 { 自身所在行的对齐错乱,不会把 { 所在的行也一起对齐。
手动格式化

>>:把光标所在行向右增加缩进

<<:把光标所在行向左减少缩进

类似的也有:>{motion}<{motion}

  • >a{ 当光标所在行位于{}花括号内时,将整个{}里面的内容向右增加缩进,包括 {} 这两个花括号所在的行也会一起缩进。
  • >i{ 当光标所在行位于{}花括号内时,将整个{}里面的内容向右增加缩进,不包括 {} 这两个花括号所在的行,它们自身的行不会被缩进。

其他

J:将光标所在行与下一行结合成同一行

ctrl + g:显示文件信息

.:重复上一次的操作

可视模式

v,加上h/j/k/l可以选中文本

V:选中整行

d:删除选中文本

p:复制选中文本

ggvG:选中全部

底线模式

/:进入底线模式

搜索/

/word:向光标之下寻找一个叫word的字符串

?word:与/word类似,不过是向上查找

输入以上两条命令之后,按下enter之后:

n:跳转下一个匹配结果

N:跳转上一个匹配结果

要想回到之前的光标处:ctrl + o

去新的光标处:ctrl + i

替换:

:%s/source/target/g:从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用)

  • %s 全文搜索
  • source 代表要替换单词
  • target 代表替换的目标
  • /g 代表全文替换

:g/^\s*$/d: 删除空行以及只有空格的行

其他

:w:保存文件

:[n]:跳转到第n行

ctrl组合键

ctrl+v:列选择——功能介绍


常用操作

有用的组合

yaw 复制一个单词 (常用) daw 删除一个单词 (常用) caw 剪切一个单词到粘贴板,可利用 p 进行粘贴。(常用)

复制当前行并修改

  1. yy 复制当前行 private String username;
  2. p 将复制的内容进行粘贴
  3. f; 跳转到字符 ; 处,这里其实就是相当于行位。
  4. h 向左移动一个光标
  5. ciw 删除当前处的词,并进入 插入模式
  6. password 输入 password 完成

删除多行

  1. V 进入内容选择模式(大V能选择整行)
  2. kkk 向上移动 3 行,并进行选中
  3. d 删除选中部分

删除特定内容

di"删除""内的内容(i是in)

若想删除之后立即进入插入模式,用ci"

类似的,d替换成c可以立即进入插入模式

di(删除()内的内容

di{删除{}内的内容

.vimrc的配置

禁用方向键

在插入模式和normal模式禁用 []map:映射命令(前面的中括号填模式)

1
2
3
4
5
6
7
8
9
10
11
imap <Up> <Nop> // 表示在插入模式中,将方向键上,<Nop>表示什么也不做
nmao <Up> <Nop> // 表示在正常模式中

imap <Down> <Nop>
nmap <Down> <Nop>

imap <Left> <Nop>
nmap <Left> <Nop>

imap <Right> <Nop>
nmap <Right> <Nop>

ctrl+j/ctrl+k移动4行, ctrl+u/ctrl+d移动9行(默认移动半屏)

1
2
3
4
nmap <C-j> 4j
nmap <C-k> 4k
nmap <C-u> 9k
nmap <C-d> 9j

参考文章