Vim:自动从外部文件读取行

Vim:自动从外部文件读取行

我正在尝试在 vim 中自动执行以下操作:

:r! sed -n 10p filename

其中行号(10)不断变化。我当时的想法是

function! GetLine(line, filename)
    :r! sed -n a:line,p a:filename
endfunction

我已将其放入 .vimrc 中并正确引用。但当我调用:call GetLine(10, "testfile.txt")它时,它不起作用。

现在,虽然我已经使用 vim 很长一段时间了,但我对编写脚本还很陌生,所以如果我遗漏了一些明显的内容,请耐心等待。

答案1

我会做这样的事情

function! GetLine(line, filename)
    execute 'r! sed -n ' . a:line . 'p ' . a:filename
endfunction

execute执行以下 ex 命令。我们使用字符串连接生成 ex 命令。.连接字符串和变量

看一眼:h :execute

答案2

更适合映射的另一种方法是通过以下方式插入行号<C-r>

:nmap <Leader>r :r! sed -n <C-r>=variable<CR>p filename<CR>

相关内容