現在の設定では8つのスペースを想定しています。どうすれば再定義できますか?
現在の設定では8つのスペースを想定しています。どうすれば再定義できますか?
回答:
それはあなたが何を意味するかによる。ファイル内の実際のタブ文字を4スペース幅で表示しますか、それとも「タブ」でインデントを意味しますかはタブキーを押して生成され入力する各「タブ」?
答えに応じて、次の設定セットのいずれかが機能します。
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(eg )を参照してください。:help 'optionname'
:help 'tabstop'
~/.vimrc
ユーザーのvim設定です。ほとんどの人は、システム設定をそのままにして、ユーザー設定を編集するだけです。~/.vimrc
ほとんどのシステムで作成するまで存在しないことに注意してください。
set softtabstop=4
機能に注意してください!(システムの残りの部分で別の方法が考えられている場合でも)タブを任意の数のスペースに再定義したため、奇妙なインデントを確認するためにless
、またはを除く他のエディターでコードを読み込もうとすることにうんざりしていますvim
!:-)
tabstop=8
が4つのスペースで構成されるインデントに使用するように言っている理由を理解するのを手伝ってくれませんか?各種設定の説明を読んでも理由がわかりませんでした。別の答えはtabstop=4
、私にはもう少し理にかなっている使用することです。
tabstop
オプションは、ハードタブ文字の幅を制御します。インデントを4幅の単一のタブ文字ではなく4つのスペース文字で構成する場合、タブ文字の幅は問題ではありません-のようなものです。実際には、タブ文字が適切なインデントになりすます可能性を減らすために、タブ文字の幅をインデントの幅とは異なるようにする必要があります。(list
+ expandtab
ここでも役立ちます)また、8文字幅のタブは「標準」です。ターミナル、Python、およびその他の多くのツールは、デフォルトで8文字幅のタブに設定されています。
これを現在のユーザーに対して永続的に定義するには、.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
スペースとタブのどちらを使用するかを定義する設定はほとんどありません。
~/.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()
参照:タブからスペースへの変換。
タブとスペースを切り替えるために使用できるWikiaの別のスニペットを次に示します。
" virtual tabstops using spaces
set shiftwidth=4
set softtabstop=4
set 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、設定を切り替えるためのマッピングを使用できます。
これをコピーして.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つのスペースも取得することを意味します。
受け入れられた回答ほど包括的ではありませんが、何かをコピーして貼り付けたいだけの人には役立つかもしれません。
〜/ .vimrcに希望の設定を入れますファイルに -ガイドラインとベストプラクティスについては、以下を参照してください。
Vimでタブを使用するには、主に4つの方法があります。
「tabstop」を常に8に保ち、「softtabstop」と「shiftwidth」を4(または3または好きなもの)に設定し、「noexpandtab」を使用します。その後、Vimはタブとスペースの組み合わせを使用しますが、入力すると、4(または3)文字ごとにタブが表示されるように動作します。
注: 'tabstop'を8以外の値に設定すると、多くの場所(たとえば、印刷時)でファイルが正しく表示されない場合があります。
「tabstop」と「shiftwidth」を好きなように設定し、「expandtab」を使用します。このようにして、常にスペースを挿入します。'tabstop'が変更されても、フォーマットがめちゃくちゃになることはありません。
「tabstop」と「shiftwidth」を好きなように設定し、|モードライン|を使用します ファイルを再度編集するときにこれらの値を設定します。Vimを使用してファイルを編集する場合にのみ機能します。
「tabstop」と「shiftwidth」を常に同じ値に設定し、「noexpandtab」を設定します。これは、人々が使用するすべてのタブストップ設定で(最初のインデントのみ)機能するはずです。ただし、これを行う場合は、最初の非空白文字の後にタブをスペースとして挿入するとよいでしょう。そうしないと、 'tabstop'が変更されたときに位置合わせされたコメントが間違ってしまいます。
ソース:
:help tabstop
:help tabstop
vimであることに注意してください。
もう1つ、
:retab
既存のものtab
をhttp://vim.wikia.com/wiki/Converting_tabs_to_spacesに変換するために使用しますspaces
:set sw=4
VIエディターの習得を参照してください。
ユーザーごとのファイル
またはシステム全体のファイルに行
set ts=4
を追加し
~/.vimrc
ます
/etc/vimrc
コメント付きの基本的な〜/ .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 >>
すべてのユーザーに対して永続的(サーバー上で一人でいる場合):
# echo "set tabstop=4" >> /etc/vim/vimrc
通常、新しいサーバーapt-get purge nano mc
と他のすべてのサーバーで時間を節約します。それ以外の場合はgit
、crontab
などでエディターを再定義します
F10
れているかを確認することはできませんnano
が、常にsaveを使用していくつかのトリックを実行します(おそらくF10
解決策です)。またはそれは動作しませんscreen
か?思い出せません、ただ嫌いです)