如何在VI(VIM)中指定用户命令?

如何在VI(VIM)中指定用户命令?

我正在尝试在 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在末尾添加一个。

相关内容