Vim ---从外部命令读取,向右插入光标所在的位置

时间:2015-02-21 11:42:22

标签: vim

:r !program打开一个新行,插入我的程序输出,然后在其后插入一行。 我只想将输出插入光标所在的位置,而不是额外的混乱。

我想我可以:

  1. 运行前宏

     mai^M^[`a 
    
     "Mark where I'm at, insert a line and go back
    
  2. 运行我的命令

    :r !echo -ne "line1\nline2\nline3"
    
  3. 运行after宏(清理行)

    $mb:j!^M`a:j!^M`b 
    
    "Go to the end of inserted outpu
    "Mark it b
    "Join with the next line
    "Go to the first mark
    "Delete the inserted newline with :j!
    "Go to the second mark
    
  4. 如何将其合并为一个命令? 我希望能够做到:

    :Readhere !echo -ne "line1\nline2\nline3"    
    

    其中:Readhere将是我的自定义命令。

1 个答案:

答案 0 :(得分:1)

这可能会做你想要的。 (你不需要!

command! -nargs=1 ReadHere exec 'normal! i' . system(<q-args>)

这将创建一个名为ReadHere的命令,该命令将所有内容作为带引号的参数并将其直接传递给系统命令。然后我们使用exec以正常模式插入所有内容。 (这可能不够健壮)


示例:启动缓冲区为

one two three

运行:ReadHere echo -ne "line1\nline2\nline3",其中光标在w上生成

one tline1
line2
line3wo three