在 VI 编辑器中使用 shell 命令输出
Using shell command output within VI editor
我刚刚开始使用类似 vi 的编辑器,我想知道是否可以在一行中插入 shell 命令的输出,例如,编辑 /etc/shadow 与 vipw -s
prueba4::16586:0:99999:7:::
~
~
~
~
~
~
~
~
~
我的目标是简单地更改用户的密码。
这就是我尝试的:
1)使用光标键定位到用户prueba4的密码摘要字段。然后使用 x 命令删除旧摘要的每个字符。
2) 按 Esc。然后输入
:r!mkpasswd my..password my..salt
3) 我得到了想要的输出,但它是换行写的,而不是我在按 Esc 键之前编辑的最后一个 space,然后按“:”
是否可以将摘要写在它所属的地方?
:r!
命令始终有效 'linewise',因此它无法在给定行 内插入任何文本。
您可以使用以下方法将命令的结果分配到 'register'(vim 的位置以保存被抽出、剪切等的字符):
:let @a=system("your_command")
然后当您的光标位于您想要文本的位置时,使用以下方式放置寄存器的内容(您通过):
<C-R>a
在位置
处于插入模式时
或
"ap
在正常模式下位于位置左侧的字符(在本例中为“:”)
我刚刚开始使用类似 vi 的编辑器,我想知道是否可以在一行中插入 shell 命令的输出,例如,编辑 /etc/shadow 与 vipw -s
prueba4::16586:0:99999:7:::
~
~
~
~
~
~
~
~
~
我的目标是简单地更改用户的密码。 这就是我尝试的: 1)使用光标键定位到用户prueba4的密码摘要字段。然后使用 x 命令删除旧摘要的每个字符。 2) 按 Esc。然后输入
:r!mkpasswd my..password my..salt
3) 我得到了想要的输出,但它是换行写的,而不是我在按 Esc 键之前编辑的最后一个 space,然后按“:”
是否可以将摘要写在它所属的地方?
:r!
命令始终有效 'linewise',因此它无法在给定行 内插入任何文本。
您可以使用以下方法将命令的结果分配到 'register'(vim 的位置以保存被抽出、剪切等的字符):
:let @a=system("your_command")
然后当您的光标位于您想要文本的位置时,使用以下方式放置寄存器的内容(您通过):
<C-R>a
在位置
处于插入模式时
或
"ap
在正常模式下位于位置左侧的字符(在本例中为“:”)