【问题标题】:Using shell command output within VI editor在 VI 编辑器中使用 shell 命令输出
【发布时间】:2015-08-15 06:39:00
【问题描述】:

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

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

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

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

3) 我得到了想要的输出,但它写在一个新行中,而不是我在按 Esc 之前编辑的最后一个空格,然后是 ':'

是否可以将摘要写在它所属的地方?

【问题讨论】:

    标签: shell command-line vi shadow


    【解决方案1】:

    :r! 命令始终“按行”运行,因此它无法在给定行插入任何文本。

    您可以使用以下命令将命令的结果分配到“寄存器”(vim 用于保存被拉出、剪切等字符的位置):

    :let @a=system("your_command")
    

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

    【讨论】:

    • 非常感谢。很多教程和网络信息都提到了“光标位置”,我以为我做错了什么。
    猜你喜欢
    • 2016-10-01
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 2023-04-08
    • 2016-04-21
    • 2017-04-04
    • 2022-12-20
    相关资源
    最近更新 更多