Vimでインデントにスペースを使用するかタブを使用するかを自動的に決定する方法は?

Vimでインデントにスペースを使用するかタブを使用するかを自動的に決定する方法は?

時には、タブを使用するスタイルが人気のある他のソースコードを編集することもあります。この場合、リテラルタブを使用する既存のルールを維持したいと思います。

代わりに、自分で作成したファイルとデフォルトのインデントスタイルでスペースを使用するファイルにこの方法を使用したいと思います。

vimでどうすればいいですか?

答え1

~/.vimrcスペース/タブの適切な使用を調整するために、ファイルに次のものを使用できます。

" By default, use spaced tabs.
set expandtab

" Display tabs as 4 spaces wide. When expandtab is set, use 4 spaces.
set shiftwidth=4
set tabstop=4

function TabsOrSpaces()
    " Determines whether to use spaces or tabs on the current buffer.
    if getfsize(bufname("%")) > 256000
        " File is very large, just use the default.
        return
    endif

    let numTabs=len(filter(getbufline(bufname("%"), 1, 250), 'v:val =~ "^\\t"'))
    let numSpaces=len(filter(getbufline(bufname("%"), 1, 250), 'v:val =~ "^ "'))

    if numTabs > numSpaces
        setlocal noexpandtab
    endif
endfunction

" Call the function after opening a buffer
autocmd BufReadPost * call TabsOrSpaces()

答え2

たとえば、さまざまなプラグインがあります(私のプラグインから始めます):

  • 私のインデント一貫性警察バッファのインデントを確認し、インデントの幅と使用された方法を分析します。衝突がある場合、またはタブとスペースの間違った組み合わせが見つかった場合は、警告を表示し、フレンドリーな警察官のように違反者を見つけるのに役立ちます。 >
  • インデントを探すロードされたバッファを検索し、適切なインデント設定を構成するPythonスクリプトとVimプラグイン。
  • yaifa.vim上記のvimscriptポートです。
  • インデントの検出.vim作成者:Ciaran McCreeshインデント設定を自動的に検出しようとしています
  • インデント推測detectorindent.vimベース
  • インデントの検出.vim 作成者:Eric Van Dewoestine簡単な検出を実行し、ファイルの仕様に従ってデフォルト値を設定できます。
  • indent.vimと一致タブ、2、4のスペースインデントを検出し、それに応じてインデント設定を調整します。
  • ビーム探偵作成者:Tim Popeは自動的に「shiftwidth」と「tabstop」を経験的に調整するか(エラーや一貫性のないインデントを確認せずに単純なサンプリングを介して)、または同じ種類の他のファイルを確認して調整します。
  • ファイルスタイル「expandtab」を設定すると、タブ、末尾の空白、および「textwidth」より長い行が強調表示されますが、実際にはインデントの一貫性を確認しません。
  • 展示スペース各バッファ/ファイル形式のインデント内のスペースを強調表示します。
  • 圧入センサーファイルを開いたり書き込んだりすると、タブ/スペースの混在インデントに関する警告が表示され、Vimのオプションが自動的に調整されます。

答え3

以前にリリースされたプラグインの1つは、一般的な使用に適している必要があります。

ただし、共有プロジェクトを開発する場合、人々は以下を使用できます。その他編集して使用することをお勧めします。.editorconfigすべてのエディタ間で構成を共有するファイルです。たとえば、

[*]
indent_style = space
indent_size = 4
end_of_line = lf
insert_final_newline = true

これはかなりよく知られている標準です。一部のエディタはデフォルトでそれを尊重しますが、他のエディタにはプラグインが必要です。これはVim用のプラグインです:

https://github.com/editorconfig/editorconfig-vim

このプラグインをインストールした後、他の人のプロジェクトに参加でき、私の編集者は新しいファイルでもすぐに書式設定規則を尊重することに気づきました。

ファイルを作成すると、.editorconfig他の人が自分のプロジェクトを簡単に開くことができます。

関連情報