web-dev-qa-db-ja.com

タブを4つのスペースとして再定義

私の現在の設定は8つのスペースを想定しています。再定義する方法

969
Ricky

それはあなたが何を意味するのかに依存します。ファイルの実際のタブ文字を 表示される 4スペースの幅にしますか、それともタブキーを押すことによって生成される インデント を意味するのですか。入力する各「タブ」に(最大)4つのスペース文字がありますか?

あなたの答えに応じて、以下の設定のセットの1つがあなたのために働くはずです:

  • 4文字幅のタブ文字の場合

    set tabstop=4
    

    ソースコードで実際のタブ文字を使用している場合は、おそらくこれらの設定も必要です(これらは実際にはデフォルトですが、防御的に設定することをお勧めします)。

    set softtabstop=0 noexpandtab
    

    最後に、インデントを単一のタブに対応させる場合は、次のものも使用する必要があります。

    set shiftwidth=4
    
  • 4つのスペース文字からなるインデント がタブキーで入力された場合

    set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
    

上記の設定を恒久的なものにするには、これらの行を vimrc に追加してください。

調整が必要な場合、またはこれらのオプションがすべて何を意味するのかを簡単に理解したい場合は、以下に各オプションの意味の内訳を示します。

tabstop

「スペース」で測定されたハードタブストップの幅 - 実際のタブ文字の(最大)幅。

shiftwidth

「インデント」のサイズスペースでも測定されるので、コードベースがタブ文字でインデントする場合は、shiftwidthをタブ文字の数にtabstopを乗じたものにします。これは=>および<コマンドのようなものによっても使用されます。

softtabstop

これをtabstop以外のゼロ以外の値に設定すると、(挿入モードでは)タブキーはスペース(および場合によってはタブ)の組み合わせを シミュレート この幅のタブ位置に挿入します。

expandtab

これを有効にすると、(挿入モードの)タブキーはタブ文字の代わりにスペースを挿入します。これはretabコマンドの動作にも影響します。

smarttab

これを有効にすると、カーソルが行の先頭にあるときに(挿入モードで)タブキーがスペースまたはタブを挿入して、次のタブストップの次のインデントに移動します(つまり、先行する文字だけが空白です)。

これらの詳細については、vimの:help 'optionname'を参照してください(例::help 'tabstop'

1436

現在のユーザーに対して永続的にこれを定義するには、.vimrcファイルを作成(または編集)します。

$ vim ~/.vimrc

次に、以下の設定をファイルに貼り付けます。 Vimが再起動されると、タブの設定が適用されます。

set tabstop=4       " The width of a TAB is set to 4.
                    " Still it is a \t. It is just that
                    " Vim will interpret it to be having
                    " a width of 4.

set shiftwidth=4    " Indents will have a width of 4

set softtabstop=4   " Sets the number of columns for a TAB

set expandtab       " Expand TABs to spaces
702

またはvim modelineの短縮形:

vim :set ts=4 sw=4 sts=4 et :
51
zen

これをコピーして.vimrcファイルに貼り付けました。

" size of a hard tabstop
set tabstop=4

" always uses spaces instead of tab characters
set expandtab

" size of an "indent"
set shiftwidth=4

最初の2つの設定は、Tabキーを押すと4つのスペースが表示されることを意味します。 3番目の設定は、私がV>を実行すると(つまりビジュアルとインデント)、4つのスペースも得られることを意味します。

一般に認められている答えほど包括的ではありませんが、何かをコピーして貼り付けたいだけの人にとっては役に立つかもしれません。

23
Snowcrash

スペースまたはタブを使用するかどうかを定義する設定はほとんどありません。

だからここにあなたの~/.vimrcファイルで定義することができる便利な関数があります:

function! UseTabs()
  set tabstop=4     " Size of a hard tabstop (ts).
  set shiftwidth=4  " Size of an indentation (sw).
  set noexpandtab   " Always uses tabs instead of space characters (noet).
  set autoindent    " Copy indent from current line when starting a new line (ai).
endfunction

function! UseSpaces()
  set tabstop=2     " Size of a hard tabstop (ts).
  set shiftwidth=2  " Size of an indentation (sw).
  set expandtab     " Always uses spaces instead of tab characters (et).
  set softtabstop=0 " Number of spaces a <Tab> counts for. When 0, featuer is off (sts).
  set autoindent    " Copy indent from current line when starting a new line.
  set smarttab      " Inserts blanks on a <Tab> key (as per sw, ts and sts).
endfunction

使用法:

:call UseTabs()
:call UseSpaces()

ファイル拡張子ごとに使用するには、次の構文を使用できます(.vimrcに追加)。

au! BufWrite,FileWritePre *.module,*.install call UseSpaces()

タブをスペースに変換する も参照してください。


これはウィキアからの別のスニペットです。これは タブとスペースの切り替え

" virtual tabstops using spaces
set shiftwidth=4
set softtabstop=4
expandtab
" allow toggling between local and default mode
function TabToggle()
  if &expandtab
    set shiftwidth=8
    set softtabstop=0
    set noexpandtab
  else
    set shiftwidth=4
    set softtabstop=4
    set expandtab
  endif
endfunction
nmap <F9> mz:execute TabToggle()<CR>'z

タブごとに4つのスペースを使用して、 F9 設定を切り替えます。

13
kenorb

必要な設定を 〜/ .vimrc ファイルに入れます - いくつかのガイドラインとベストプラクティスについては以下を参照してください。

Vimでタブを使うには4つの主な方法があります。

  1. 'tabstop'を常に8に保ち、 'softtabstop'と 'shiftwidth'を4(または3か好きなもの)に設定して 'noexpandtab'を使用してください。そうするとVimはタブとスペースを混ぜて使うだろうが、タイプしてタブが4(または3)文字ごとに現れるように振る舞う。

    注: 'tabstop'を8以外の値に設定すると、多くの場所(たとえば印刷時)でファイルが正しく表示されなくなる可能性があります。

  2. 'tabstop'と 'shiftwidth'を好きなように設定し、 'expandtab'を使ってください。このようにあなたはいつもスペースを挿入するでしょう。 'tabstop'が変更されても書式設定が崩れることはありません。

  3. 'tabstop'と 'shiftwidth'を好きなように設定し、| modeline |を使用してください。ファイルを再度編集するときにこれらの値を設定します。 Vimを使ってファイルを編集しているときにのみ機能します。

  4. 必ず 'tabstop'と 'shiftwidth'を同じ値に、 'noexpandtab'を設定してください。これは、人々が使用するタブストップ設定に対して(最初のインデントのみ)機能するはずです。あなたがこれをするならば、スペースとして挿入される最初の非空白の後にタブを持つのはいいかもしれません。そうでなければ、 'tabstop'が変更されたときに整列されたコメントは間違っているでしょう。

ソース:

13
ElasticThoughts

もう一つ、使い方
:retab
既存のtabspaceshttp://vim.wikia.com/wiki/Converting_tabs_to_spaces に変換する

9
DawnSong

行を追加
set ts=4

~/.vimrcファイル(ユーザーごと)
または
システム全体の/etc/vimrcファイル

6
5
Amarghosh

コメント付きの私の基本的な〜/ .vimrc:

set number " show line number                                                                                           
set tabstop=2 " set display width of tab; 1 tab = x space with                                                           
set expandtab " transform tab to x space (x is tabstop)                                                               
set autoindent " auto indent; new line with number of space at the beginning same as previous                                                                      
set shiftwidth=2 " number of space append to lines when type >> 
0