我正在尝试在 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>