Vim-args-系列指令

当用 vim 打开多个文件时, file name list 会存储在 argument list 中, 可以通过这个 list 在多个文件中跳转.

注意区分 buffer list (其可以用 :buffers 查看)

所有 argument list 中存在的文件都会存在于 buffer list 中. (反之不一定)

所有 window 有一个共有的 global argument list, 但也可以通过 arglocal 给一个 window 创建一个 local argument list.

args

打印出当前的 argument list.

1
:ar :arg :args

定义新的 argument list

1
:ar[gs] [++opt] [+cmd] {arglist}

如:

1
:args hello world haha

此时 argument list 为:

1
['hello', 'world', 'haha']

且当前编辑的 buffer 变为 hello.

argadd

添加一个 name 到当前的 argument list:

1
:[count]arga[dd] {name}

[count] 为添加到 argument list 中的位置. 若忽略, 则放在当前 arg 之后.

示例, 当前为 b:

1
2
3
4
5
6
command		new argument list
:argadd x a b x c
:0argadd x x a b c
:1argadd x a x b c
:$argadd x a b c x
:+2argadd y a b c x y

注意其不会检测 duplicates, 可以配合 :argdedupe 使用:

1
:argadd *.txt | argdedupe

argdedupe

移除 argument list 重复的项:

1
:argded[upe]

argedit

添加一个 name 到当前的 argument list 并编辑 (若已存在则直接编辑):

1
:[count]arge[dit][!] [++opt] [+cmd] {name}

相当于先 :argadd:edit.

argdelete

利用 pattern 匹配删除

从 argument list 中删除匹配 pattern (%, * 等) 的项:

1
:argd[elete] {pattern}

如:

1
:argdel *.obj

利用 index 范围删除

1
:[range]argd[elete]

如:

1
2
3
4
5
:10,$argdel
:$argd
:argd
:.argd
:%argd

argument

编辑指定 count 位置的 file:

1
:[count]argu[ment] [count] [++opt] [+cmd]

next

编辑 [count] next file:

1
:[count]n[ext] [++opt] [+cmd]

Next

编辑 [count] previous file:

1
:[count]N[ext] [count] [++opt] [+cmd]

previous

Next.

1
:[count]prev[ious] [count] [++opt] [+cmd]

rewind

编辑 argument list 中的第一个 file:

1
:rew[ind] [++opt] [+cmd]

first

rewind:

1
:fir[st][!] [++opt] [+cmd]

last

编辑 argument list 中的最后一个 file:

1
:la[st] [++opt] [+cmd]

wnext

写入当前 file, 编辑下一个 file:

1
:[count]wn[ext] [++opt]

wNext

写入当前 file, 编辑前一个 file:

1
:[count]wN[ext][!] [++opt] [file]

wprevious

wNext:

1
:[count]wp[revious][!] [++opt] [file]

arglocal

创建一个 global argument list 的复制

1
:argl[ocal]

但并不会开始编辑.

定义一个新 argument list 给当前 window

1
:argl[ocal][!] [++opt] [+cmd] {arglist}

argglobal

将 global argument list 应用到当前 window

1
:argg[lobal]

定义一个新的 global argument list

1
:argg[lobal][!] [++opt] [+cmd] {arglist}

argsdo

对范围内的 argument list 中的所有文件应用命令:

1
:[range]argdo[!] {cmd}

如:

1
:argdo %s/hello/world/g | update

:update writes 所有被修改过的文件.

argc()

1
argc([{winid}])

(winid 指 window id)

返回 argument list 中 files 的数量.

不提供 {winid} 时, 使用当前 window 的 argument list.

{winid}-1 时, 使用 global argument list.

{winid} is invalid 时, 返回 -1.

argv()

1
argv([{nr} [, {winid}]])

返回 argument list 中 {nr}th file. (指定位置)

当不提供 {nr}{nr}-1 时, 返回整个 List.


Vim-args-系列指令
http://example.com/2024/02/26/Vim-args-系列指令/
作者
Jie
发布于
2024年2月26日
许可协议