强制Sublime Text编辑器使用4个空格进行缩进

8

我一直在寻找代码为什么显示两个空格而不是四个的原因。

底部也显示为 Spaces : 4

enter image description here


代码

<!DOCTYPE html>
<html lang="en">

<head>

  @include('layouts.fe.meta')
  @include('layouts.fe.links')
  <link rel="stylesheet" type="text/css" href="{{ elixir('assets/fe/css/all.css') }}"/>

  <link href="https://fonts.googleapis.com/css?family=Roboto:400,500" rel="stylesheet">
  <link rel="stylesheet" href="/css/hover-min.css">
  <link rel="stylesheet" href="/css/magnific-popup.css">
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

  <style type="text/css">
  body{
    font-family: 'Roboto', sans-serif !important;
  }

  #back_home {
    position: absolute;
    left: 10px;
    top: 5px;
  }
</style>

</head>

<body>

  <a href="/#portfolio" style="color:white;" class="btn btn-sm btn-success" id="back_home">Back Home</a>

  <section id="page-portfolio" class="page-portfolio">
    <div class="container">
      <div class="row text-center" style="padding: 0px !important; margin: 0px !important;">

        <header class="section-header">
          <h2 class="section-title"><span>Portfolio</span></h2>
          <div class="spacer"></div>
          <p class="section-subtitle">While designing, I always balance usability and standard elements with other design criteria. </p>
        </header>


        <div class="clearfix">
          <div class="cbp-l-filters-button cbp-l-filters-left">
            <div data-filter="*" class="cbp-filter-item-active cbp-filter-item">All</div>
            <div data-filter=".personal" class="cbp-filter-item">Personal</div>
            <div data-filter=".professional" class="cbp-filter-item">Professional</div>
            <div data-filter=".freelance" class="cbp-filter-item">Freelance</div>
          </div>
        </div>

        <div class="gallery">

          @if(count($portfolios)>0)
          @foreach($portfolios as $portfolio)
          <?php $images = $portfolio->portfolioimages()->get()->toArray(); ?>


          <div class="col-xs-6 col-sm-2 img-pop cbp-item {{ $portfolio->type }} " style="padding: 0px !important; margin: 0px !important;">
           <a href="{!! $images[0]['image_path'] !!}">
             <img class="hvr-shrink" src="{!! $images[0]['image_path'] !!}">
           </a>
         </div>


         @endforeach
         @endif
       </div>



       <a style="color:#555" href="/" class="btn btn-default hire-me">Go Back</a>

     </div>
   </div>
 </section>


 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
 <script src="/js/jquery.cubeportfolio.js"></script>

 <script src="/js/jquery.magnific-popup.min.js"></script>
 <script type="text/javascript">


  /* Magnific Popup */
  $('.img-pop').magnificPopup({
    delegate: 'a',
    type: 'image',
    gallery: {
      enabled: true
    }
  });

  // init cubeportfolio
  $('.gallery').cubeportfolio({
    filters: '.cbp-l-filters-button',
    loadMore: '#js-loadMore-lightbox-gallery',
    loadMoreAction: 'click',
    layoutMode: 'grid',
    mediaQueries: [{
      width: 1500,
      cols: 5
    }, {
      width: 1100,
      cols: 4
    }, {
      width: 800,
      cols: 3
    }, {
      width: 480,
      cols: 2
    }, {
      width: 320,
      cols: 1
    }],
    defaultFilter: '*',
    animationType: 'rotateSides',
    gapHorizontal: 10,
    gapVertical: 10,
    gridAdjustment: 'responsive',
    caption: 'zoom',
    displayType: 'sequentially',
    displayTypeSpeed: 100,

    // lightbox
    lightboxDelegate: '.cbp-lightbox',
    lightboxGallery: true,
    lightboxTitleSrc: 'data-title',

  });

</script>

</body>

</html>

这很难看清。


设置

我添加了这3行。

 "tab_size": 4,
 "translate_tabs_to_spaces": true,
 "detect_indentation": false

所有设置

{
    "caret_extra_width": 2,
    "caret_style": "phase",
    "close_windows_when_empty": false,
    "color_scheme": "Packages/User/SublimeLinter/Monokai (SL).tmTheme",
    "copy_with_empty_selection": false,
    "drag_text": false,
    "draw_minimap_border": true,
    "enable_tab_scrolling": false,
    "findreplace_small": true,
    "font_face": "Source Code Pro",
    "font_options":
    [
        "no_round"
    ],
    "font_size": 12,
    "highlight_line": true,
    "highlight_modified_tabs": true,
    "ignored_packages":
    [
        "SublimeLinter",
        "Vintage"
    ],
    "match_brackets_content": false,
    "match_selection": false,
    "match_tags": false,
    "open_files_in_new_window": false,
    "overlay_scroll_bars": "enabled",
    "predawn_findreplace_small": true,
    "predawn_quick_panel_small": true,
    "predawn_sidebar_arrows": false,
    "predawn_sidebar_large": true,
    "predawn_sidebar_medium": false,
    "predawn_sidebar_small": false,
    "predawn_sidebar_xlarge": false,
    "predawn_sidebar_xsmall": false,
    "predawn_tabs_active_underline": true,
    "predawn_tabs_large": true,
    "predawn_tabs_medium": false,
    "preview_on_click": true,
    "scroll_past_end": false,
    "scroll_speed": 5.0,
    "show_full_path": true,
    "sidebar_default": true,
    "theme": "predawn-DEV.sublime-theme",
    "translate_tabs_to_spaces": true,
    "trim_trailing_white_space_on_save": true,
    "word_wrap": true,
    "tab_size": 4,
    "translate_tabs_to_spaces": true,
    "detect_indentation": false
}

