假设 Vim 中的当前行包含:
ls /home
Run Code Online (Sandbox Code Playgroud)
(或任何 shell 命令)。因此,将这一行发送到 (bash) shell 并在 Vim 中读取结果的快速方法是什么?并且不使用插件。
最简单的方法是放在:!行首(with I:!),然后yy将该行拉入未命名寄存器,最后使用@"将未命名(")寄存器作为宏调用。对于 vim,这完全等同于键入
:!ls /home
Run Code Online (Sandbox Code Playgroud)
在正常模式下。如果像我一样,你;和:你的.vimrc正常模式切换身边,你要插入一个分号来代替。
可能可以就地更改寄存器,而不是预先添加到实际行。
也可以通过y$拉到行尾(无需上述编辑),然后输入
:!<c-r>"
Run Code Online (Sandbox Code Playgroud)
...(<c-r>意思是Ctrl+ r)这将扩展到
:!ls /home
Run Code Online (Sandbox Code Playgroud)
(或任何你猛拉的命令)。你需要使用y$而不是yy因为否则它会扩展到
:ls /home^M
Run Code Online (Sandbox Code Playgroud)
^M那里代表换行符;不过,这很容易用一个退格键删除。
第二种方法可能会稍微快一点,但是任何涉及Ctrl密钥的东西对我来说似乎都不太像 vim。