我正在学习vim,并且我已经成功设置了.vimrc文件,以便每当我制作一个新的python .py文件时,适当的shebang和标头会自动生成。是的我!
但是,当构建终端管道时,我并不总是喜欢将.py扩展包含在我管道上的程序中。因此,Shebang不会自动生成。悲伤!
没有重复我为AutoCMD编写的内容(这是我学习的方式,这是我的编写很多(,我可以在插入模式时映射像" pyhead"之类的字符串,或者创建与AutoCMD绑定的宏当我选择不使用.py扩展程序时,可以轻松实现我的shebangbang?我觉得好像已经存在的简单地图应该阻止杂乱无章的.vimrc。我已经将AutoCMD放在AUGROUP中,如下所示:
augroup Shebang
autocmd BufNewFile *.py 0put ="#!/usr/bin/env python<nl>...
...# -*-coding: utf-8 -*-
...<nl><nl>"
...|put ='#'.expand('%:t')
...|put ="#<My_NAME>"
...|put ='#LAST UPDATED: '.strftime('%m-%d-%Y')|$
augroup end
为了清楚起见,AutoCMD都在一行上,但是我包含了三个指示延续的点(因此您无需滚动(。如果这是一个愚蠢的请求,并且有一个简单的答案,请谴责。谢谢!
您可以将长:put
命令提取到 function ,然后从:autocmd
中的:call
提取。
function! InsertPythonShebang()
0put =...
endfunction
autocmd BufNewFile *.py call InsertPythonShebang()
您可以在映射中重复使用该功能:
nnoremap <Leader>py :call InsertPythonShebang()<CR>
或自定义命令:
command! -bar PyBang call InsertPythonShebang()
您也可能做出有关插入特殊关键字的反应的建议,但我不会提供解决方案,因为我认为这是不合时宜的,并且实现将更多地参与其中(尤其是如果您想重新使用它:put
,而不仅仅是生成的文本(。还要注意,有几个摘要插件提供相似的功能(但再次使用:autocmd
的同一字符串将是一个挑战(。
我建议在空缓冲区上设置python
Filetype时有一个触发因素。为了具有语法突出显示,无论如何您都需要:setf python
。(内置的FILETYPE检测需要.py
文件扩展名或现有的Shebang线才能工作。CATCH-22。(
autocmd FileType python if line('$') == 1 && empty(getline(1)) | call InsertPythonShebang() | endif