如何实现这一点?

选择所有代码(ctrl + a),然后剪切它(ctrl + x),再粘贴回去(ctrl + v)- 这应该会触发代码的重新格式化并遵循制表符大小。 - Latheesan
你想使用制表符大小为4和空格大小为4吗? - Christian Gallarmin
@ChristianGallarmin:是的,那就是我想要的。 - code-8
你在使用Sublime Text 3吗? - Christian Gallarmin
1
如果您的缩进设置与文件不匹配,并想要进行更改,可以使用缩进菜单中的选项(单击状态栏上显示 Spaces: 4 的位置);将制表符大小设置为视觉上看起来的大小(2),选择“将缩进转换为制表符”,然后将缩进更改回所需的大小(4),选择“将缩进转换为空格”。 - OdatNurd
显示剩余9条评论
4个回答

9
你所面对的问题是,你在Sublime中设置了你喜欢的缩进大小,但你正在处理的文件已经使用了不符合你设置的缩进方式。
因此,你应该注意到当你按下Tab时,它跳过了四个空格,新添加的代码缩进方式与你想要的一样,但现有的代码则保持原样,除非你手动修改它。
控制这三个设置的是你问题中提到的三个参数:
- `tab_size` 控制 tab 字符被视为多少个字符宽度,在视觉设置中用于确定 tab 应该占用多少空间,以及缩进指南的位置等。 - `translate_tabs_to_spaces` 告诉 Sublime,任何时候插入字面上的 `tab` 字符时,应将该 tab 转换为实时的 `tab_size` 个空格。在菜单中,这表现为一个名为“使用空格进行缩进”的选项,根据需要勾选或取消勾选。 - `detect_indentation` 控制 Sublime 是否严格遵循上述两个设置。当它设置为 true(默认值,但你没有使用)时,当加载文件时,Sublime 会通过分析文件来猜测适当的缩进设置。
从你问题中的图片中可以看出,状态栏显示 "Spaces: 4",表示设置为 `tab_size` 为 `4`,`translate_tabs_to_spaces` 为 `true`,缩进指南的位置与你想要的一样,但代码的缩进方式是错误的。
因此,我们知道缩进肯定设置为 `4`,但代码看起来只缩进了 `2`,所以我们知道你的代码不包含任何 tab 字符,否则它将按照你想要的方式显示。如果你打开了 `detect_indentation`,文件在视觉上会保持相同,但 Sublime 会更改该文件的 `tab_size` 为 `2`,以匹配缓冲区中看到的内容。
无论如何,你必须采取措施手动修复文件,以使其与你的首选缩进设置相匹配。
也许最简单的方法是使用 "选择 -> 全选" (或相应的键),然后从菜单中选择 "编辑 -> 行 -> 重新缩进" 或从命令面板中选择 "Indentation: Reindent Lines"。
这可能会产生混合结果;它使用与Sublime在您输入时缩进所使用的相同的内部逻辑。因此,基于您正在编辑的文件类型和文件内容,可能会改变文件内容,而不仅仅是更改缩进。
如果不想要这样的结果,可以通过以下几个步骤手动执行更改,使用Sublime中已经内置的命令即可。最容易找到这些命令的地方是点击状态栏显示缩进设置(Spaces: 4)时弹出的菜单,但请确保您正在编辑适当的文件,因为每个打开的文件都可以有不同的设置:
  • 使用Guess Settings From BufferTab Width: 2将制表符大小更改为文件使用的大小。状态行将更改为Spaces: 2,并且随着新设置的生效,您将看到缩进指南数量翻倍。

  • 使用Convert Indentation to Tabs将所有前导空格缩进转换为空格。状态行将更改为Tab Size: 2,以向您展示它正在使用制表符,并且如果您选择缓冲区中的文本,您将看到前导空格现在是制表符字符。

  • 使用Tab Width: 4更改制表符的大小。状态行将更改为Tab Size: 4,并且您将看到文件中的缩进明显跳出到新设置。

  • 使用Convert Indentation to Spaces。状态行将改变回Spaces: 4,这将使一切恢复到最初的状态,但是文件已经被修改。

如果有很多这样的文件需要修复,则执行这些步骤可能会有点乏味。在这种情况下,可以通过打开需要更改的文件,使用View > Show Console(或键绑定)打开Sublime控制台,然后在控制台输入以下命令并按Enter

view.run_command("detect_indentation"); view.run_command("unexpand_tabs", {"set_translate_tabs": True}); view.settings().set("tab_size", 4); view.run_command("expand_tabs", {"set_translate_tabs": True})

我在此处格式化它以便能够看得见,但是当你粘贴时应该是一行长字符串。这将依次执行上述每个命令,从而在一步中为您修复文件。 Sample of the conversion in process

2

在Sublime文本编辑器中

  1. 点击 View 标签

  2. 选择 Indentation

  3. 然后选择 Tab Width:4

你的代码将会有4个空格,并且在底部你会看到 Tab Size:2


这对我有帮助。我的实际标签大小是正确的,但是可视化显示错误(显示为标签2)。所以我的文件是好的,只是视图设置问题。谢谢您的回复。 - undefined

0

你有

"tab_size": 4,
"translate_tabs_to_spaces": true,
"detect_indentation": false

在我看来,第三行否定了第一行。请尝试:
"tab_size": 4,
"translate_tabs_to_spaces": true,
"detect_indentation": true

0

选择全部然后按:

查看 → 缩进 → 制表符 4


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接