Vim 将选项卡重新定义为4个空格

Vim 将选项卡重新定义为4个空格,vim,Vim,我当前的设置假定为8个空格;我怎样才能重新定义它呢?这取决于你的意思。您希望文件中的实际制表符显示为4个空格宽,还是“制表符”实际上是指通过按制表键生成的缩进,这将导致文件中的每个“制表符”都包含(最多)4个空格字符 根据您的回答,请选择以下选项之一: 设置应适用于您: 对于显示为4空格宽的制表符: set tabstop=4 如果您在源代码中使用实际制表符,您可能还需要这些设置(这些实际上是默认设置,但您可能需要防御性地进行设置): 最后,如果希望缩进对应于单个选项卡,还应使用: set

我当前的设置假定为8个空格;我怎样才能重新定义它呢?

这取决于你的意思。您希望文件中的实际制表符显示为4个空格宽,还是“制表符”实际上是指通过按制表键生成的缩进,这将导致文件中的每个“制表符”都包含(最多)4个空格字符

根据您的回答,请选择以下选项之一: 设置应适用于您:

  • 对于显示为4空格宽的制表符

    set tabstop=4
    
    如果您在源代码中使用实际制表符,您可能还需要这些设置(这些实际上是默认设置,但您可能需要防御性地进行设置):

    最后,如果希望缩进对应于单个选项卡,还应使用:

    set shiftwidth=4
    
  • 对于由4个空格字符组成但使用tab键输入的缩进:

    set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
    
要使上述设置永久化,请添加 将这些行添加到您的帐户。

如果您需要进行调整,或者只是想了解这些选项的含义,下面是每个选项的详细说明:

tabstop
以“空格”度量的硬制表符的宽度——实际上是实际制表符字符的(最大)宽度

shiftwidth

“缩进”的大小。它也以空格表示,因此如果代码基缩进了制表符,那么您希望
shiftwidth
等于制表符的数量乘以
tabstop
。这也被
=
等东西所使用,要为当前用户永久性地定义它,请创建(或编辑)
.vimrc
文件:

$ vim ~/.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
然后,将下面的配置粘贴到文件中。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

请参见vim modeline的缩写:

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

我将其复制并粘贴到我的.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
前两个设置意味着当我按Tab键时,我得到4个空格。 第三个设置意味着当我执行
V>
(即视觉和缩进)时,我也会得到4个空格


虽然没有公认的答案那么全面,但它可能会帮助那些只想复制和粘贴某些内容的人。

将您所需的设置放入~/.vimrc文件中——有关一些指导原则和最佳做法,请参阅下文

Vim中有四种主要的选项卡使用方式:

  • 始终将“tabstop”设置为8,将“softtabstop”和“shiftwidth”设置为4(或3或任何您喜欢的值),并使用“noexpandtab”。然后Vim将混合使用制表符和空格,但键入和将表现为每4(或3)个字符出现一个制表符

    注意:将“tabstop”设置为8以外的任何其他值都会使文件在许多地方出现错误(例如,打印文件时)

  • 将“tabstop”和“shiftwidth”设置为您喜欢的值,并使用“expandtab”。这样,您将始终插入空格。更改“tabstop”时,格式将永远不会混乱

  • 将“tabstop”和“shiftwidth”设置为您喜欢的值,并在再次编辑文件时使用| modeline |设置这些值。仅在使用Vim编辑文件时有效

  • 始终将“tabstop”和“shiftwidth”设置为相同的值,并将“noexpandtab”设置为相同的值。然后,对于人们使用的任何tabstop设置,这都应该有效(仅适用于初始缩进)。如果您这样做的话,在第一个非空的标签后面插入空格可能会更好。更改“tabstop”时,否则对齐的注释将是错误的

  • 资料来源:

    • :帮助选项卡停止
    添加行
    设置ts=4


    每个用户的
    ~/.vimrc
    文件

    /etc/vimrc
    文件用于系统范围

    还有一件事,请使用
    :重新标记
    将现有的选项卡转换为空间
    

    很少有设置定义是使用空格还是制表符

    下面是一些可以在
    ~/.vimrc
    文件中定义的方便函数:

    $ vim ~/.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
    
    要按文件扩展名使用它,可以使用以下语法(添加到
    .vimrc
    ):

    另见:


    以下是Wikia的另一个片段,可用于:

    “虚拟选项卡停止使用空格
    设置shiftwidth=4
    设置softtabstop=4
    设置扩展选项卡
    “允许在本地模式和默认模式之间切换
    函数TabToggle()
    if&expandtab
    设置shiftwidth=8
    设置softtabstop=0
    设置noexpandtab
    其他的
    设置shiftwidth=4
    设置softtabstop=4
    设置扩展选项卡
    恩迪夫
    端功能
    nmap mz:执行TabToggle()'z
    

    它允许每个选项卡使用4个空格,并映射到F9以切换设置。

    My basic~/.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 >> 
    
    所有用户的永久性(当您单独在服务器上时):

    在配置文件中追加该设置。
    通常在新服务器上
    apt获得purge nano mc
    和所有其他功能以节省您的时间。否则,您将在
    git
    crontab
    等中重新定义编辑器。

    确保
    vartabstop
    未设置

    set vartabstop=
    
    tabstop
    设置为4

    set tabstop=4
    

    确保makefile始终使用硬制表符也很重要,否则构建将失败!我已经展示了如何在@Undefined时,这是系统vim设置<代码>~/.vimrc
    是用户的vim设置。大多数人将系统设置放在一边,只编辑用户设置。请注意,
    ~/.vimrc
    在大多数系统上创建之前将不存在。Vim用户请注意
    设置softtabstop=4
    功能!我厌倦了用
    less
    或除
    vim
    之外的任何其他编辑器来阅读代码,结果却看到奇怪的缩进,因为您将tab重新定义为任意数量的空格(即使系统的其他部分不这么认为)!:-)有人能帮我理解为什么这个答案说对包含4个空格的缩进使用
    tabstop=8
    ?我找不到它
    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
    
    set vartabstop=
    
    set tabstop=4