Vimでタブサイズを変更するにはどうすればよいですか?


172

CSSにセレクターを追加しEnterてプロパティを定義するたびに、セレクターは次のようになります。

#selector {
        property: value;
}

(8スペースのタブ)

Vimを次のように構成するにはどうすればよいですか。

#selector {
    property: value;
}

(4スペースのタブ)


4
4つのスペース幅の1つのタブが必要ですか?4つのスペース?または、1スペース幅の4つのタブ?それらは異なるものであり、あなたは明確ではありません。いずれの場合も、:he ts、:he sw、および:he expandtを読むことから始めます
アベイヤ

回答:


102

zoulの答えを拡張する:

特定のファイルタイプを編集するときに特定の設定を使用するようにVimを設定する場合は、オートコマンドを使用する必要があります。

autocmd Filetype css setlocal tabstop=4

これにより、タブが4つのスペースとして表示されるようになります。設定expandtabすると、tabstopタブを押すと、Vimは実際にスペース(スペースの数はによって制御されます)を挿入します。softtabstopバックスペースを適切に機能させるために使用することもできます(つまり、常に1文字ずつ削除するのではなく、タブを使用する場合にインデントを減らします)。

物事を設定する方法のように完全に教育を受けて意思決定を行うためには、上のVimのドキュメントを読む必要があるでしょうtabstopshiftwidthsofttabstopexpandtab。最も興味深いビットはexpandtab:help 'expandtab)の下にあります:

Vimでタブを使用する主な方法は4つあります。

  1. 「tabstop」を常に8に保ち、「softtabstop」と「shiftwidth」を4(または3または好きなもの)に設定し、「noexpandtab」を使用します。その後、Vimはタブとスペースを組み合わせて使用​​しますが、入力すると、4(または3)文字ごとにタブが表示されるように動作します。

  2. 「tabstop」と「shiftwidth」を好きなように設定し、「expandtab」を使用します。この方法では、常にスペースを挿入します。'tabstop'が変更されても、フォーマットがめちゃくちゃになることはありません。

  3. 「tabstop」と「shiftwidth」を好きなように設定し、|モードライン|を使用します ファイルを再度編集するときにこれらの値を設定します。Vimを使用してファイルを編集する場合にのみ機能します。

  4. 「tabstop」と「shiftwidth」を常に同じ値に設定し、「noexpandtab」を設定します。これは、人々が使用するすべてのタブストップ設定で(最初のインデントのみ)機能するはずです。ただし、これを行う場合は、最初の非空白文字の後にタブをスペースとして挿入するとよいでしょう。そうしないと、 'tabstop'が変更されたときに、整列されたコメントが誤ったものになります。


また、後で気が変わる可能性についてあまり気にしないでください...参照してください:help retab(!バリアントを確認してください)。
のMichałMarczyk

autocmdの使用は.vimrcの使用を補完するものですか?
Josh Desmond

224
:set tabstop=4
:set shiftwidth=4
:set expandtab

これにより、タブ文字の代わりに4つのスペースが挿入されます。スペースはもう少し「安定」しています。つまり、スペースでインデントされたテキストは、ブラウザや他のアプリケーションで同じように表示されます。


83
はい。ただし、タブはセマンティックです(各タブはインデントの1つの層を意味します)一方で、スペースは純粋に表現です。言い換えると、タブを使用すると、コードを表示している他の人が快適に表示できる幅で表示できますが、スペースではこれを許可できません。
Kプライム

11
なお、ご希望の場合は「>」「<」と同じ距離にテキストを移動するには、タブ -key、あなたは、単にすることができ:set shiftwidth=0、これはあなたが常にそれを一致させたいというのvimに伝えますので、あなたのvimrcでと、永遠にそれを忘れtabstop
SeldomNeedy 2017

132

1つのセッションを変更するには、次のコマンドを使用します。

:set tabstop=4

変更を永続的にするには、~/.vimrcまたはに追加し~/.vim/vimrcます。

set tabstop=4

これは、CSSだけでなく、すべてのファイルに影響します。cssファイルのみに影響を与えるには:

autocmd Filetype css setlocal tabstop=4

ミハウの答えで述べたように。


2
タブを4つのスペースとして機能させる場合は、@ Zoul回答の他の行も.vimrcに追加する必要があります。つまり、「set shiftwidth = 4」と「set expandtab」を.vimrcにも追加します。
qartal 2017年

7
質問は「Vimでタブサイズを変更するにはどうすればよいですか?」
キース

これが私のやり方です。そして確実にするために ~/.vimrc、常にバックアップされ、私は通常私のDropboxフォルダ内のファイルを保存し、デスクトップにSYMのリンクを作成しますln -s /home/myfolder/Dropbox/.vimrc ~
enchance

41

このページの回答のいくつかは、説明されている問題に対する「使い捨て」の修正です。つまり、次回vimでドキュメントを開いたときに、以前のタブ設定に戻ります。

タブ設定を永続的に変更することに関心がある場合:

  • .vimrcを見つけて開く- 手順はこちら
  • 次の行を追加します:(詳細はこちら

     set tabstop=4
     set shiftwidth=4
     set expandtab
    
  • 次に、ファイルを保存してテストします


11
これにより、タブではなくスペースが挿入されます。
超新星

5
@Supernovahタブを取得するために、「expandtab」を削除できます
kommradHomer

28

vimへのワンライナーとして:

:set tabstop=4 shiftwidth=4 expandtab

以下のために永久的なセットアップ、これらの行を追加します。〜/ .vimrcと

set tabstop=4
set shiftwidth=4
set expandtab

6

更新

特定のプロジェクトで作業している場合は、editorconfigを使用することを強くお勧めします

.editorconfigリポジトリ全体の各ファイルタイプに使用するインデントを定義するリポジトリのルートでファイルを定義できます。

例えば:

root = true

[*.css]
charset = utf-8
indent_style = space
indent_size = 4

[*.js]
charset = utf-8
indent_style = space
indent_size = 2

開いているファイルの構成ファイルに従ってvimを自動的に構成するvimプラグインがあります。

その上、.editorconfigファイルは他の多くのIDEおよびエディターで自動的にサポートされるため、異なる環境のユーザー間でのコラボレーションに最適なオプションです。

元の回答

サイズを頻繁に変更する必要があり、これを特定のファイルタイプにバインドしたくない場合は、.vimrcファイルに事前定義されたコマンドを使用して、設定をすばやく切り替えることができます。

nmap <leader>t :set expandtab tabstop=4 shiftwidth=4 softtabstop=4<CR>
nmap <leader>m :set expandtab tabstop=2 shiftwidth=2 softtabstop=2<CR>

これにより、サイズの2つの異なるセットがキー\ tおよび\ mにマップされます。これを任意のキーに再バインドできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.