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

标签 vim

最近在学习go lang。

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

package main

import "fmt"

func main () {
}

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

我知道经过几个小时的学习 vim 脚本语言后,我可以弄清楚。但我认为这对于许多缺乏经验的 vim 用户来说是一个常见的需求,而且我在 Stackoverflow 上没有找到类似的问题。所以我就问了这个问题。

最佳答案

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

首先,创建一个文件(例如 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

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

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

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

编辑: -1指示插入文件内容的位置( :.read file 将其插入到当前 ( . ) 行之后。 -1 将其插入到当前行 -1 之后。所以实际上,它是插入它光标所在位置并向下移动包括您所在行在内的行。有关详细信息,您可以阅读 :help range

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

关于vim - 如何编写vim函数将模板文本粘贴到当前文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55469524/

相关文章:

Vim findfile 函数用法?

vim - 在 vim-latex 中编译后如何禁用跳转到警告位置?

php - 设置快捷方式以替换 VIM 中轻松选择的字符串

vim - 如何在 Vim 中对两行 block 进行排序?

vim - 如何使映射的键恢复为默认行为

vim - 如何一次在整个文件中折叠到 Vim 中的特定级别?

macros - 如何在不添加 <LF> 的情况下将以 <CR> 结尾的字符串分配给 vimscript 变量?

vim - 防止在 NERDTree 窗口中模糊查找器加载文件

vim - 在 Sublime Text 复古模式下的选项卡之间切换

Vim 括号和分号突出显示