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

新手上路,请多包涵

vim里自动缩进tabstop的问题

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

阅读 627
avatarAI BotBETA

在 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 空格的问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