:h global
:[range]global/{pattern}/{command}
const oeasy = 1;
console.log("oeasy: ", oeasy);
const o2z = 2;
console.log("o2z: ", o2z);
const o3z = 3;
console.log("o3z: ", o3z);
:g/console/d
console
的行都删除:g/const/d
const
的行都删除:g/console/d _
:g/console/d|update
:g@console@d
"
, |
, \
:g=console=d
:g?console?d
:g+//+s/oeasy/o1z/g
:g/console/d
console
的行都删除:v/console/d
console
的行都删除:g!/console/d
g!
和v
一样:g/one\|two/d
:g/[0-9]/d
或:g/\d/d
:g/^$/d
:g/^\s*$/d
^$
开头结尾之间只有空格和tab:1,5g/console/d
从1到5行
:,5g/console/d
从当前行到第5行
:3,g/console/d
从3到当前行
:3g/console/d
只搜索第3行
特定行
const oneMillion = 1000000;
const oneThousand = 1000;
const one = 1;
:g/0\{3,6\}/d
:g/.*/normal A;
.*
代表有0到任意多个非空字符^$
有0个字符也满足:g/./normal A;
.
代表有一个字符,任意字符都可以^$
一个字符都没有,不满足const oeasy = 1
console.log("oeasy: ", oeasy);
const o2z = 2
console.log("o2z: ", o2z);
const o3z = 3
console.log("o3z: ", o3z);
qaA;<Esc>q
:reg a
:g/const/normal @a
const
const
的行normal @a
:2,$g/const/normal @a
2,$
const
const
的行:normal @a
const oeasy = 1
console.log("oeasy: ", oeasy);
const o2z = 2
console.log("o2z: ", o2z);
const o3z = 3
console.log("o3z: ", o3z);
:g/console/g/two/d
:g/console/v/two/d
:g/const/p
const
模式的行:g/^/m 0
^
行的开头,所有的行都符合,包括空行const oeasy = 1
console.log("oeasy: ", oeasy);
// TODO oeasy
const o2z = 2
console.log("o2z: ", o2z);
// TODO o2z
const o3z = 3
console.log("o3z: ", o3z);
// TODO o3z
:g/TODO/t $
:g/TODO/m 0
const arrayA = [
"h",
"b",
"f",
"d",
"e",
"a",
"c",
]
:g//,//sort
:g/\[/,/\]/sort
:g/\[/+1,/\]/-1sort
:[range]global/{pattern}/{command}