每当我创建具有特定扩展名的文件时,是否可以让vim在第一行(或几行的第一行)自动写入内容?
例如(这只是一个例子)如果我创建.txt文件,我希望vim写" Hello"在第一行。
有可能吗?如果是,怎么样?
答案 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
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的内容,在该文件中我可以放在任何我想要的地方。
如果我解开第二行,删除“开始时我也会自动更改文件权限