如何更改 Vim 中的制表符大小?

发布于 2024-08-17 15:31:51 字数 334 浏览 3 评论 0原文

每次我在 CSS 中添加选择器并按 Enter 来定义属性时,它最终都会像这样:

#selector {
        property: value;
}

(8-space tabs)

我如何配置 Vim 使其像这样:

#selector {
    property: value;
}

(4-space标签)

Every time I add a selector in CSS and I press Enter to define the properties it ends up like this:

#selector {
        property: value;
}

(8-space tabs)

How can I configure Vim to make it like this:

#selector {
    property: value;
}

(4-space tabs)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

捶死心动 2024-08-24 15:31:51
:set tabstop=4
:set shiftwidth=4
:set expandtab

这将插入四个空格而不是制表符。空格更“稳定”,这意味着用空格缩进的文本在浏览器和任何其他应用程序中显示相同。

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

This will insert four spaces instead of a tab character. Spaces are a bit more “stable”, meaning that text indented with spaces will show up the same in the browser and any other application.

纵情客 2024-08-24 15:31:51

要对一个会话进行更改,请使用以下命令:

:set tabstop=4

要使更改永久生效,请将其添加到 ~/.vimrc~/.vim/vimrc

set tabstop=4

这将影响所有文件,不仅仅是 css。仅影响 css 文件:

autocmd Filetype css setlocal tabstop=4

Michał 的回答中所述。

To make the change for one session, use this command:

:set tabstop=4

To make the change permanent, add it to ~/.vimrc or ~/.vim/vimrc:

set tabstop=4

This will affect all files, not just css. To only affect css files:

autocmd Filetype css setlocal tabstop=4

as stated in Michał's answer.

月亮邮递员 2024-08-24 15:31:51

扩展zoul的答案

如果你想设置Vim在编辑特定文件类型时使用特定设置,你需要使用自动命令:

autocmd Filetype css setlocal tabstop=4

这将使制表符显示为 4 个空格。设置 expandtab 会导致 Vim 在按下 Tab 时实际插入空格(空格数量由 tabstop 控制);您可能希望使用 softtabstop 使退格键正常工作(即,在使用制表符时减少缩进,而不是总是一次删除一个字符)。

要就如何设置做出充分的决定,您需要阅读有关 tabstopshiftwidthsofttabstop展开选项卡。最有趣的部分位于 expandtab (:help 'expandtab) 下:

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

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

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

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

  4. 始终将“tabstop”和“shiftwidth”设置为相同的值,以及“noexpandtab”。然后,这应该适用于人们使用的任何制表位设置(仅适用于初始缩进)。如果你这样做的话,在第一个非空白之后插入制表符作为空格可能会更好。否则,当'tabstop'改变时,对齐的注释将会出错。

Expanding on zoul's answer:

If you want to setup Vim to use specific settings when editing a particular filetype, you'll want to use autocommands:

autocmd Filetype css setlocal tabstop=4

This will make it so that tabs are displayed as 4 spaces. Setting expandtab will cause Vim to actually insert spaces (the number of them being controlled by tabstop) when you press tab; you might want to use softtabstop to make backspace work properly (that is, reduce indentation when that's what would happen should tabs be used, rather than always delete one char at a time).

To make a fully educated decision as to how to set things up, you'll need to read Vim docs on tabstop, shiftwidth, softtabstop and expandtab. The most interesting bit is found under expandtab (:help 'expandtab):

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 and 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.

琴流音 2024-08-24 15:31:51

作为vim 的一行

:set tabstop=4 shiftwidth=4

对于永久设置,请将这些行添加到~/.vimrc

set tabstop=4
set shiftwidth=4
set expandtab    <-- (optional) 4-spaces instead of Tab indentation

As a one-liner into vim:

:set tabstop=4 shiftwidth=4

For permanent setup, add these lines to ~/.vimrc:

set tabstop=4
set shiftwidth=4
set expandtab    <-- (optional) 4-spaces instead of Tab indentation
摘星┃星的人 2024-08-24 15:31:51

此页面上的几个答案是针对所描述问题的“一次性”修复。这意味着,下次使用 vim 打开文档时,将返回之前的选项卡设置。

如果有人有兴趣永久更改选项卡设置:

  • 找到/打开您的 .vimrc - 此处的说明
  • 添加以下行:(更多信息在这里

    <块引用>

     设置 tabstop=4
     设置移位宽度=4
     设置展开选项卡
    
  • 然后保存文件并测试

Several of the answers on this page are 'single use' fixes to the described problem. Meaning, the next time you open a document with vim, the previous tab settings will return.

If anyone is interested in permanently changing the tab settings:

假面具 2024-08-24 15:31:51

更新

如果您正在处理特定项目,我强烈建议使用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打开。

除此之外,许多其他 IDE 和编辑器自动支持 .editorconfig 文件,因此它是不同环境的用户之间协作的最佳选择。

原始答案

如果您需要经常更改大小并且不想将其绑定到特定文件类型,您可以在 .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>

这映射了两个不同的集键 \t 和 \m 的大小。您可以将其重新绑定到您想要的任何键。

UPDATE

If you are working in a particular project I highly recommend using editorconfig.

It lets you define an .editorconfig file at the root of your repository defining the indentation you want to use for each file type across your repository.

For example:

root = true

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

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

There is a vim plugin that automatically configures vim according to the config file for file you open.

On top of that the .editorconfig file is automatically supported on many other IDEs and editors so it is the best option for collaborating between users with different environments.

ORIGINAL ANSWER

If you need to change sizes often and you don't want to bind this to a specific file type you can have predefined commands on your .vimrc file to quickly switch preferences:

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

This maps two different sets of sizes to keys \t and \m. You can rebind this to whatever keys you want.

不气馁 2024-08-24 15:31:51

在 vim 命令模式下,写入:

:set ts=X

其中 X 是新的所需空间长度

in vim command mode, write:

:set ts=X

where X is your new desired space length

还如梦归 2024-08-24 15:31:51

在我的 .vim/vimrc (ubuntu bionic 下的 vim 8.0)中,我

if has("autocmd")
  filetype plugin indent on
endif

添加了如下行:
autocmd 文件类型 css setlocal tabstop=2
不起作用。

我创建了 .vim/indent 文件夹并添加了:
css.vim

set tabstop=2
set shiftwidth=2
set softtabstop=2

它一起工作!
我尝试在另一台装有 ubuntu focus 和 vim 8.1 的计算机上运行,​​但不起作用!-(

in my .vim/vimrc (vim 8.0 under ubuntu bionic), I have

if has("autocmd")
  filetype plugin indent on
endif

so added line like :
autocmd Filetype css setlocal tabstop=2
doesn't work.

I created .vim/indent folder and added in :
css.vim with

set tabstop=2
set shiftwidth=2
set softtabstop=2

and it works !
I tried to on another computer with ubuntu focal and vim 8.1, it doesn't work !-(

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文