Nvim :help
页面,生成 于 源代码 使用 tree-sitter-vimdoc 解析器。
{stmt}
执行 perl 语句 {stmt}
。当前包为“main”。一个简单的检查:perl
命令是否有效的测试:perl print "Hello":[range]perl << [trim] [
{endmarker}
] {script}
{endmarker}
执行 perl 脚本 {script}
。{script}
后的 {endmarker}
必须不能以任何空白符开头。function! MyVimMethod() perl << EOF sub my_vim_method { print "Hello World!\n"; } EOF endfunction要查看你拥有的 perl 版本
:perl print $^V
{cmd}
对[range]中的每一行执行 perl 命令 {cmd}
,其中 $_ 设置为每一行的测试,不带尾部的 <EOL>
。除了 $_ 之外,$line 和 $linenr 也分别设置为行内容和行号。设置 $_ 将更改文本,但请注意,无法使用此命令添加或删除行。[range] 的默认值为整个文件:“1,$”。:perldo $_ = reverse($_); :perldo $_ = "".$linenr." => $line";可以将
:perldo
与 :perl
结合使用,以使用 perl 过滤范围。例如:perl << EOF sub perl_vim_string_replace { my $line = shift; my $needle = $vim->eval('@a'); my $replacement = $vim->eval('@b'); $line =~ s/$needle/$replacement/g; return $line; } EOF :let @a='somevalue' :let @b='newvalue' :'<,'>perldo $_ = perl_vim_string_replace($_)
:perl @ARGV = ("foo", "bar"); :perlfile myscript.pl以下是一些示例 perl-examples
:perl print "Hello" :perl $current->line (uc ($current->line)) :perl my $str = $current->buffer->[42]; print "Set \$str to: $str"请注意,更改(如“use”语句)会从一个命令延续到下一个命令。
print "Hello" # displays a message VIM::Msg("Hello") # displays a message VIM::SetOption("ai") # sets a vim option $nbuf = VIM::Buffers() # returns the number of buffers @buflist = VIM::Buffers() # returns array of all buffers $mybuf = (VIM::Buffers('a.c'))[0] # returns buffer object for 'a.c' @winlist = VIM::Windows() # returns array of all windows $nwin = VIM::Windows() # returns the number of windows ($success, $v) = VIM::Eval('&path') # $v: option 'path', $success: 1 ($success, $v) = VIM::Eval('&xyz') # $v: '' and $success: 0 $v = VIM::Eval('expand("<cfile>")') # expands <cfile> $curwin->SetHeight(10) # sets the window height @pos = $curwin->Cursor() # returns (row, col) array @pos = (10, 10) $curwin->Cursor(@pos) # sets cursor to @pos $curwin->Cursor(10,10) # sets cursor to row 10 col 10 $mybuf = $curwin->Buffer() # returns the buffer object for window $curbuf->Name() # returns buffer name $curbuf->Number() # returns buffer number $curbuf->Count() # returns the number of lines $l = $curbuf->Get(10) # returns line 10 @l = $curbuf->Get(1 .. 5) # returns lines 1 through 5 $curbuf->Delete(10) # deletes line 10 $curbuf->Delete(10, 20) # delete lines 10 through 20 $curbuf->Append(10, "Line") # appends a line $curbuf->Append(10, "L1", "L2", "L3") # appends 3 lines @l = ("L1", "L2", "L3") $curbuf->Append(10, @l) # appends L1, L2 and L3 $curbuf->Set(10, "Line") # replaces line 10 $curbuf->Set(10, "Line1", "Line2") # replaces lines 10 and 11 $curbuf->Set(10, @l) # replaces 3 lines模块函数
{arg}
) 设置 vim 选项。{arg}
可以是“:set”命令接受的任何参数。请注意,这意味着参数中不允许出现空格!请参阅 :set。{bn}
...]) 在没有参数的情况下,返回一个包含所有缓冲区的数组,或返回一个包含缓冲区数量的标量。对于缓冲区名称或数字 {bn}
的列表,返回一个包含匹配 {bn}
的缓冲区的列表,使用与 Vim 的内部 bufname() 函数相同的规则。 警告: 当使用 :bwipe 时,该列表将失效。{wn}
...]) 在没有参数的情况下,返回一个包含所有窗口的数组,或返回一个包含窗口数量的标量。对于窗口编号 {wn}
的列表,返回一个包含这些编号的窗口的列表。 警告: 当关闭窗口时,该列表将失效。{expr}
) 评估 {expr}
并返回(成功,值),在列表上下文中返回,或仅返回值,在标量上下文中返回。success=1 表示 val 包含 {expr}
的值;success=0 表示表达式评估失败。“@x”返回寄存器 x 的内容,“&x”返回选项 x 的值,“x”返回内部 变量 x 的值,“$x”等效于 perl 的 $ENV{x}。所有从命令行访问的 函数 对于 {expr}
都是有效的。一个 List 通过连接项目并插入换行符来转换为字符串。{lnum}
, {lnum}
, ...) 为每个指定的 {lnum}
返回缓冲区中第 {lnum}
行的文本字符串。可以将包含指定 {lnum}
列表的数组传递给它。{lnum}
, {lnum}
) 删除缓冲区中的第 {lnum}
行。如果有第二个 {lnum}
,则删除从第一个 {lnum}
到第二个 {lnum}
的行范围。{lnum}
, {line}
, {line}
, ...) 在缓冲区第 {lnum}
行之后追加每个 {line}
字符串。{line}
列表可以是数组。{lnum}
, {line}
, {line}
, ...) 用指定的 {lines}
替换一个或多个缓冲区行,从缓冲区第 {lnum}
行开始。{line}
列表可以是数组。如果参数无效,则不会执行替换。{row}
, {col}
) 在没有参数的情况下,返回窗口中当前光标位置的 (行,列) 数组。如果有 {row}
和 {col}
参数,则将窗口的光标位置设置为 {row}
和 {col}
。请注意,{col}
从 0 开始编号(Perl 风格),因此比 Vim 标尺中的值小 1。