1. ホーム
  2. vim

vimのタブとスペース

2023-11-11 21:11:59

質問

autoindent がオンのとき、vim がスペースをタブに置き換えるのを防ぐにはどうしたらいいですか?

例:行頭に2つのタブと7つのスペースがある場合、そして tabstop=3 と入力し、Enterキーを押すと、次の行の先頭に4つのタブと1つのスペースが表示されますが、私はそれを望んでいません...。

どのように解決するのですか?

タブを一切使用しないのが良いかもしれません。

:set expandtab

ファイル中のタブをすべて空白3文字に置き換えたい場合(見た目は tabstop=3 ):

:%s/^I/   /

(ここで ^I TAB 文字)

VIMオンラインヘルプより。

'tabstop' 'ts'      number  (default 8)
        local to buffer
Number of spaces that a <Tab> in the file counts for.  Also see
|:retab| command, and 'softtabstop' option.

Note: Setting 'tabstop' to any other value than 8 can make your file
appear wrong in many places (e.g., when printing it).

There are four main ways to use tabs in Vim:
1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4
   (or 3 or whatever you prefer) and use 'noexpandtab'.  Then Vim
   will use a mix of tabs and spaces, but typing <Tab> and <BS> will
   behave like a tab appears every 4 (or 3) characters.
2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use
   'expandtab'.  This way you will always insert spaces.  The
   formatting will never be messed up when 'tabstop' is changed.
3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a
   |modeline| to set these values when editing the file again.  Only
   works when using Vim to edit the file.
4. Always set 'tabstop' and 'shiftwidth' to the same value, and
   'noexpandtab'.  This should then work (for initial indents only)
   for any tabstop setting that people use.  It might be nice to have
   tabs after the first non-blank inserted as spaces if you do this
   though.  Otherwise aligned comments will be wrong when 'tabstop' is
   changed.