【问题标题】:How to insert text in vimscript如何在 vimscript 中插入文本
【发布时间】:2019-08-22 03:55:17
【问题描述】:

我在 vimscript 中有最简单的要求。我已经在 Google 上搜索了一段时间,例如123。我只想插入一行文字!

假设我有一个带有行的文件:

aaa
bbb
ddd
eee

我只想在bbb 行之后添加缺少的行ccc

我有一个 vimscript 函数的开始:

function! addLine()
  normal /bbb
  " MISSING LINE
  wq!
endfunction

缺少的那一行应该是什么?

请注意,我想使用 vim -c 'call addLine()' FILE 在一堆文件上调用此脚本。

【问题讨论】:

    标签: vim


    【解决方案1】:

    虽然它不是 vimscript,但您在一堆文件中的搜索和替换任务听起来像是 argdo 的工作:

    :argdo %s/bbb/&\rccc/ge | update  
    

    【讨论】:

    • 我的意思是技术上是 vimscript...只是没有包含在一个函数中。
    【解决方案2】:

    在使用 Vimscript 时,我会避免使用 :normal-mode 操作,而使用具有相同功能的 builtin functions

    function! AddLine()
        let l:foundline = search("bbb") " Can return 0 on no match
        call append(l:foundline, "ccc")
        wq!
    endfunction
    

    search()append() 在函数中使用应该比 norm /norm o 更方便。

    【讨论】:

    • 虽然很难解释,但这在我的实际用例中是行不通的。你是说根本不可能做我想做的事?
    • 哦,有可能,你需要execnorm 的组合来获得像Enter 这样的按键,结果通常是更混乱的引用。还是试着解释一下吧。
    • 一般来说,建议是,如果问题使现有答案无效,则不应编辑问题,但我不介意。继续并按照您认为合适的方式进行编辑。我会尝试相应地修复,或者如果我不能删除。
    • 不问一个全新的问题实际上是不可能的。给我一点。
    猜你喜欢
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 2020-05-20
    • 2022-06-11
    • 2023-02-06
    相关资源
    最近更新 更多