#前言

在看书的时候,会写一些例子的代码,然后配上运行结果,不过markdown格式的code块没有文件名什么的,不好和命令行结果对应,每个都手动加不优雅,于是找了一些vim的文档,配置了一下,记录如下。

#头文件模板

go语言的为例,我自己的模板如下:

1
2
3
4
5
6
7
// -------------------------------------------
// Created By : Onns onns@onns.xyz
// File Name :
// Purpose :
// Creation Date :
// Last Modified :
// -------------------------------------------

保存为/Users/onns/Documents/code/config/vim/header_template

#~/.vimrc

就像bash运行时会加载~/.bashrc文件一样,vim在运行的时候会加载~/.vimrc文件,没有的话直接创建即可:

1
2
3
4
5
6
7
$ vi ~/.vimrc
autocmd bufnewfile *.go 0r /Users/onns/Documents/code/config/vim/header_template
autocmd bufnewfile *.go exe "1," . 7 . "g/File Name :.*/s//File Name : " .expand("%")
autocmd bufnewfile *.go exe "1," . 7 . "g/Creation Date :.*/s//Creation Date : " .strftime("%Y-%m-%d %H:%M:%S")
autocmd Bufwritepre,filewritepre *.go execute "normal ma"
autocmd Bufwritepre,filewritepre *.go exe "1," . 7 . "g/Last Modified :.*/s/Last Modified :.*/Last Modified : " .strftime("%Y-%m-%d %H:%M:%S")
autocmd bufwritepost,filewritepost *.go execute "normal `a"

第一行就是加载模板文件的意思,对*.go的文件都会应用这个规则,0r代表从新建文件的第一行开始读入。原教程里0r的位置是so我也不知道什么意思,一直报错,找了别的教程改成0r才过的,有机会再看看这个地方是什么意思吧!
第二行就是把模板里的文件名填入。
第三行就是把模板的创建时间填入。
第四行记录当前的光标位置。
第五行修改修改时间。
第六行还原光标位置。

#效果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// -------------------------------------------
// Created By : Onns onns@onns.xyz
// File Name : 3.10.go
// Purpose :
// Creation Date : 2021-04-14 15:40:40
// Last Modified : 2021-04-14 15:48:43
// -------------------------------------------

package main

import (
"fmt"
"strconv"
)

func main() {
x := 123
y := fmt.Sprintf("%d", x)
z := strconv.Itoa(x)
fmt.Println(y, z)

fmt.Println(strconv.FormatInt(int64(x), 2))

a, _ := strconv.Atoi("123")
fmt.Printf("a type: %T\n", a)
b, _ := strconv.ParseInt("123", 10, 64)
fmt.Printf("b type: %T\n", b)
}

前前后后还是花了一个多小时的,但是记录下来确实没多少东西,还有另一种函数式的写法感觉更通用,毕竟这个写法,换一个后缀都要重新弄= =,有机会再来补。参考链接后面几个就是函数式的写法,可以参考一下。

#参考链接

#TODO

  • so的意思。
  • 通用的函数式写法。