我正在尝试在 Linux(CentOS)中的 VI(VIM)中分配用户命令。
特别是,如果有一个脚本(仅文本)文件涉及下面的pdf列表文件,我想使用“evince”命令查看每个pdf文件,就像linux中的“gf”命令一样。例如,如果我将光标放在pdf列表之一上,那么如果我按下功能键,那么使用“evince”执行光标中列出的文件。
如果我想查看 3.pdf,那么我将光标放在上面,然后按下某个功能键,然后使用 evince 打开该 pdf 文件。我该怎么办?
如何在VI(VIM)中指定用户命令?
答案1
为了自定义 Vim,你首先要手动逐个构建和测试命令。如果你有一个工作序列,你可以轻松地定义映射(由按键[序列]触发,例如F1),或命令(在 Ex 模式下输入,例如:MyCommand
)。
因此,您需要读取当前行并使用它运行系统命令:
- 读取很简单
y$
(您可以使用较低级别getline('.')
来避免破坏默认寄存器,但这是一个可选扩展;首先坚持基础知识)。 - 系统命令是
:! {cmd}
(同样,有一个system()
较低级别的替代方案) - 插入寄存器命令行模式是
<C-r>"
。
(所有这些都可以在优秀的中找到:help
。)完整的命令是(<CR>
是Enter结束命令行的键):
y$:! evince <C-r>"<CR>
如果效果令人满意,您可以将其转换为映射,然后将其放入您的~/.vimrc
:
:nnoremap <F1> y$:! evince <C-r>"<CR>
瞧!如果您想自动前进到下一行,只需j
在末尾添加一个。