通过映射到autoCMD来自动完成Python Shebang(在非.py文件中)



我正在学习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

相关内容

  • 没有找到相关文章

最新更新