【发布时间】:2015-08-10 15:09:20
【问题描述】:
我对 Vim 很陌生,我找不到解决这个问题的方法,而这看起来很简单。 我想将 sthg 直接附加到文件特定行的末尾,比如说第 12 行。我可以通过两个命令来完成:
:12
A
有没有办法在单行中做到这一点?我按照here 的建议尝试了:12|A,但我得到了E492: Not an editor command: A
非常感谢!
【问题讨论】:
我对 Vim 很陌生,我找不到解决这个问题的方法,而这看起来很简单。 我想将 sthg 直接附加到文件特定行的末尾,比如说第 12 行。我可以通过两个命令来完成:
:12
A
有没有办法在单行中做到这一点?我按照here 的建议尝试了:12|A,但我得到了E492: Not an editor command: A
非常感谢!
【问题讨论】:
进入普通模式,12G进入十二行,A在行尾开始编辑...
<esc>12GAsomething
如果您想在文件的每一行添加“某些东西”,您仍然可以使用正则表达式:
:%s/$/something/
或者如果你只想做一些行,你可以录制一个宏
<Esc>qq<Esc>Asomething<Esc>jq
要执行十行以上的宏,只需输入:
10@q
如果你真的想要一个oneliner,只需设置一个映射:
inoremap <C-p> <Esc>12GAsomethinga
然后按Ctrlp
<C-p>
【讨论】:
你可以这样做:
:12norm Afoo
见:help :normal。
或者你可以用替换来做到这一点:
:12s/$/foo
【讨论】:
据我所知,你不能。 转到第 12 行并追加到行尾是两个不同的命令,不能合并。
一个可能的技巧是将文件打开到特定位置:
vi example.txt +12
然后追加到行尾。
个人说明:我认为“vi”哲学的奇妙之处在于将命令串联为 unix 管道模式。 了解如何转到特定行、追加或插入、删除等更容易和更灵活地为每个组合学习一个命令。 接受这个概念,你会永远爱上 vi。
【讨论】: