在VI编辑器

时间:2015-06-01 17:34:03

标签: shell command-line vi shadow

我只是走了与vi类编辑器的第一步,我想知道是否可以在一行中插入一个shell命令的输出,例如,编辑/ etc / shadow with vipw -s

prueba4::16586:0:99999:7:::
~
~
~
~
~
~
~
~
~

我的目标是简单地更改用户的密码。 这就是我的尝试: 1)使用光标键将自己定位在用户prueba4的密码摘要字段中。然后使用x命令删除旧摘要的每个字符。 2)击中Esc。然后键入

  

:r!mkpasswd my..password my..salt

3)我得到了所需的输出,但它是用新的一行写的,而不是我在点击Esc之前编辑的最后一个空格,然后是':'

是否可以将摘要写在它所属的位置?

1 个答案:

答案 0 :(得分:1)

:r!命令始终以'linewise'方式工作,因此无法在给定行内插入任何 文本。

你可以使用以下命令将命令的结果分配到'寄存器'(vim的位置以保持字符被猛拉,切割等):

:let @a=system("your_command")

然后在光标位于您想要文本的位置时,将寄存器的内容放置(通过):
处于插入模式时<C-R>a位置 或
"ap在正常模式下,位于该位置左侧的角色(在本例中为':')