当前位置: 首页 > 知识库问答 >
问题:

vim - Vim中设置tabstop后自动缩进仍显示为8空格如何解决?

孟智志
2024-09-07

vim里自动缩进tabstop的问题

一次用vim,开启了c语言的自动缩进cindent,默认的tabstop是8空格,太长了,我把tabstop也设置成了2,在vim下面显示正常,可是程序保存之后用txt打开自动缩进还是8,直接复制粘贴了还是这样,下面该肿么办?

共有1个答案

孟鸿德
2024-09-07

在 Vim 中,tabstopshiftwidthsofttabstop 是控制缩进和制表符行为的三个关键设置。如果你想要确保在 Vim 中设置 tabstop 为 2 之后,无论是保存文件还是复制粘贴内容,都保持这种缩进风格,你需要确保 shiftwidthsofttabstop 也被相应地设置。

  1. tabstop: 控制制表符所占用的空间大小(通常是空格数)。它不会影响 Vim 如何显示或解释已经存在的制表符或空格,但它会影响你插入新制表符时的行为。
  2. shiftwidth: 控制缩进和取消缩进的空格数。当使用 >< 命令,或自动缩进时,Vim 会使用这个值来决定添加或删除多少个空格。
  3. softtabstop: 当设置为非零值时,它告诉 Vim 在插入或删除制表符时,使用多少个空格来模拟制表符。这有助于保持文件的外观一致性,尤其是在不同的编辑器或查看器中打开时。

解决步骤

  1. 设置这些值
    在你的 .vimrc 文件中,添加或更新以下设置:

    set tabstop=2
    set shiftwidth=2
    set softtabstop=2
    set expandtab " 将制表符转换为空格

expandtab 选项特别重要,因为它会将所有制表符转换为空格,这有助于避免在不同编辑器或查看器中的显示差异。

  1. 重新加载 .vimrc
    如果你已经打开了 Vim,你可以通过运行 :source ~/.vimrc(或你的 .vimrc 文件所在的实际路径)来重新加载你的配置文件。
  2. 检查并调整现有文件
    对于已经存在的文件,如果它们使用了制表符进行缩进,你可能需要使用 Vim 的命令(如 :%retab!)来将制表符转换为空格。但请注意,这个命令会根据你的当前设置(即 tabstopshiftwidthexpandtab)来转换。

    如果你只想查看转换后的效果而不实际修改文件,可以先临时关闭 expandtab 选项,查看制表符的显示效果,然后再重新启用它。

通过上述步骤,你应该能够解决 Vim 中设置 tabstop 后自动缩进仍显示为 8 空格的问题。

 类似资料:
  • 本文向大家介绍浅谈Vim中的Tab与空格缩进,包括了浅谈Vim中的Tab与空格缩进的使用技巧和注意事项,需要的朋友参考一下 vim缩进参数解析 缩进用 tab 制表符还是空格,个人爱好问题。但是在大多项目中,习惯使用空格。关于缩进,vim中可以通过如下四个参数进行配置 解析: tabstop 表示按一个tab之后,显示出来的相当于几个空格,默认的是8个。 softtabstop 表示在编辑模式的时

  • 本文向大家介绍如何正确设置VIM自动缩进以编辑Python文件?,包括了如何正确设置VIM自动缩进以编辑Python文件?的使用技巧和注意事项,需要的朋友参考一下 要为VIM中的python文件设置autoindent,请使用以下配置: 示例 将此配置添加到主文件夹中的.vimrc文件。

  • 问题内容: “ SQL语句缩进最佳实践”似乎是编写SQL块的公认格式。 是否有一个符合该标准的Vim缩进/语法文件,或者至少是紧密文件? 目前,我的Vim几乎保留了所有内容,仅缩进了某些关键字。 问题答案: “ SQLUtilities:SQL实用程序-格式化,生成- 列列表,数据库过程 ”具有SQL Utilities插件,该插件具有功能。与“如何在Vim中自动格式化和自动大写SQL ”是一个相

  • 问题内容: 我正在使用Vim并编辑Python脚本。 通常,自动缩进效果很好,但是当我开始换行并输入’#’来输入注释时,Vim会为我取消缩进。 例如,如果有 然后按回车,Vim会正确缩进 但是,如果我没有输入,而是输入,它会自动缩进 我的.vimrc文件如下。有人知道为什么会这样吗? 问题答案: 设置使Vim表现得像您为我描述的那样,而使用(这就是我倾向于使用的)Vim表现得像您希望的那样。 更新

  • 在上一节 “Vim 的模式中” 我们知道了在 Vim 中如何移动光标。其实除了 h,l,j,k 键之外还有两种操作可以让我们移动光标: 键 含义 h 左移 l 右移 j 下移 k 上移 ^/0 移动到行首 $ 移动到行尾 以上就是Vim中光标移动最基础的快捷键。但是初学者可能会觉得很别扭。因为现在大家更加习惯于键盘上的上下左右键,这更符合现在人的思维。这里需要对此做个解释,便于大家更加能够理解 V

  • 问题内容: 有没有办法重新缩进一段代码?我正在寻找类似于Eclipse(自动格式化/缩进)中的+ +的东西。 要清楚一点 我已经知道如何 在 Notepad ++ 之外 格式化XML (如上所述,Eclipse可以正常工作),因此我不需要一堆链接到其他XML格式化工具。 我专门处理XML和HTML。 理想情况下,键绑定与Eclipse中的键绑定一样方便,因此我不必中断我的工作流程。 我已经知道Np

  • 问题内容: 当使用注释使Java代码缩进时,vim坚持这样缩进: 我希望注释与方法定义在同一列中,但似乎无法找到一种告诉vim做到这一点的方法,除了可能使用缩进表达式外,但我不确定是否可以将其与经常碰碰碰。 编辑:文件类型插件已经打开,我对缩进插件有点困惑。接受的答案可能有点破烂,但对我也有用。 问题答案: 编辑:我不能删除自己的答案,因为它已经被接受,但是@pydave的答案似乎是更好(更可靠)

  • 问题内容: 我使用vim进行编码,尤其是python编码。通常,我想使用python解释器执行当前缓冲区。(例如运行unittests),通常我使用 此场景将与全局python一起正常工作,但我想改为运行virtualenv python。如何在vim中启用virtualenv?是否可以在运行时切换virtualenv? 我正在使用macvim 问题答案: 这是我使用的(很抱歉,突出显示的内容很奇