在vim中,当我使用
:r !ls somefilename
它将该命令的输出插入当前行下方的新行。
如果我做
let @a = system("ls")
然后
"ap
它仍然在当前行下方的新行中插入输出。
有没有办法让 vim 在当前位置插入输出?
dev*_*av2 46
:r !command
Run Code Online (Sandbox Code Playgroud)
将读取命令的输出并将其插入到当前行下的行中。这就是 vi 的编程方式,您无法更改其行为。
但是,如果您在第 3 行,请说。如果您尝试:r !date
. 它将日期值插入到第 4 行。
如果您希望日期值出现在第 3 行,那么您尝试:2r !date
将日期值插入第 3 行。
Ste*_*oon 17
您可以在插入模式下使用 Ctrl-R * 在字符之间粘贴剪贴板缓冲区的内容(以及其他缓冲区的类似方法)。因此,如果您可以将系统命令放入缓冲区,则应该设置。(来源:https : //stackoverflow.com/questions/1491135/paste-multi-line-string-into-gvim-at-cursor-position)。
:let @a=system("ls -l")
将把 的输出ls -l
放入 register a
。然后,您可以将其粘贴(在插入模式下)^R-a
。
ken*_*orb 16
这是在光标前粘贴外部命令输出的替代方法:
:exe 'norm i' . system("ls -l")
Run Code Online (Sandbox Code Playgroud)
或使用表达式寄存器 ( :help @=
):
"=system('ls -la')
Run Code Online (Sandbox Code Playgroud)
然后打P。或者更短的方式:
<CTRL-R>=system('ls -la')<CR>
Run Code Online (Sandbox Code Playgroud)