【问题标题】:Go directly to end of specific line in Vim直接转到 Vim 中特定行的末尾
【发布时间】:2015-08-10 15:09:20
【问题描述】:

我对 Vim 很陌生,我找不到解决这个问题的方法,而这看起来很简单。 我想将 sthg 直接附加到文件特定行的末尾,比如说第 12 行。我可以通过两个命令来完成:

:12
A

有没有办法在单行中做到这一点?我按照here 的建议尝试了:12|A,但我得到了E492: Not an editor command: A

非常感谢!

【问题讨论】:

    标签: vim append


    【解决方案1】:

    进入普通模式,12G进入十二行,A在行尾开始编辑...

    <esc>12GAsomething
    

    如果您想在文件的每一行添加“某些东西”,您仍然可以使用正则表达式:

    :%s/$/something/
    

    或者如果你只想做一些行,你可以录制一个宏

    <Esc>qq<Esc>Asomething<Esc>jq
    

    要执行十行以上的宏,只需输入:

    10@q
    

    如果你真的想要一个oneliner,只需设置一个映射:

    inoremap <C-p> <Esc>12GAsomethinga
    

    然后按Ctrlp

    <C-p>
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      :12norm Afoo
      

      :help :normal

      或者你可以用替换来做到这一点:

      :12s/$/foo
      

      【讨论】:

        【解决方案3】:

        据我所知,你不能。 转到第 12 行并追加到行尾是两个不同的命令,不能合并。

        一个可能的技巧是将文件打开到特定位置:

        vi example.txt +12
        

        然后追加到行尾。

        个人说明:我认为“vi”哲学的奇妙之处在于将命令串联为 unix 管道模式。 了解如何转到特定行、追加或插入、删除等更容易和更灵活地为每个组合学习一个命令。 接受这个概念,你会永远爱上 vi。

        【讨论】:

        • 我试过 nowox 答案,它确实有效!所以我更同意你的观点,vi 是一个非常可爱的工具;)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多