vim中的自动第一行

时间:2016-09-19 19:46:58

标签: vim

每当我创建具有特定扩展名的文件时,是否可以让vim在第一行(或几行的第一行)自动写入内容?

例如(这只是一个例子)如果我创建.txt文件,我希望vim写" Hello"在第一行。

有可能吗?如果是,怎么样?

3 个答案:

答案 0 :(得分:4)

是的,您可以使用autocommands实现此目的。自动命令的一般结构是

au event filetype command

在您的具体情况下,您需要

au BufNewFile *.txt normal iHello

说明:

au            "Define a new autocommand
BufNewFile    "When you create a new file
*.txt         "With the extension '.txt'
normal iHello "Execute the command 'normal iHello', which is like typing 'iHello' manually

答案 1 :(得分:3)

docs了解如何在:h skeleton中执行此操作。基本上,您只需要BufNewFile中的.vimrc自动命令。

文档假设您正在从文件中读取您的初始内容。因此,对于您的示例,假设skeleton.txt包含文本" Hello":

autocmd BufNewFile *.txt 0r ~/vim/skeleton.txt

或者,如果您的第一行相对简单,只需输入插入模式并添加所需文本即可对其进行硬编码。

au BufNewFile *.txt normal iHello

来自vi.stackexchange的

This answer提供了几个调用函数的示例,并且有点复杂。

答案 2 :(得分:0)

在我的情况下,对于bash文件,我在〜/ .vimrc

上有这个
augroup sh
  au BufNewFile *.sh 0r ~/.vim/skel/template.sh
 "au BufWritePost *.sh,*.pl,*.py,*.cgi :silent !chmod a+x <afile>
augroup end

如果我创建一个新文件“BufNewFile”vim在第0行“0”打开,读取“r”文件template.sh的内容,在该文件中我可以放在任何我想要的地方。

如果我解开第二行,删除“开始时我也会自动更改文件权限