如何编写vim函数将模板文本粘贴到当前文件中?

Zen*_*Zen 3 vim

最近在学习围棋。

我发现在很多情况下,我需要输入以下文本:

package main

import "fmt"

func main () {
}
Run Code Online (Sandbox Code Playgroud)

所以我在想,也许我可以在我的.vimrc里面写一些 vim 函数,它可以在使用 vim 时将模板文本写入当前文件。这可以为我节省很多工作。

我知道经过几个小时的学习 vim 脚本语言后,我可以弄清楚。但我认为这将是许多没有经验的 vim 用户的共同需求,而且我在 Stackoverflow 上没有发现类似的问题。所以我问了这个问题。

pad*_*win 5

您可以按如下方式创建模板:

首先,创建一个文件(例如base.go),该文件将作为您在问题中键入的代码段内的模板(我将模板存储在 中$HOME/.vim/templates/<language>/,因此在您的情况下,它将是$HOME/.vim/templates/go/base.go,但位置实际上取决于您),

然后,在您的 中.vimrc,添加以下映射:

nnoremap <space>t :-1read $HOME/.vim/templates/go/base.go<CR>/{<CR>o
Run Code Online (Sandbox Code Playgroud)

当您space-t在正常模式下按下时,此映射会执行以下操作:

  • 文件的内容$HOME/.vim/templates/go/base.go插入光标所在的位置,
  • 光标移动到开头{
  • 您在括号中处于插入模式。

因此,当您打开一个新的 go 文件时,按space-t它将插入您的模板并将您放在需要开始编码的位置。

编辑: -1指示插入文件内容的位置(:.read file在当前 ( .) 行-1之后插入它。在当前行 -1 之后插入它。如此有效,就是将它插入光标所在的位置并向下移动包括您所在的线路。有关更多信息,您可以阅读:help range

跳转是通过/{<CR>o查找{( /{)的部分完成的,转到它 ( <CR>) 并在 ( o)之后进入插入模式。