Skip to content
On this page

Vim 使用记录

INFO

Vim/Vi/Neovim 有 3 中模式:

  • Command mode
  • Insert mode
  • Last line mode

Vim 打开时,进入 Command mode ,此模式下敲击键盘,Vim 会认为输入的是命令,而非字符。

Command mode 下,输入 : ,会切换至 Last line mode 。

下移 1 行

j
j

下移 10 行

10j
10j

若某一行太长,在屏幕上显示为好几行时,可按照屏幕行下移

gj
gj

上移 1 行

k
k

上移 10 行

10k
10k

若某一行太长,在屏幕上显示为好几行时,可按照屏幕行上移

gk
gk

移到行首

0
0

若某一行太长,在屏幕上显示为好几行时,可按照屏幕行移到行首

g0
g0

移到行尾

$
$

若某一行太长,在屏幕上显示为好几行时,可按照屏幕行移到行尾

g$
g$

左移 1 个字符

h
h

左移 10 个字符

10h
10h

右移 1 个字符

l
l

右移 10 个字符

10l
10l

在光标前插入字符

i
i

在光标后插入字符

a
a

在行首插入字符

I
I

在行尾添加字符

A
A

移除光标所在处的字符

x
x

移除行尾的空格或 tab

:%s/\s\+$//g
:%s/\s\+$//g

移除空行

:g/^$/d
:g/^$/d

移除空行及只有空格的空行

:g/^\s*$/d
:g/^\s*$/d

移除行尾的空格

:%s/\s*$//g
:%s/\s*$//g

移除行尾的空格和 Tab

:%s/\s\+$//g
:%s/\s\+$//g

移除包含指定字符 pattern 的行

:g/pattern/d
:g/pattern/d

移除不包含指定字符 pattern 的行

:g!/pattern/d
:g!/pattern/d

Tab 替换为空格

:set ts=4
:set expandtab
:%retab!
:set ts=4
:set expandtab
:%retab!

空格替换为 Tab

:set ts=4
:set noexpandtab
:%retab!
:set ts=4
:set noexpandtab
:%retab!

单引号替换为双引号

:%s/'\([^']*\)'/"\1"/g
:%s/'\([^']*\)'/"\1"/g

空格替换为换行

:%s/ /\r/g
:%s/ /\r/g

删除空行

:g/^$/d
:g/^$/d

文本行倒序

:g/^/m0
:g/^/m0

设置文件格式为 Unix,我常用于 CRLF 到 LF 的转换

:set fileformat=unix
:set fileformat=unix