1

ですから、Python用の.vimrc構成にはかなり満足しています。ただし、スクリプトの.pyサフィックスを省略し始め、vimは編集中のファイルがPythonファイルであることを認識していません。

明確化:vimは、「python」を報告する:echo&filetypeを使用してpythonファイルを編集していることを認識していることを確認しました。

したがって、本当の問題は、現在この目的でファイル拡張子を使用しているときに、Python固有の動作をどのように割り当てるかです(以下を参照)。それはファイルタイプで駆動できますか?両方が必要ですか?

接尾辞の欠如に関して-私のコードは、これが一般的であるUNIXホストのみを対象としています。後で実装を仮想的に変更できるように、実装の詳細を非表示にするのが好きです。

これが私の.vimrcの一部です:

au BufRead,BufNewFile *py,*pyw   set tabstop=4
au BufRead,BufNewFile *.py,*pyw  set shiftwidth=4
au BufRead,BufNewFile *.py,*.pyw set expandtab
au BufRead,BufNewFile *.py,*pyw  set softtabstop=4
au BufRead,BufNewFile *.py,*.pyw set textwidth=79
4

1 に答える 1

1

拡張子のないファイルに対してPython固有の設定を有効にするための鍵は、filetypeプラグインを有効にすることと、オプションで、Pythonファイルがどのように見えるかをVimに教えることです。

それらのファイルを変更します。

$ HOME / .vimrc

Vimでファイルタイププラグインを有効にします。これにより、言語固有の設定をディレクトリに入れることができます$HOME/.vim/ftplugin/。これらの設定は、ファイル拡張子ではなく、ファイルタイプに基づいています。

filetype plugin on
syntax on

$ HOME / .vim / scripts.vim

Pythonファイルがどのように見えるかをVimに教えてください。この例では、Vimはpython、最初の行のどこかに文字列が含まれている場合、ファイルをPythonスクリプトとして扱います。ここで正規表現を簡単に適応させて、より高度なチェックを組み込むことができます。

did_filetype()最初の行に.py拡張子が付いていないファイルは、python引き続きPythonスクリプトと見なされることに注意してください。

if did_filetype()
    finish
endif
if getline(1) =~ '.*python.*'
    setfiletype python
endif

$ HOME / .vim / ftplugin / python.vim

最後に、Python固有のすべての設定をここに配置します。

setlocal tabstop=4
setlocal shiftwidth=4
setlocal expandtab
setlocal softtabstop=4
setlocal textwidth=79

より詳しい情報:

たとえば、またはのscripts.vimように、ファイルに標準のpythonヘッダーがある場合は、の変更は必要ありません。#!/usr/bin/python#!/usr/bin/env python

このヒューリスティックはで実行されてい/usr/share/vim/vim73/scripts.vimます(Vimのバージョンとインストール場所によってパスが異なる場合があります)。

于 2013-03-08T23:05:56.537 に答える