Sublime text3 高级操作(直接上代码,超爽。)

本文介绍了如何进行Sublime Text3的高级配置,包括安装免安装版、Package Control、汉化、插件安装,如BracketHighlighter、C++11、ChineseLocalizations等,并详细讲解了用户设置、快捷键、代码段定制以及编译系统的配置,旨在帮助用户提升Sublime Text3的使用体验。

当你看到这篇文章,请留下你的赞赞给一个害羞的初中生信心❤
希望喜欢的朋友留下评论,让小编继续改进。留下赞赞,给小编信心😁。
OS X系统的朋友,此文章仅供参考。
有点积分的大佬可以直接到博客末尾下载使用,轻松方便,迷你可移动。
我算是一个Sublime text3重度用户。
在使用它之前,我对它一无所知,也是听一个老师推荐的。
当开始使用它,我却发现了如下问题(我用的是C++。不能给大家提供其它语言的帮助,很对不起):
1.自带C++ Single file不支持标准输入输出。
2.自带插件不好用,快捷键不熟,无法安装插件。
3.自带配送方案,主题不怎么样。
4.没有自己制作的插件,不习惯。

__________________________________ OK,if you either have these questions,please follow me down.
首先,我们需要一个Sublime text3免安装版。
请跳转至——>

https://download.sublimetext.com/Sublime%20Text%20Build%203211%20x64.zip

if you finish ,please tab 1
完成后,请安装Package Control:先按下Ctrl+`,然后复制粘贴:

import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); open(os.path.join(ipp, pf), 'wb').write(urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ','%20')).read())

等待后(肯定会有1~2分钟的未响应),只要菜单栏下有preferences——>Package Control说明安装完成。
如果没有,不要慌,再试一遍,多半是网络不好。
然后,点击菜单栏下有preferences——>Package Control,输入ip,就会看到:

点击Package Control:install package
然后等待出现:

现在是汉化,喜欢看英文版的朋友请跳过:
输入:ChineseLocalizations
等待后即可完成汉化。

以汉化为例子,其它插件都是这么安装
下面就是我推荐的插件,记住安装完成后才能使用我的用户设置哦。
BracketHighilghter高亮匹配括号 sublime text3
C++11
sublimecodeintel //代码提示
ChineseLocalizations汉化
ConverToUTF8解决中文乱码问题cmd
InsertDate快速插入日期:f5
Monokai Dark美化
Theme - Monokai+美化
A file icon未知 sublime text3
Theme - Afterglow美化
ayu美化
Material Theme 美化
package Control插件商店
SideBarEnhancements边框强化
SublimeAStyleformatter格式化代码:ctrl+alt+f
sublimeCodeintel代码补全
Sublimerge
功能:文本对比

简介:将二个标签页并排,方便同时浏览二份文件,检视两份内容的差异性

使用:同时打开两个文件,右击其中一个文件,选择 Compare To…

首先是BracketHighilghter的用户定义:

——————————————————————————————————————————
BracketHighilghter高亮匹配括号 用户自定义

{
    "bracket_styles": {
        "default": {
            "icon": "dot",
            // "color": "entity.name.class",
            "color": "brackethighlighter.default",
            "style": "highlight"
        },

        "unmatched": {
            "icon": "question",
            "color": "brackethighlighter.unmatched",
            "style": "highlight"
        },
        "curly": {
            "icon": "curly_bracket",
            "color": "brackethighlighter.curly",
            "style": "highlight"
        },
        "round": {
            "icon": "round_bracket",
            "color": "brackethighlighter.round",
            "style": "highlight"
        },
        "square": {
            "icon": "square_bracket",
            "color": "brackethighlighter.square",
            "style": "highlight"
        },
        "angle": {
            "icon": "angle_bracket",
            "color": "brackethighlighter.angle",
            "style": "highlight"
        },
        "tag": {
            "icon": "tag",
            "color": "brackethighlighter.tag",
            "style": "highlight"
        },
        "single_quote": {
            "icon": "single_quote",
            "color": "brackethighlighter.quote",
            "style": "highlight"
        },
        "double_quote": {
            "icon": "double_quote",
            "color": "brackethighlighter.quote",
            "style": "highlight"
        },
        "regex": {
            "icon": "regex",
            "color": "brackethighlighter.quote",
            "style": "outline"
        }
    }

}

————————————————————————————————————————ConverToUTF8用户,支持中文输出无乱码

{
    "default_encoding_on_create" : "GBK",
}

完成后,就是用户设置和快捷键了:
用户设置:

{
    // Sets the colors used within the text area
    //主题文件
    "color_scheme": "Packages/Color Scheme - Default/Monokai.tmTheme",

    // Note that the font_face and font_size are overriden in the platform
    // specific settings file, for example, "Preferences (Linux).sublime-settings".
    // Because of this, setting them here will have no effect: you must set them
    // in your User File Preferences.
    //字体样式、大小
    "font_face": "",
    "font_size": 10,

    // Valid options are "no_bold", "no_italic", "no_antialias", "gray_antialias",
    // "subpixel_antialias", "no_round" (OS X only) and "directwrite" (Windows only)
    // 字体选项:no_bold不显示粗体字,no_italic不显示斜体字,no_antialias和no_antialias关闭反锯齿
    // subpixel_antialias和no_round是OS X系统独有的
    // directwrite是Windows系统独有的
    "font_options": [],

    // Characters that are considered to separate words
    // 在文字上双击会全选当前的内容,如果里面出现以下字符,就会被截断
    "word_separators": "./\\()\"'-:,.;<>~!@#$%^&*|+=[]{}`~?",

    // Set to false to prevent line numbers being drawn in the gutter
    // 是否显示行号
    "line_numbers": true,

    // Set to false to hide the gutter altogether
    // 是否显示行号边栏
    "gutter": true,

    // Spacing between the gutter and the text
    // 行号边栏和文字的间距
    "margin": 4,

    // Fold buttons are the triangles shown in the gutter to fold regions of text
    // 是否显示代码折叠按钮
    "fold_buttons": true,

    // Hides the fold buttons unless the mouse is over the gutter
    // 不管鼠标在不在行号边栏,代码折叠按钮一直显示
    "fade_fold_buttons": true,

    // Columns in which to display vertical rulers
    //列显示垂直标尺,在中括号里填入数字,宽度按字符计算
    "rulers": [],

    // Set to true to turn spell checking on by default
    // 是否打开拼写检查
    "spell_check": false,

    // The number of spaces a tab is considered equal to
    // Tab键制表符宽度
    "tab_size": 4,

    // Set to true to insert spaces when tab is pressed
    // 设为true时,缩进和遇到Tab键时使用空格替代
    "translate_tabs_to_spaces": false,

    // If translate_tabs_to_spaces is true, use_tab_stops will make tab and
    // backspace insert/delete up to the next tabstop
    // translate_tabs_to_spaces设置为true,Tab和Backspace的删除/插入作用于制表符宽度
    // 否则作用于单个空格
    "use_tab_stops": true,

    // Set to false to disable detection of tabs vs. spaces on load
    // false时禁止在载入的时候检测制表符和空格
    "detect_indentation": false,

    // Calculates indentation automatically when pressing enter
    // 按回车时,自动与制表位对齐
    "auto_indent": true,

    // Makes auto indent a little smarter, e.g., by indenting the next line
    // after an if statement in C. Requires auto_indent to be enabled.
    //针对C语言的
    "smart_indent": true,

    // Adds whitespace up to the first open bracket when indenting. Requires
    // auto_indent to be enabled.
    // 需要启用auto_indent,第一次打开括号缩进时插入空格?(没测试出来效果…)
    "indent_to_bracket": false,

    // Trims white space added by auto_indent when moving the caret off the
    // line.
    // 显示对齐的白线是否根据回车、tab等操作自动填补
    "trim_automatic_white_space": true,

    // Disables horizontal scrolling if enabled.
    // May be set to true, false, or "auto", where it will be disabled for
    // source code, and otherwise enabled.
    // 是否自动换行,如果选auto,需要加双引号
     "word_wrap": false,

    // Set to a value other than 0 to force wrapping at that column rather than the
    // window width
    // 设置窗口内文字区域的宽度
    "wrap_width": 0,

    // Set to false to prevent word wrapped lines from being indented to the same
    // level
    // 防止被缩进到同一级的字换行
    "indent_subsequent_lines": true,

    // Draws text centered in the window rather than left aligned
    // 如果没有定义过,则文件居中显示(比如新建的文件)
    "draw_centered": false,

    // Controls auto pairing of quotes, brackets etc
    // 自动匹配引号,括号等
    "auto_match_enabled": true,

    // Word list to use for spell checking
    // 拼写检查的单词列表路径
    "dictionary": "Packages/Language - English/en_US.dic",

    // Set to true to draw a border around the visible rectangle on the minimap.
    // The color of the border will be determined by the "minimapBorder" key in
    // the color scheme
    // 代码地图的可视区域部分是否加上边框,边框的颜色可在配色方案上加入minimapBorder键
    "draw_minimap_border": true,

    // If enabled, will highlight any line with a caret
    // 突出显示当前光标所在的行
    "highlight_line": false,

    // Valid values are "smooth", "phase", "blink", "wide" and "solid".、
    // 设置光标闪动方式
    "caret_style": "smooth",

    // Set to false to disable underlining the brackets surrounding the caret
    // 是否特殊显示当前光标所在的括号、代码头尾闭合标记
    "match_brackets": true,

    // Set to false if you'd rather only highlight the brackets when the caret is
    // next to one
    // 设为false时,只有光标在括号或头尾闭合标记的两端时,match_brackets才生效
    "match_brackets_content": true,

    // Set to false to not highlight square brackets. This only takes effect if
    // match_brackets is true
    // 是否突出显示圆括号,match_brackets为true生效
    "match_brackets_square": true,

    // Set to false to not highlight curly brackets. This only takes effect if
    // match_brackets is true
    // 是否突出显示大括号,match_brackets为true生效
    "match_brackets_braces": true,

    // Set to false to not highlight angle brackets. This only takes effect if
    // match_brackets is true
    // 是否突出显示尖括号,match_brackets为true生效
    "match_brackets_angle": false,

    // Enable visualization of the matching tag in HTML and XML
    // html和xml下突出显示光标所在标签的两端,影响HTML、XML、CSS等
    "match_tags": true,

    // Highlights other occurrences of the currently selected text
    // 全文突出显示和当前选中字符相同的字符
    "match_selection": true,

    // Additional spacing at the top of each line, in pixels
    // 设置每一行到顶部,以像素为单位的间距,效果相当于行距
    "line_padding_top": 0,

    // Additional spacing at the bottom of each line, in pixels
    // 设置每一行到底部,以像素为单位的间距,效果相当于行距
    "line_padding_bottom": 0,

    // Set to false to disable scrolling past the end of the buffer.
    // On OS X, this value is overridden in the platform specific settings, so
    // you'll need to place this line in your user settings to override it.
    // 设置为false时,滚动到文本的最下方时,没有缓冲区
    "scroll_past_end": true,

    // This controls what happens when pressing up or down when on the first
    // or last line.
    // On OS X, this value is overridden in the platform specific settings, so
    // you'll need to place this line in your user settings to override it.
    // 控制向上或向下到第一行或最后一行时发生什么(没明白也没试出来)
    "move_to_limit_on_up_down": false,

    // Set to "none" to turn off drawing white space, "selection" to draw only the
    // white space within the selection, and "all" to draw all white space
    // 按space或tab时,实际会产生白色的点(一个空格一个点)或白色的横线(tab_size设置的制表符的宽度),选中状态下才能看到
    // 设置为none时,什么情况下都不显示这些点和线
    // 设置为selection时,只显示选中状态下的点和线
    // 设置为all时,则一直显示
    "draw_white_space": "selection",

    // Set to false to turn off the indentation guides.
    // The color and width of the indent guides may be customized by editing
    // the corresponding .tmTheme file, and specifying the colors "guide",
    // "activeGuide" and "stackGuide"
    // 制表位的对齐白线是否显示,颜色可在主题文件里设置(guide,activeGuide,stackGuide)
    "draw_indent_guides": true,

    // Controls how the indent guides are drawn, valid options are
    // "draw_normal" and "draw_active". draw_active will draw the indent
    // guides containing the caret in a different color.
    // 制表位的对齐白线,draw_normal为一直显示,draw_active为只显示当前光标所在的代码控制域
    "indent_guide_options": ["draw_normal"],

    // Set to true to removing trailing white space on save
    // 为true时,保存文件时会删除每行结束后多余的空格
    "trim_trailing_white_space_on_save": false,

    // Set to true to ensure the last line of the file ends in a newline
    // character when saving
    // 为true时,保存文件时光标会在文件的最后向下换一行
    "ensure_newline_at_eof_on_save": false,

    // Set to true to automatically save files when switching to a different file
    // or application
    // 切换到其它文件标签或点击其它非本软件区域,文件自动保存
    "save_on_focus_lost": false,

    // The encoding to use when the encoding can't be determined automatically.
    // ASCII, UTF-8 and UTF-16 encodings will be automatically detected.
    // 编码时不能自动检测编码时,将自动检测ASCII, UTF-8 和 UTF-16
    "fallback_encoding": "Western (Windows 1252)",

    // Encoding used when saving new files, and files opened with an undefined
    // encoding (e.g., plain ascii files). If a file is opened with a specific
    // encoding (either detected or given explicitly), this setting will be
    // ignored, and the file will be saved with the encoding it was opened
    // with.
    // 默认编码格式
    "default_encoding": "GBK",

    // Files containing null bytes are opened as hexadecimal by default
    // 包含空字节的文件被打开默认为十六进制
    "enable_hexadecimal_encoding": true,

    // Determines what character(s) are used to terminate each line in new files.
    // Valid values are 'system' (whatever the OS uses), 'windows' (CRLF) and
    // 'unix' (LF only).
    // 每一行结束的时候用什么字符做终止符
    "default_line_ending": "system",

    // When enabled, pressing tab will insert the best matching completion.
    // When disabled, tab will only trigger snippets or insert a tab.
    // Shift+tab can be used to insert an explicit tab when tab_completion is
    // enabled.
    // 设置为enabled时,在一个字符串间按Tab将插入一个制表符
    // 设置为true时,按Tab会根据前后环境进行代码自动匹配填补
    "tab_completion": true,

    // Enable auto complete to be triggered automatically when typing.
    // 代码提示
    "auto_complete": true,

    // The maximum file size where auto complete will be automatically triggered.
    // 代码提示的大小限制
    "auto_complete_size_limit": 4194304,

    // The delay, in ms, before the auto complete window is shown after typing
    // 代码提示延迟显示
    "auto_complete_delay": 0,

    // Controls what scopes auto complete will be triggered in
    // 代码提示的控制范围
    "auto_complete_selector": "source - comment",

    // Additional situations to trigger auto complete
    // 触发代码提示的其他情况
    "auto_complete_triggers": [ {"selector": "text.html", "characters": "<"} ],

    // By default, auto complete will commit the current completion on enter.
    // This setting can be used to make it complete on tab instead.
    // Completing on tab is generally a superior option, as it removes
    // ambiguity between committing the completion and inserting a newline.
    // 设为false时,选择提示的代码按回车或点击可以输出出来,但选择true时不会输出而是直接换行
    "auto_complete_commit_on_tab": false,

    // Controls if auto complete is shown when snippet fields are active.
    // Only relevant if auto_complete_commit_on_tab is true.
    // auto_complete_commit_on_tab必须为true,控制代码提示的活跃度
    "auto_complete_with_fields": true,

    // By default, shift+tab will only unindent if the selection spans
    // multiple lines. When pressing shift+tab at other times, it'll insert a
    // tab character - this allows tabs to be inserted when tab_completion is
    // enabled. Set this to true to make shift+tab always unindent, instead of
    // inserting tabs.
    // 设置为false,使用Shift + tab总是插入制表符
    "shift_tab_unindent": false,

    // If true, the copy and cut commands will operate on the current line
    // when the selection is empty, rather than doing nothing.
    //复制与剪切的
    "copy_with_empty_selection": true,

    // If true, the selected text will be copied into the find panel when it's
    // shown.
    // On OS X, this value is overridden in the platform specific settings, so
    // you'll need to place this line in your user settings to override it.
    // 选中的文本按Ctrl + f时,自动复制到查找面板的文本框里
    "find_selected_text": true,

    // When drag_text is enabled, clicking on selected text will begin a
    // drag-drop operation
    //拖动文本
    "drag_text": true,

    //
    // User Interface Settings
    //

    // The theme controls the look of Sublime Text's UI (buttons, tabs, scroll bars, etc)
    //主题
    "theme": "Default.sublime-theme",

    // Set to 0 to disable smooth scrolling. Set to a value between 0 and 1 to
    // scroll slower, or set to larger than 1 to scroll faster
    // 滚动的速度
    "scroll_speed": 1.0,

    // Controls side bar animation when expanding or collapsing folders
    // 左边边栏文件夹动画
    "tree_animation_enabled": true,

    // Makes tabs with modified files more visible
    //高亮未保存文件
    "highlight_modified_tabs": true,
    // 标签页的关闭按钮
    "show_tab_close_buttons": true,

    // Show folders in the side bar in bold
    //在侧边栏显示文件夹
    "bold_folder_labels": true,

    // OS X 10.7 only: Set to true to disable Lion style full screen support.
    // Sublime Text must be restarted for this to take effect.
    //开启全屏,针对 OS X 10.7
    "use_simple_full_screen": true,

    // OS X only. Valid values are true, false, and "auto". Auto will enable
    // the setting when running on a screen 2880 pixels or wider (i.e., a
    // Retina display). When this setting is enabled, OpenGL is used to
    // accelerate drawing. Sublime Text must be restarted for changes to take
    // effect.
    //针对OS X,使用OpenGL画图,需重启
    "gpu_window_buffer": "auto",

    // Valid values are "system", "enabled" and "disabled"
    //延迟滚动条
    "overlay_scroll_bars": "system",

    //
    // Application Behavior Settings
    //

    // Exiting the application with hot_exit enabled will cause it to close
    // immediately without prompting. Unsaved modifications and open files will
    // be preserved and restored when next starting.
    //
    // Closing a window with an associated project will also close the window
    // without prompting, preserving unsaved changes in the workspace file
    // alongside the project.
    // 热退出功能!退出时不会提示是否保存文件,而是直接退出
    "hot_exit": true,

    // remember_open_files makes the application start up with the last set of
    // open files. Changing this to false will have no effect if hot_exit is
    // true
    //记忆之前打开的文件
    "remember_open_files": true,

    // OS X only: When files are opened from finder, or by dragging onto the
    // dock icon, this controls if a new window is created or not.
    //始终在新窗口打开文件,针对OS X
    "open_files_in_new_window": true,

    // OS X only: This controls if an empty window is created at startup or not.
    //在打开程序的时候新建窗口,针对OS X
    "create_window_at_startup": true,

    // Set to true to close windows as soon as the last file is closed, unless
    // there's a folder open within the window. This is always enabled on OS X,
    // changing it here won't modify the behavior.
    //当没有文件时,关闭程序,针对Windows
    "close_windows_when_empty": false,

    // Show the full path to files in the title bar.
    // On OS X, this value is overridden in the platform specific settings, so
    // you'll need to place this line in your user settings to override it.
    //在标题栏显示绝对路径
    "show_full_path": true,

    // Shows the Build Results panel when building. If set to false, the Build
    // Results can be shown via the Tools/Build Results menu.
    "show_panel_on_build": true,

    // Preview file contents when clicking on a file in the side bar. Double
    // clicking or editing the preview will open the file and assign it a tab.
    //在侧边栏预览文件
    "preview_on_click": true,

    // folder_exclude_patterns and file_exclude_patterns control which files
    // are listed in folders on the side bar. These can also be set on a per-
    // project basis.
    // 哪些文件会被显示到边栏上
    "folder_exclude_patterns": [".svn", ".git", ".hg", "CVS"],
    "file_exclude_patterns": ["*.pyc", "*.pyo", "*.exe", "*.dll", "*.obj","*.o", "*.a", "*.lib", "*.so", "*.dylib", "*.ncb", "*.sdf", "*.suo", "*.pdb", "*.idb", ".DS_Store", "*.class", "*.psd", "*.db"],
    // These files will still show up in the side bar, but won't be included in
    // Goto Anything or Find in Files
    "binary_file_patterns": ["*.jpg", "*.jpeg", "*.png", "*.gif", "*.ttf", "*.tga", "*.dds", "*.ico", "*.eot", "*.pdf", "*.swf", "*.jar", "*.zip"],

    // List any packages to ignore here. When removing entries from this list,
    // a restart may be required if the package contains plugins.
    // 删除你想要忽略的插件,需要重启
    "ignored_packages": ["Vintage"],

        // Sets the colors used within the text area
    //主题文件
    "color_scheme": "Packages/Color Scheme - Default/Monokai.tmTheme",

    // Note that the font_face and font_size are overriden in the platform
    // specific settings file, for example, "Preferences (Linux).sublime-settings".
    // Because of this, setting them here will have no effect: you must set them
    // in your User File Preferences.
    //字体样式、大小
    "font_face": "",
    "font_size": 10,

    // Valid options are "no_bold", "no_italic", "no_antialias", "gray_antialias",
    // "subpixel_antialias", "no_round" (OS X only) and "directwrite" (Windows only)
    // 字体选项:no_bold不显示粗体字,no_italic不显示斜体字,no_antialias和no_antialias关闭反锯齿
    // subpixel_antialias和no_round是OS X系统独有的
    // directwrite是Windows系统独有的
    "font_options": [],

    // Characters that are considered to separate words
    // 在文字上双击会全选当前的内容,如果里面出现以下字符,就会被截断
    "word_separators": "./\\()\"'-:,.;<>~!@#$%^&*|+=[]{}`~?",

    // Set to false to prevent line numbers being drawn in the gutter
    // 是否显示行号
    "line_numbers": true,

    // Set to false to hide the gutter altogether
    // 是否显示行号边栏
    "gutter": true,

    // Spacing between the gutter and the text
    // 行号边栏和文字的间距
    "margin": 4,

    // Fold buttons are the triangles shown in the gutter to fold regions of text
    // 是否显示代码折叠按钮
    "fold_buttons": true,

    // Hides the fold buttons unless the mouse is over the gutter
    // 不管鼠标在不在行号边栏,代码折叠按钮一直显示
    "fade_fold_buttons": true,

    // Columns in which to display vertical rulers
    //列显示垂直标尺,在中括号里填入数字,宽度按字符计算
    "rulers": [],

    // Set to true to turn spell checking on by default
    // 是否打开拼写检查
    "spell_check": false,

    // The number of spaces a tab is considered equal to
    // Tab键制表符宽度
    "tab_size": 4,

    // Set to true to insert spaces when tab is pressed
    // 设为true时,缩进和遇到Tab键时使用空格替代
    "translate_tabs_to_spaces": false,

    // If translate_tabs_to_spaces is true, use_tab_stops will make tab and
    // backspace insert/delete up to the next tabstop
    // translate_tabs_to_spaces设置为true,Tab和Backspace的删除/插入作用于制表符宽度
    // 否则作用于单个空格
    "use_tab_stops": true,

    // Set to false to disable detection of tabs vs. spaces on load
    // false时禁止在载入的时候检测制表符和空格
    "detect_indentation": false,

    // Calculates indentation automatically when pressing enter
    // 按回车时,自动与制表位对齐
    "auto_indent": true,

    // Makes auto indent a little smarter, e.g., by indenting the next line
    // after an if statement in C. Requires auto_indent to be enabled.
    //针对C语言的
    "smart_indent": true,

    // Adds whitespace up to the first open bracket when indenting. Requires
    // auto_indent to be enabled.
    // 需要启用auto_indent,第一次打开括号缩进时插入空格?(没测试出来效果…)
    "indent_to_bracket": false,

    // Trims white space added by auto_indent when moving the caret off the
    // line.
    // 显示对齐的白线是否根据回车、tab等操作自动填补
    "trim_automatic_white_space": true,

    // Disables horizontal scrolling if enabled.
    // May be set to true, false, or "auto", where it will be disabled for
    // source code, and otherwise enabled.
    // 是否自动换行,如果选auto,需要加双引号
     "word_wrap": false,

    // Set to a value other than 0 to force wrapping at that column rather than the
    // window width
    // 设置窗口内文字区域的宽度
    "wrap_width": 0,

    // Set to false to prevent word wrapped lines from being indented to the same
    // level
    // 防止被缩进到同一级的字换行
    "indent_subsequent_lines": true,

    // Draws text centered in the window rather than left aligned
    // 如果没有定义过,则文件居中显示(比如新建的文件)
    "draw_centered": false,

    // Controls auto pairing of quotes, brackets etc
    // 自动匹配引号,括号等
    "auto_match_enabled": true,

    // Word list to use for spell checking
    // 拼写检查的单词列表路径
    "dictionary": "Packages/Language - English/en_US.dic",

    // Set to true to draw a border around the visible rectangle on the minimap.
    // The color of the border will be determined by the "minimapBorder" key in
    // the color scheme
    // 代码地图的可视区域部分是否加上边框,边框的颜色可在配色方案上加入minimapBorder键
    "draw_minimap_border": true,

    // If enabled, will highlight any line with a caret
    // 突出显示当前光标所在的行
    "highlight_line": false,

    // Valid values are "smooth", "phase", "blink", "wide" and "solid".、
    // 设置光标闪动方式
    "caret_style": "smooth",

    // Set to false to disable underlining the brackets surrounding the caret
    // 是否特殊显示当前光标所在的括号、代码头尾闭合标记
    "match_brackets": true,

    // Set to false if you'd rather only highlight the brackets when the caret is
    // next to one
    // 设为false时,只有光标在括号或头尾闭合标记的两端时,match_brackets才生效
    "match_brackets_content": true,

    // Set to false to not highlight square brackets. This only takes effect if
    // match_brackets is true
    // 是否突出显示圆括号,match_brackets为true生效
    "match_brackets_square": true,

    // Set to false to not highlight curly brackets. This only takes effect if
    // match_brackets is true
    // 是否突出显示大括号,match_brackets为true生效
    "match_brackets_braces": true,

    // Set to false to not highlight angle brackets. This only takes effect if
    // match_brackets is true
    // 是否突出显示尖括号,match_brackets为true生效
    "match_brackets_angle": false,

    // Enable visualization of the matching tag in HTML and XML
    // html和xml下突出显示光标所在标签的两端,影响HTML、XML、CSS等
    "match_tags": true,

    // Highlights other occurrences of the currently selected text
    // 全文突出显示和当前选中字符相同的字符
    "match_selection": true,

    // Additional spacing at the top of each line, in pixels
    // 设置每一行到顶部,以像素为单位的间距,效果相当于行距
    "line_padding_top": 0,

    // Additional spacing at the bottom of each line, in pixels
    // 设置每一行到底部,以像素为单位的间距,效果相当于行距
    "line_padding_bottom": 0,

    // Set to false to disable scrolling past the end of the buffer.
    // On OS X, this value is overridden in the platform specific settings, so
    // you'll need to place this line in your user settings to override it.
    // 设置为false时,滚动到文本的最下方时,没有缓冲区
    "scroll_past_end": true,

    // This controls what happens when pressing up or down when on the first
    // or last line.
    // On OS X, this value is overridden in the platform specific settings, so
    // you'll need to place this line in your user settings to override it.
    // 控制向上或向下到第一行或最后一行时发生什么(没明白也没试出来)
    "move_to_limit_on_up_down": false,

    // Set to "none" to turn off drawing white space, "selection" to draw only the
    // white space within the selection, and "all" to draw all white space
    // 按space或tab时,实际会产生白色的点(一个空格一个点)或白色的横线(tab_size设置的制表符的宽度),选中状态下才能看到
    // 设置为none时,什么情况下都不显示这些点和线
    // 设置为selection时,只显示选中状态下的点和线
    // 设置为all时,则一直显示
    "draw_white_space": "selection",

    // Set to false to turn off the indentation guides.
    // The color and width of the indent guides may be customized by editing
    // the corresponding .tmTheme file, and specifying the colors "guide",
    // "activeGuide" and "stackGuide"
    // 制表位的对齐白线是否显示,颜色可在主题文件里设置(guide,activeGuide,stackGuide)
    "draw_indent_guides": true,

    // Controls how the indent guides are drawn, valid options are
    // "draw_normal" and "draw_active". draw_active will draw the indent
    // guides containing the caret in a different color.
    // 制表位的对齐白线,draw_normal为一直显示,draw_active为只显示当前光标所在的代码控制域
    "indent_guide_options": ["draw_normal"],

    // Set to true to removing trailing white space on save
    // 为true时,保存文件时会删除每行结束后多余的空格
    "trim_trailing_white_space_on_save": false,

    // Set to true to ensure the last line of the file ends in a newline
    // character when saving
    // 为true时,保存文件时光标会在文件的最后向下换一行
    "ensure_newline_at_eof_on_save": false,

    // Set to true to automatically save files when switching to a different file
    // or application
    // 切换到其它文件标签或点击其它非本软件区域,文件自动保存
    "save_on_focus_lost": false,

    // The encoding to use when the encoding can't be determined automatically.
    // ASCII, UTF-8 and UTF-16 encodings will be automatically detected.
    // 编码时不能自动检测编码时,将自动检测ASCII, UTF-8 和 UTF-16
    "fallback_encoding": "Western (Windows 1252)",

    // Encoding used when saving new files, and files opened with an undefined
    // encoding (e.g., plain ascii files). If a file is opened with a specific
    // encoding (either detected or given explicitly), this setting will be
    // ignored, and the file will be saved with the encoding it was opened
    // with.
    // 默认编码格式
    "default_encoding": "GBK",

    // Files containing null bytes are opened as hexadecimal by default
    // 包含空字节的文件被打开默认为十六进制
    "enable_hexadecimal_encoding": true,

    // Determines what character(s) are used to terminate each line in new files.
    // Valid values are 'system' (whatever the OS uses), 'windows' (CRLF) and
    // 'unix' (LF only).
    // 每一行结束的时候用什么字符做终止符
    "default_line_ending": "system",

    // When enabled, pressing tab will insert the best matching completion.
    // When disabled, tab will only trigger snippets or insert a tab.
    // Shift+tab can be used to insert an explicit tab when tab_completion is
    // enabled.
    // 设置为enabled时,在一个字符串间按Tab将插入一个制表符
    // 设置为true时,按Tab会根据前后环境进行代码自动匹配填补
    "tab_completion": true,

    // Enable auto complete to be triggered automatically when typing.
    // 代码提示
    "auto_complete": true,

    // The maximum file size where auto complete will be automatically triggered.
    // 代码提示的大小限制
    "auto_complete_size_limit": 4194304,

    // The delay, in ms, before the auto complete window is shown after typing
    // 代码提示延迟显示
    "auto_complete_delay": 0,

    // Controls what scopes auto complete will be triggered in
    // 代码提示的控制范围
    "auto_complete_selector": "source - comment",

    // Additional situations to trigger auto complete
    // 触发代码提示的其他情况
    "auto_complete_triggers": [ {"selector": "text.html", "characters": "<"} ],

    // By default, auto complete will commit the current completion on enter.
    // This setting can be used to make it complete on tab instead.
    // Completing on tab is generally a superior option, as it removes
    // ambiguity between committing the completion and inserting a newline.
    // 设为false时,选择提示的代码按回车或点击可以输出出来,但选择true时不会输出而是直接换行
    "auto_complete_commit_on_tab": false,

    // Controls if auto complete is shown when snippet fields are active.
    // Only relevant if auto_complete_commit_on_tab is true.
    // auto_complete_commit_on_tab必须为true,控制代码提示的活跃度
    "auto_complete_with_fields": true,

    // By default, shift+tab will only unindent if the selection spans
    // multiple lines. When pressing shift+tab at other times, it'll insert a
    // tab character - this allows tabs to be inserted when tab_completion is
    // enabled. Set this to true to make shift+tab always unindent, instead of
    // inserting tabs.
    // 设置为false,使用Shift + tab总是插入制表符
    "shift_tab_unindent": false,

    // If true, the copy and cut commands will operate on the current line
    // when the selection is empty, rather than doing nothing.
    //复制与剪切的
    "copy_with_empty_selection": true,

    // If true, the selected text will be copied into the find panel when it's
    // shown.
    // On OS X, this value is overridden in the platform specific settings, so
    // you'll need to place this line in your user settings to override it.
    // 选中的文本按Ctrl + f时,自动复制到查找面板的文本框里
    "find_selected_text": true,

    // When drag_text is enabled, clicking on selected text will begin a
    // drag-drop operation
    //拖动文本
    "drag_text": true,

    //
    // User Interface Settings
    //

    // The theme controls the look of Sublime Text's UI (buttons, tabs, scroll bars, etc)
    //主题
    "theme": "Default.sublime-theme",

    // Set to 0 to disable smooth scrolling. Set to a value between 0 and 1 to
    // scroll slower, or set to larger than 1 to scroll faster
    // 滚动的速度
    "scroll_speed": 1.0,

    // Controls side bar animation when expanding or collapsing folders
    // 左边边栏文件夹动画
    "tree_animation_enabled": true,

    // Makes tabs with modified files more visible
    //高亮未保存文件
    "highlight_modified_tabs": true,
    // 标签页的关闭按钮
    "show_tab_close_buttons": true,

    // Show folders in the side bar in bold
    //在侧边栏显示文件夹
    "bold_folder_labels": true,

    // OS X 10.7 only: Set to true to disable Lion style full screen support.
    // Sublime Text must be restarted for this to take effect.
    //开启全屏,针对 OS X 10.7
    "use_simple_full_screen": true,

    // OS X only. Valid values are true, false, and "auto". Auto will enable
    // the setting when running on a screen 2880 pixels or wider (i.e., a
    // Retina display). When this setting is enabled, OpenGL is used to
    // accelerate drawing. Sublime Text must be restarted for changes to take
    // effect.
    //针对OS X,使用OpenGL画图,需重启
    "gpu_window_buffer": "auto",

    // Valid values are "system", "enabled" and "disabled"
    //延迟滚动条
    "overlay_scroll_bars": "system",

    //
    // Application Behavior Settings
    //

    // Exiting the application with hot_exit enabled will cause it to close
    // immediately without prompting. Unsaved modifications and open files will
    // be preserved and restored when next starting.
    //
    // Closing a window with an associated project will also close the window
    // without prompting, preserving unsaved changes in the workspace file
    // alongside the project.
    // 热退出功能!退出时不会提示是否保存文件,而是直接退出
    "hot_exit": true,

    // remember_open_files makes the application start up with the last set of
    // open files. Changing this to false will have no effect if hot_exit is
    // true
    //记忆之前打开的文件
    "remember_open_files": true,

    // OS X only: When files are opened from finder, or by dragging onto the
    // dock icon, this controls if a new window is created or not.
    //始终在新窗口打开文件,针对OS X
    "open_files_in_new_window": true,

    // OS X only: This controls if an empty window is created at startup or not.
    //在打开程序的时候新建窗口,针对OS X
    "create_window_at_startup": true,

    // Set to true to close windows as soon as the last file is closed, unless
    // there's a folder open within the window. This is always enabled on OS X,
    // changing it here won't modify the behavior.
    //当没有文件时,关闭程序,针对Windows
    "close_windows_when_empty": false,

    // Show the full path to files in the title bar.
    // On OS X, this value is overridden in the platform specific settings, so
    // you'll need to place this line in your user settings to override it.
    //在标题栏显示绝对路径
    "show_full_path": true,

    // Shows the Build Results panel when building. If set to false, the Build
    // Results can be shown via the Tools/Build Results menu.
    "show_panel_on_build": true,

    // Preview file contents when clicking on a file in the side bar. Double
    // clicking or editing the preview will open the file and assign it a tab.
    //在侧边栏预览文件
    "preview_on_click": true,

    // folder_exclude_patterns and file_exclude_patterns control which files
    // are listed in folders on the side bar. These can also be set on a per-
    // project basis.
    // 哪些文件会被显示到边栏上
    "folder_exclude_patterns": [".svn", ".git", ".hg", "CVS"],
    "file_exclude_patterns": ["*.pyc", "*.pyo", "*.exe", "*.dll", "*.obj","*.o", "*.a", "*.lib", "*.so", "*.dylib", "*.ncb", "*.sdf", "*.suo", "*.pdb", "*.idb", ".DS_Store", "*.class", "*.psd", "*.db"],
    // These files will still show up in the side bar, but won't be included in
    // Goto Anything or Find in Files
    "binary_file_patterns": ["*.jpg", "*.jpeg", "*.png", "*.gif", "*.ttf", "*.tga", "*.dds", "*.ico", "*.eot", "*.pdf", "*.swf", "*.jar", "*.zip"],

    // List any packages to ignore here. When removing entries from this list,
    // a restart may be required if the package contains plugins.
    // 删除你想要忽略的插件,需要重启
    "ignored_packages": ["Vintage"],

    "auto_complete": true,
    "auto_complete_commit_on_tab": true,
    "auto_complete_delay": 0,
    "auto_complete_selector": "source - comment",
    "auto_complete_size_limit": 4194304,
    "auto_complete_triggers":
    [
        {
            "characters": "<",
            "selector": "text.html"
        }
    ],
    "auto_complete_with_fields": true,
    "auto_indent": true,
    "auto_match_enabled": true,
    "binary_file_patterns":
    [
        "*.jpg",
        "*.jpeg",
        "*.png",
        "*.gif",
        "*.ttf",
        "*.tga",
        "*.dds",
        "*.ico",
        "*.eot",
        "*.pdf",
        "*.swf",
        "*.jar",
        "*.zip"
    ],
    "bold_folder_labels": true,
    "caret_extra_bottom": 1,
    "caret_extra_top": 1,
    "caret_extra_width": 1,
    "caret_style": "phase",
    "close_windows_when_empty": false,
    "color_scheme": "Packages/Theme - Monokai+/Monokai+.tmTheme",
    "copy_with_empty_selection": true,
    "create_window_at_startup": true,
    "default_encoding": "GBK",
    "default_encoding_on_create": "GBK",
    "default_line_ending": "system",
    "detect_indentation": false,
    "dictionary": "Packages/Language - English/en_US.dic",
    "drag_text": true,
    "draw_centered": false,
    "draw_indent_guides": true,
    "draw_minimap_border": true,
    "draw_white_space": "selection",
    "enable_hexadecimal_encoding": true,
    "ensure_newline_at_eof_on_save": false,
    "fade_fold_buttons": true,
    "fallback_encoding": "Western (Windows 1252)",
    "file_exclude_patterns":
    [
        "*.pyc",
        "*.pyo",
        "*.exe",
        "*.dll",
        "*.obj",
        "*.o",
        "*.a",
        "*.lib",
        "*.so",
        "*.dylib",
        "*.ncb",
        "*.sdf",
        "*.suo",
        "*.pdb",
        "*.idb",
        ".DS_Store",
        "*.class",
        "*.psd",
        "*.db"
    ],
    "find_selected_text": true,
    "fold_buttons": true,
    "folder_exclude_patterns":
    [
        ".svn",
        ".git",
        ".hg",
        "CVS"
    ],
    "font_face": "Source Code Pro",
    "font_options":
    [
    ],
    "font_size": 17,
    "gpu_window_buffer": "auto",
    "gutter": true,
    "highlight_line": false,
    "highlight_modified_tabs": true,
    "hot_exit": true,
    "ignored_packages":
    [
        "Vintage"
    ],
    "indent_guide_options":
    [
        "draw_normal"
    ],
    "indent_subsequent_lines": true,
    "indent_to_bracket": false,
    "line_numbers": true,
    "line_padding_bottom": -1,
    "line_padding_top": -3,
    "margin": 4,
    "match_brackets": true,
    "match_brackets_angle": false,
    "match_brackets_braces": true,
    "match_brackets_content": true,
    "match_brackets_square": true,
    "match_selection": true,
    "match_tags": true,
    "material_theme_accent_acid-lime": true,
    "material_theme_accent_indigo": false,
    "material_theme_accent_lime": false,
    "material_theme_accent_orange": false,
    "material_theme_accent_pink": false,
    "material_theme_accent_purple": false,
    "material_theme_accent_red": false,
    "material_theme_accent_scrollbars": true,
    "material_theme_accent_sky": false,
    "material_theme_accent_tomato": false,
    "material_theme_accent_yellow": false,
    "material_theme_compact_sidebar": true,
    "material_theme_contrast_mode": true,
    "material_theme_small_statusbar": true,
    "material_theme_small_tab": true,
    "move_to_limit_on_up_down": false,
    "open_files_in_new_window": true,
    "overlay_scroll_bars": "system",
    "preview_on_click": true,
    "remember_open_files": true,
    "rulers":
    [
    ],
    "save_on_focus_lost": false,
    "scroll_past_end": true,
    "scroll_speed": 1.0,
    "shift_tab_unindent": false,
    "show_full_path": true,
    "show_panel_on_build": true,
    "show_tab_close_buttons": true,
    "smart_indent": true,
    "spell_check": false,
    "tab_completion": true,
    "tab_size": 4,
    "theme": "Material-Theme.sublime-theme",
    "translate_tabs_to_spaces": true,
    "tree_animation_enabled": true,
    "trim_automatic_white_space": true,
    "trim_trailing_white_space_on_save": true,
    "use_simple_full_screen": true,
    "use_tab_stops": true,
    "word_separators": "./\\()\"'-:,.;<>~!@#$%^&*|+=[]{}`~?",
    "word_wrap": false,
    "wrap_width": 0
}

快捷键

[
    { "keys": ["ctrl+shift+n"], "command": "new_window" },
    { "keys": ["ctrl+shift+w"], "command": "close_window" },
    { "keys": ["ctrl+o"], "command": "prompt_open_file" },
    { "keys": ["ctrl+shift+t"], "command": "reopen_last_file" },
    { "keys": ["alt+o"], "command": "switch_file", "args": {"extensions": ["cpp", "cxx", "cc", "c", "hpp", "hxx", "hh", "h", "ipp", "inl", "m", "mm"]} },
    { "keys": ["ctrl+n"], "command": "new_file" },
    { "keys": ["ctrl+s"], "command": "save" },
    { "keys": ["ctrl+shift+s"], "command": "prompt_save_as" },
    { "keys": ["ctrl+f4"], "command": "close_file" },
    { "keys": ["ctrl+w"], "command": "close" },

    { "keys": ["ctrl+alt+s"], "command": "toggle_side_bar" },
    { "keys": ["f11"], "command": "toggle_full_screen" },
    { "keys": ["shift+f11"], "command": "toggle_distraction_free" },

    { "keys": ["backspace"], "command": "left_delete" },
    { "keys": ["shift+backspace"], "command": "left_delete" },
    { "keys": ["ctrl+shift+backspace"], "command": "left_delete" },
    { "keys": ["delete"], "command": "right_delete" },
    { "keys": ["enter"], "command": "insert", "args": {"characters": "\n"} },
    { "keys": ["shift+enter"], "command": "insert", "args": {"characters": "\n"} },

    { "keys": ["ctrl+z"], "command": "undo" },
    { "keys": ["ctrl+shift+z"], "command": "redo" },
    { "keys": ["ctrl+y"], "command": "redo_or_repeat" },
    { "keys": ["ctrl+u"], "command": "soft_undo" },
    { "keys": ["ctrl+shift+u"], "command": "soft_redo" },

    { "keys": ["shift+delete"], "command": "cut" },
    { "keys": ["ctrl+insert"], "command": "copy" },
    { "keys": ["shift+insert"], "command": "paste" },
    { "keys": ["ctrl+x"], "command": "cut" },
    { "keys": ["ctrl+c"], "command": "copy" },
    { "keys": ["ctrl+v"], "command": "paste" },
    { "keys": ["ctrl+shift+v"], "command": "paste_and_indent" },
    { "keys": ["ctrl+k", "ctrl+v"], "command": "paste_from_history" },

    { "keys": ["left"], "command": "move", "args": {"by": "characters", "forward": false} },
    { "keys": ["right"], "command": "move", "args": {"by": "characters", "forward": true} },
    { "keys": ["up"], "command": "move", "args": {"by": "lines", "forward": false} },
    { "keys": ["down"], "command": "move", "args": {"by": "lines", "forward": true} },
    { "keys": ["shift+left"], "command": "move", "args": {"by": "characters", "forward": false, "extend": true} },
    { "keys": ["shift+right"], "command": "move", "args": {"by": "characters", "forward": true, "extend": true} },
    { "keys": ["shift+up"], "command": "move", "args": {"by": "lines", "forward": false, "extend": true} },
    { "keys": ["shift+down"], "command": "move", "args": {"by": "lines", "forward": true, "extend": true} },

    { "keys": ["ctrl+left"], "command": "move", "args": {"by": "words", "forward": false} },
    { "keys": ["ctrl+right"], "command": "move", "args": {"by": "word_ends", "forward": true} },
    { "keys": ["ctrl+shift+left"], "command": "move", "args": {"by": "words", "forward": false, "extend": true} },
    { "keys": ["ctrl+shift+right"], "command": "move", "args": {"by": "word_ends", "forward": true, "extend": true} },

    { "keys": ["alt+left"], "command": "move", "args": {"by": "subwords", "forward": false} },
    { "keys": ["alt+right"], "command": "move", "args": {"by": "subword_ends", "forward": true} },
    { "keys": ["alt+shift+left"], "command": "move", "args": {"by": "subwords", "forward": false, "extend": true} },
    { "keys": ["alt+shift+right"], "command": "move", "args": {"by": "subword_ends", "forward": true, "extend": true} },

    { "keys": ["ctrl+alt+up"], "command": "select_lines", "args": {"forward": false} },
    { "keys": ["ctrl+alt+down"], "command": "select_lines", "args": {"forward": true} },

    { "keys": ["pageup"], "command": "move", "args": {"by": "pages", "forward": false} },
    { "keys": ["pagedown"], "command": "move", "args": {"by": "pages", "forward": true} },
    { "keys": ["shift+pageup"], "command": "move", "args": {"by": "pages", "forward": false, "extend": true} },
    { "keys": ["shift+pagedown"], "command": "move", "args": {"by": "pages", "forward": true, "extend": true} },

    { "keys": ["home"], "command": "move_to", "args": {"to": "bol", "extend": false} },
    { "keys": ["end"], "command": "move_to", "args": {"to": "eol", "extend": false} },
    { "keys": ["shift+home"], "command": "move_to", "args": {"to": "bol", "extend": true} },
    { "keys": ["shift+end"], "command": "move_to", "args": {"to": "eol", "extend": true} },
    { "keys": ["ctrl+home"], "command": "move_to", "args": {"to": "bof", "extend": false} },
    { "keys": ["ctrl+end"], "command": "move_to", "args": {"to": "eof", "extend": false} },
    { "keys": ["ctrl+shift+home"], "command": "move_to", "args": {"to": "bof", "extend": true} },
    { "keys": ["ctrl+shift+end"], "command": "move_to", "args": {"to": "eof", "extend": true} },


    { "keys": ["ctrl+up"], "command": "scroll_lines", "args": {"amount": 1.0 } },
    { "keys": ["ctrl+down"], "command": "scroll_lines", "args": {"amount": -1.0 } },

    { "keys": ["ctrl+pagedown"], "command": "next_view" },
    { "keys": ["ctrl+pageup"], "command": "prev_view" },

    { "keys": ["ctrl+tab"], "command": "next_view_in_stack" },
    { "keys": ["ctrl+shift+tab"], "command": "prev_view_in_stack" },

    { "keys": ["ctrl+a"], "command": "select_all" },
    { "keys": ["ctrl+shift+l"], "command": "split_selection_into_lines" },
    { "keys": ["escape"], "command": "single_selection", "context":
        [
            { "key": "num_selections", "operator": "not_equal", "operand": 1 }
        ]
    },
    { "keys": ["escape"], "command": "clear_fields", "context":
        [
            { "key": "has_next_field", "operator": "equal", "operand": true }
        ]
    },
    { "keys": ["escape"], "command": "clear_fields", "context":
        [
            { "key": "has_prev_field", "operator": "equal", "operand": true }
        ]
    },
    { "keys": ["escape"], "command": "hide_panel", "args": {"cancel": true},
        "context":
        [
            { "key": "panel_visible", "operator": "equal", "operand": true }
        ]
    },
    { "keys": ["escape"], "command": "hide_overlay", "context":
        [
            { "key": "overlay_visible", "operator": "equal", "operand": true }
        ]
    },
    { "keys": ["escape"], "command": "hide_popup", "context":
        [
            { "key": "popup_visible", "operator": "equal", "operand": true }
        ]
    },
    { "keys": ["escape"], "command": "hide_auto_complete", "context":
        [
            { "key": "auto_complete_visible", "operator": "equal", "operand": true }
        ]
    },

    { "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": true} },
    { "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": false},
        "context":
        [
            { "key": "setting.tab_completion", "operator": "equal", "operand": true },
            { "key": "preceding_text", "operator": "not_regex_match", "operand": ".*\\b[0-9]+$", "match_all": true },
        ]
    },
    { "keys": ["tab"], "command": "replace_completion_with_next_completion", "context":
        [
            { "key": "last_command", "operator": "equal", "operand": "insert_best_completion" },
            { "key": "setting.tab_completion", "operator": "equal", "operand": true }
        ]
    },
    { "keys": ["tab"], "command": "reindent", "context":
        [
            { "key": "setting.auto_indent", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "preceding_text", "operator": "regex_match", "operand": "^$", "match_all": true },
            { "key": "following_text", "operator": "regex_match", "operand": "^$", "match_all": true }
        ]
    },
    { "keys": ["tab"], "command": "indent", "context":
        [
            { "key": "text", "operator": "regex_contains", "operand": "\n" }
        ]
    },
    { "keys": ["tab"], "command": "next_field", "context":
        [
            { "key": "has_next_field", "operator": "equal", "operand": true }
        ]
    },
    { "keys": ["tab"], "command": "commit_completion", "context":
        [
            { "key": "auto_complete_visible" },
            { "key": "setting.auto_complete_commit_on_tab" }
        ]
    },

    { "keys": ["shift+tab"], "command": "insert", "args": {"characters": "\t"} },
    { "keys": ["shift+tab"], "command": "unindent", "context":
        [
            { "key": "setting.shift_tab_unindent", "operator": "equal", "operand": true }
        ]
    },
    { "keys": ["shift+tab"], "command": "unindent", "context":
        [
            { "key": "preceding_text", "operator": "regex_match", "operand": "^[\t ]*" }
        ]
    },
    { "keys": ["shift+tab"], "command": "unindent", "context":
        [
            { "key": "text", "operator": "regex_contains", "operand": "\n" }
        ]
    },
    { "keys": ["shift+tab"], "command": "prev_field", "context":
        [
            { "key": "has_prev_field", "operator": "equal", "operand": true }
        ]
    },

    { "keys": ["ctrl+]"], "command": "indent" },
    { "keys": ["ctrl+["], "command": "unindent" },

    { "keys": ["insert"], "command": "toggle_overwrite" },

    { "keys": ["ctrl+l"], "command": "expand_selection", "args": {"to": "line"} },
    { "keys": ["ctrl+d"], "command": "find_under_expand" },
    { "keys": ["ctrl+k", "ctrl+d"], "command": "find_under_expand_skip" },
    { "keys": ["ctrl+shift+space"], "command": "expand_selection", "args": {"to": "scope"} },
    { "keys": ["ctrl+shift+m"], "command": "expand_selection", "args": {"to": "brackets"} },
    { "keys": ["ctrl+m"], "command": "move_to", "args": {"to": "brackets"} },
    { "keys": ["ctrl+shift+j"], "command": "expand_selection", "args": {"to": "indentation"} },
    { "keys": ["ctrl+shift+a"], "command": "expand_selection", "args": {"to": "tag"} },

    { "keys": ["alt+."], "command": "close_tag" },

    { "keys": ["ctrl+q"], "command": "toggle_record_macro" },
    { "keys": ["ctrl+shift+q"], "command": "run_macro" },

    { "keys": ["ctrl+enter"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Add Line.sublime-macro"} },
    { "keys": ["ctrl+shift+enter"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Add Line Before.sublime-macro"} },
    { "keys": ["enter"], "command": "commit_completion", "context":
        [
            { "key": "auto_complete_visible" },
            { "key": "setting.auto_complete_commit_on_tab", "operand": false }
        ]
    },

    { "keys": ["ctrl+p"], "command": "show_overlay", "args": {"overlay": "goto", "show_files": true} },
    { "keys": ["ctrl+shift+p"], "command": "show_overlay", "args": {"overlay": "command_palette"} },
    { "keys": ["ctrl+r"], "command": "show_overlay", "args": {"overlay": "goto", "text": "@"} },
    { "keys": ["ctrl+g"], "command": "show_overlay", "args": {"overlay": "goto", "text": ":"} },
    { "keys": ["ctrl+;"], "command": "show_overlay", "args": {"overlay": "goto", "text": "#"} },
    { "keys": ["f12"], "command": "goto_definition" },
    { "keys": ["shift+f12"], "command": "goto_reference" },
    { "keys": ["ctrl+shift+r"], "command": "goto_symbol_in_project" },
    { "keys": ["alt+keypad_minus"], "command": "jump_back" },
    { "keys": ["alt+shift+keypad_minus"], "command": "jump_forward" },
    { "keys": ["alt+-"], "command": "jump_back" },
    { "keys": ["alt+shift+-"], "command": "jump_forward" },

    { "keys": ["ctrl+i"], "command": "show_panel", "args": {"panel": "incremental_find", "reverse": false} },
    { "keys": ["ctrl+shift+i"], "command": "show_panel", "args": {"panel": "incremental_find", "reverse": true} },
    { "keys": ["ctrl+f"], "command": "show_panel", "args": {"panel": "find", "reverse": false} },
    { "keys": ["ctrl+h"], "command": "show_panel", "args": {"panel": "replace", "reverse": false} },
    { "keys": ["ctrl+shift+h"], "command": "replace_next" },
    { "keys": ["f3"], "command": "find_next" },
    { "keys": ["shift+f3"], "command": "find_prev" },
    { "keys": ["ctrl+f3"], "command": "find_under" },
    { "keys": ["ctrl+shift+f3"], "command": "find_under_prev" },
    { "keys": ["alt+f3"], "command": "find_all_under" },
    { "keys": ["ctrl+e"], "command": "slurp_find_string" },
    { "keys": ["ctrl+shift+e"], "command": "slurp_replace_string" },
    { "keys": ["ctrl+shift+f"], "command": "show_panel", "args": {"panel": "find_in_files"} },
    { "keys": ["f4"], "command": "next_result" },
    { "keys": ["shift+f4"], "command": "prev_result" },

    { "keys": ["ctrl+."], "command": "next_modification" },
    { "keys": ["ctrl+,"], "command": "prev_modification" },
    { "keys": ["ctrl+k", "ctrl+z"], "command": "revert_modification" },
    { "keys": ["ctrl+k", "ctrl+/"], "command": "toggle_inline_diff" },
    { "keys": ["ctrl+k", "ctrl+;"], "command": "toggle_inline_diff", "args": { "prefer_hide": true } },

    { "keys": ["f6"], "command": "toggle_setting", "args": {"setting": "spell_check"} },
    { "keys": ["ctrl+f6"], "command": "next_misspelling" },
    { "keys": ["ctrl+shift+f6"], "command": "prev_misspelling" },

    { "keys": ["ctrl+shift+up"], "command": "swap_line_up" },
    { "keys": ["ctrl+shift+down"], "command": "swap_line_down" },

    { "keys": ["ctrl+backspace"], "command": "delete_word", "args": { "forward": false } },
    { "keys": ["ctrl+shift+backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete to Hard BOL.sublime-macro"} },

    { "keys": ["ctrl+delete"], "command": "delete_word", "args": { "forward": true } },
    { "keys": ["ctrl+shift+delete"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete to Hard EOL.sublime-macro"} },

    { "keys": ["ctrl+/"], "command": "toggle_comment", "args": { "block": false } },
    { "keys": ["ctrl+shift+/"], "command": "toggle_comment", "args": { "block": true } },

    { "keys": ["ctrl+j"], "command": "join_lines" },
    { "keys": ["ctrl+shift+d"], "command": "duplicate_line" },

    { "keys": ["ctrl+`"], "command": "show_panel", "args": {"panel": "console", "toggle": true} },

    { "keys": ["ctrl+space"], "command": "auto_complete" },
    { "keys": ["ctrl+space"], "command": "replace_completion_with_auto_complete", "context":
        [
            { "key": "last_command", "operator": "equal", "operand": "insert_best_completion" },
            { "key": "auto_complete_visible", "operator": "equal", "operand": false },
            { "key": "setting.tab_completion", "operator": "equal", "operand": true }
        ]
    },

    { "keys": ["ctrl+alt+shift+p"], "command": "show_scope_name" },

    { "keys": ["f7"], "command": "build" },
    { "keys": ["ctrl+b"], "command": "build" },
    { "keys": ["ctrl+alt+b"], "command": "build", "args": {"select": true} },
    { "keys": ["ctrl+break"], "command": "cancel_build" },

    { "keys": ["ctrl+t"], "command": "transpose" },

    { "keys": ["f9"], "command": "sort_lines", "args": {"case_sensitive": false} },
    { "keys": ["ctrl+f9"], "command": "sort_lines", "args": {"case_sensitive": true} },

    // Auto-pair quotes
    { "keys": ["\""], "command": "insert_snippet", "args": {"contents": "\"$0\""}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|>|$)", "match_all": true },
            { "key": "preceding_text", "operator": "not_regex_contains", "operand": "[\"a-zA-Z0-9_]$", "match_all": true },
            { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true }
        ]
    },
    { "keys": ["\""], "command": "insert_snippet", "args": {"contents": "\"${0:$SELECTION}\""}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
        ]
    },
    { "keys": ["\""], "command": "move", "args": {"by": "characters", "forward": true}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "following_text", "operator": "regex_contains", "operand": "^\"", "match_all": true },
            { "key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true },
            { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true },
        ]
    },
    { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "preceding_text", "operator": "regex_contains", "operand": "\"$", "match_all": true },
            { "key": "following_text", "operator": "regex_contains", "operand": "^\"", "match_all": true },
            { "key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true },
            { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true },
        ]
    },

    // Auto-pair single quotes
    { "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'$0'"}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|>|$)", "match_all": true },
            { "key": "preceding_text", "operator": "not_regex_contains", "operand": "['a-zA-Z0-9_]$", "match_all": true },
            { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true }
        ]
    },
    { "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'${0:$SELECTION}'"}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
        ]
    },
    { "keys": ["'"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "following_text", "operator": "regex_contains", "operand": "^'", "match_all": true },
            { "key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true },
            { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true },
        ]
    },
    { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "preceding_text", "operator": "regex_contains", "operand": "'$", "match_all": true },
            { "key": "following_text", "operator": "regex_contains", "operand": "^'", "match_all": true },
            { "key": "selector", "operator": "not_equal", "operand": "punctuation.definition.string.begin", "match_all": true },
            { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true },
        ]
    },

    // Auto-pair brackets
    { "keys": ["("], "command": "insert_snippet", "args": {"contents": "($0)"}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true }
        ]
    },
    { "keys": ["("], "command": "insert_snippet", "args": {"contents": "(${0:$SELECTION})"}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
        ]
    },
    { "keys": [")"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "following_text", "operator": "regex_contains", "operand": "^\\)", "match_all": true }
        ]
    },
    { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "preceding_text", "operator": "regex_contains", "operand": "\\($", "match_all": true },
            { "key": "following_text", "operator": "regex_contains", "operand": "^\\)", "match_all": true }
        ]
    },

    // Auto-pair square brackets
    { "keys": ["["], "command": "insert_snippet", "args": {"contents": "[$0]"}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true }
        ]
    },
    { "keys": ["["], "command": "insert_snippet", "args": {"contents": "[${0:$SELECTION}]"}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
        ]
    },
    { "keys": ["]"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "following_text", "operator": "regex_contains", "operand": "^\\]", "match_all": true }
        ]
    },
    { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "preceding_text", "operator": "regex_contains", "operand": "\\[$", "match_all": true },
            { "key": "following_text", "operator": "regex_contains", "operand": "^\\]", "match_all": true }
        ]
    },

    // Auto-pair curly brackets
    { "keys": ["{"], "command": "insert_snippet", "args": {"contents": "{$0}"}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|$)", "match_all": true }
        ]
    },
    { "keys": ["{"], "command": "wrap_block", "args": {"begin": "{", "end": "}"}, "context":
        [
            { "key": "indented_block", "match_all": true },
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "following_text", "operator": "regex_match", "operand": "^$", "match_all": true },
        ]
    },
    { "keys": ["{"], "command": "insert_snippet", "args": {"contents": "{${0:$SELECTION}}"}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
        ]
    },
    { "keys": ["}"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true }
        ]
    },
    { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true },
            { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true }
        ]
    },

    { "keys": ["enter"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Add Line in Braces.sublime-macro"}, "context":
        [
            { "key": "setting.auto_indent", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true },
            { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true }
        ]
    },
    { "keys": ["shift+enter"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Add Line in Braces.sublime-macro"}, "context":
        [
            { "key": "setting.auto_indent", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true },
            { "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true }
        ]
    },

    { "keys": ["enter"], "command": "auto_indent_tag", "context":
        [
            { "key": "setting.auto_indent", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "selector", "operator": "equal", "operand": "punctuation.definition.tag.begin", "match_all": true },
            { "key": "preceding_text", "operator": "regex_contains", "operand": ">$", "match_all": true },
            { "key": "following_text", "operator": "regex_contains", "operand": "^</", "match_all": true },
        ]
    },
    { "keys": ["shift+enter"], "command": "auto_indent_tag", "context":
        [
            { "key": "setting.auto_indent", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "selector", "operator": "equal", "operand": "punctuation.definition.tag.begin", "match_all": true },
            { "key": "preceding_text", "operator": "regex_contains", "operand": ">$", "match_all": true },
            { "key": "following_text", "operator": "regex_contains", "operand": "^</", "match_all": true },
        ]
    },

    {
        "keys": ["alt+shift+1"],
        "command": "set_layout",
        "args":
        {
            "cols": [0.0, 1.0],
            "rows": [0.0, 1.0],
            "cells": [[0, 0, 1, 1]]
        }
    },
    {
        "keys": ["alt+shift+2"],
        "command": "set_layout",
        "args":
        {
            "cols": [0.0, 0.5, 1.0],
            "rows": [0.0, 1.0],
            "cells": [[0, 0, 1, 1], [1, 0, 2, 1]]
        }
    },
    {
        "keys": ["alt+shift+3"],
        "command": "set_layout",
        "args":
        {
            "cols": [0.0, 0.33, 0.66, 1.0],
            "rows": [0.0, 1.0],
            "cells": [[0, 0, 1, 1], [1, 0, 2, 1], [2, 0, 3, 1]]
        }
    },
    {
        "keys": ["alt+shift+4"],
        "command": "set_layout",
        "args":
        {
            "cols": [0.0, 0.25, 0.5, 0.75, 1.0],
            "rows": [0.0, 1.0],
            "cells": [[0, 0, 1, 1], [1, 0, 2, 1], [2, 0, 3, 1], [3, 0, 4, 1]]
        }
    },
    {
        "keys": ["alt+shift+8"],
        "command": "set_layout",
        "args":
        {
            "cols": [0.0, 1.0],
            "rows": [0.0, 0.5, 1.0],
            "cells": [[0, 0, 1, 1], [0, 1, 1, 2]]
        }
    },
    {
        "keys": ["alt+shift+9"],
        "command": "set_layout",
        "args":
        {
            "cols": [0.0, 1.0],
            "rows": [0.0, 0.33, 0.66, 1.0],
            "cells": [[0, 0, 1, 1], [0, 1, 1, 2], [0, 2, 1, 3]]
        }
    },
    {
        "keys": ["alt+shift+5"],
        "command": "set_layout",
        "args":
        {
            "cols": [0.0, 0.5, 1.0],
            "rows": [0.0, 0.5, 1.0],
            "cells":
            [
                [0, 0, 1, 1], [1, 0, 2, 1],
                [0, 1, 1, 2], [1, 1, 2, 2]
            ]
        }
    },
    { "keys": ["ctrl+1"], "command": "focus_group", "args": { "group": 0 } },
    { "keys": ["ctrl+2"], "command": "focus_group", "args": { "group": 1 } },
    { "keys": ["ctrl+3"], "command": "focus_group", "args": { "group": 2 } },
    { "keys": ["ctrl+4"], "command": "focus_group", "args": { "group": 3 } },
    { "keys": ["ctrl+5"], "command": "focus_group", "args": { "group": 4 } },
    { "keys": ["ctrl+6"], "command": "focus_group", "args": { "group": 5 } },
    { "keys": ["ctrl+7"], "command": "focus_group", "args": { "group": 6 } },
    { "keys": ["ctrl+8"], "command": "focus_group", "args": { "group": 7 } },
    { "keys": ["ctrl+9"], "command": "focus_group", "args": { "group": 8 } },
    { "keys": ["ctrl+shift+1"], "command": "move_to_group", "args": { "group": 0 } },
    { "keys": ["ctrl+shift+2"], "command": "move_to_group", "args": { "group": 1 } },
    { "keys": ["ctrl+shift+3"], "command": "move_to_group", "args": { "group": 2 } },
    { "keys": ["ctrl+shift+4"], "command": "move_to_group", "args": { "group": 3 } },
    { "keys": ["ctrl+shift+5"], "command": "move_to_group", "args": { "group": 4 } },
    { "keys": ["ctrl+shift+6"], "command": "move_to_group", "args": { "group": 5 } },
    { "keys": ["ctrl+shift+7"], "command": "move_to_group", "args": { "group": 6 } },
    { "keys": ["ctrl+shift+8"], "command": "move_to_group", "args": { "group": 7 } },
    { "keys": ["ctrl+shift+9"], "command": "move_to_group", "args": { "group": 8 } },
    { "keys": ["ctrl+0"], "command": "focus_side_bar" },

    { "keys": ["ctrl+k", "ctrl+up"], "command": "new_pane" },
    { "keys": ["ctrl+k", "ctrl+shift+up"], "command": "new_pane", "args": {"move": false} },
    { "keys": ["ctrl+k", "ctrl+down"], "command": "close_pane" },
    { "keys": ["ctrl+k", "ctrl+left"], "command": "focus_neighboring_group", "args": {"forward": false} },
    { "keys": ["ctrl+k", "ctrl+right"], "command": "focus_neighboring_group" },
    { "keys": ["ctrl+k", "ctrl+shift+left"], "command": "move_to_neighboring_group", "args": {"forward": false} },
    { "keys": ["ctrl+k", "ctrl+shift+right"], "command": "move_to_neighboring_group" },

    { "keys": ["alt+1"], "command": "select_by_index", "args": { "index": 0 } },
    { "keys": ["alt+2"], "command": "select_by_index", "args": { "index": 1 } },
    { "keys": ["alt+3"], "command": "select_by_index", "args": { "index": 2 } },
    { "keys": ["alt+4"], "command": "select_by_index", "args": { "index": 3 } },
    { "keys": ["alt+5"], "command": "select_by_index", "args": { "index": 4 } },
    { "keys": ["alt+6"], "command": "select_by_index", "args": { "index": 5 } },
    { "keys": ["alt+7"], "command": "select_by_index", "args": { "index": 6 } },
    { "keys": ["alt+8"], "command": "select_by_index", "args": { "index": 7 } },
    { "keys": ["alt+9"], "command": "select_by_index", "args": { "index": 8 } },
    { "keys": ["alt+0"], "command": "select_by_index", "args": { "index": 9 } },

    { "keys": ["f2"], "command": "next_bookmark" },
    { "keys": ["shift+f2"], "command": "prev_bookmark" },
    { "keys": ["ctrl+f2"], "command": "toggle_bookmark" },
    { "keys": ["ctrl+shift+f2"], "command": "clear_bookmarks" },
    { "keys": ["alt+f2"], "command": "select_all_bookmarks" },

    { "keys": ["ctrl+shift+k"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Line.sublime-macro"} },

    { "keys": ["alt+q"], "command": "wrap_lines" },

    { "keys": ["ctrl+k", "ctrl+u"], "command": "upper_case" },
    { "keys": ["ctrl+k", "ctrl+l"], "command": "lower_case" },

    { "keys": ["ctrl+k", "ctrl+space"], "command": "set_mark" },
    { "keys": ["ctrl+k", "ctrl+a"], "command": "select_to_mark" },
    { "keys": ["ctrl+k", "ctrl+w"], "command": "delete_to_mark" },
    { "keys": ["ctrl+k", "ctrl+x"], "command": "swap_with_mark" },
    { "keys": ["ctrl+k", "ctrl+y"], "command": "yank" },
    { "keys": ["ctrl+k", "ctrl+k"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete to Hard EOL.sublime-macro"} },
    { "keys": ["ctrl+k", "ctrl+backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete to Hard BOL.sublime-macro"} },
    { "keys": ["ctrl+k", "ctrl+g"], "command": "clear_bookmarks", "args": {"name": "mark"} },
    { "keys": ["ctrl+k", "ctrl+c"], "command": "show_at_center" },

    { "keys": ["ctrl++"], "command": "increase_font_size" },
    { "keys": ["ctrl+="], "command": "increase_font_size" },
    { "keys": ["ctrl+keypad_plus"], "command": "increase_font_size" },
    { "keys": ["ctrl+-"], "command": "decrease_font_size" },
    { "keys": ["ctrl+keypad_minus"], "command": "decrease_font_size" },

    { "keys": ["ctrl+equals"], "command": "increase_font_size" },
    { "keys": ["ctrl+shift+equals"], "command": "decrease_font_size" },
    { "keys": ["ctrl+shift+keypad_plus"], "command": "decrease_font_size" },

    { "keys": ["alt+shift+w"], "command": "insert_snippet", "args": { "name": "Packages/XML/Snippets/long-tag.sublime-snippet" } },

    { "keys": ["ctrl+shift+["], "command": "fold" },
    { "keys": ["ctrl+shift+]"], "command": "unfold" },
    { "keys": ["ctrl+k", "ctrl+1"], "command": "fold_by_level", "args": {"level": 1} },
    { "keys": ["ctrl+k", "ctrl+2"], "command": "fold_by_level", "args": {"level": 2} },
    { "keys": ["ctrl+k", "ctrl+3"], "command": "fold_by_level", "args": {"level": 3} },
    { "keys": ["ctrl+k", "ctrl+4"], "command": "fold_by_level", "args": {"level": 4} },
    { "keys": ["ctrl+k", "ctrl+5"], "command": "fold_by_level", "args": {"level": 5} },
    { "keys": ["ctrl+k", "ctrl+6"], "command": "fold_by_level", "args": {"level": 6} },
    { "keys": ["ctrl+k", "ctrl+7"], "command": "fold_by_level", "args": {"level": 7} },
    { "keys": ["ctrl+k", "ctrl+8"], "command": "fold_by_level", "args": {"level": 8} },
    { "keys": ["ctrl+k", "ctrl+9"], "command": "fold_by_level", "args": {"level": 9} },
    { "keys": ["ctrl+k", "ctrl+0"], "command": "unfold_all" },
    { "keys": ["ctrl+k", "ctrl+j"], "command": "unfold_all" },
    { "keys": ["ctrl+k", "ctrl+t"], "command": "fold_tag_attributes" },

    { "keys": ["context_menu"], "command": "context_menu" },

    { "keys": ["alt+c"], "command": "toggle_case_sensitive", "context":
        [
            { "key": "setting.is_widget", "operator": "equal", "operand": true }
        ]
    },
    { "keys": ["alt+r"], "command": "toggle_regex", "context":
        [
            { "key": "setting.is_widget", "operator": "equal", "operand": true }
        ]
    },
    { "keys": ["alt+w"], "command": "toggle_whole_word", "context":
        [
            { "key": "setting.is_widget", "operator": "equal", "operand": true }
        ]
    },
    { "keys": ["alt+a"], "command": "toggle_preserve_case", "context":
        [
            { "key": "setting.is_widget", "operator": "equal", "operand": true }
        ]
    },

    // Find panel key bindings
    { "keys": ["enter"], "command": "find_next", "context":
        [{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
    },
    { "keys": ["shift+enter"], "command": "find_prev", "context":
        [{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
    },
    { "keys": ["alt+enter"], "command": "find_all", "args": {"close_panel": true},
         "context": [{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
    },

    // Replace panel key bindings
    { "keys": ["enter"], "command": "find_next", "context":
        [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
    },
    { "keys": ["shift+enter"], "command": "find_prev", "context":
        [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
    },
    { "keys": ["alt+enter"], "command": "find_all", "args": {"close_panel": true},
        "context": [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
    },
    { "keys": ["ctrl+alt+enter"], "command": "replace_all", "args": {"close_panel": true},
         "context": [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
    },

    // Incremental find panel key bindings
    { "keys": ["enter"], "command": "hide_panel", "context":
        [{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
    },
    { "keys": ["shift+enter"], "command": "find_prev", "context":
        [{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
    },
    { "keys": ["alt+enter"], "command": "find_all", "args": {"close_panel": true},
        "context": [{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
    },

    // Find in Files panel key bindings
    { "keys": ["alt+enter"], "command": "find_all",
         "context": [{"key": "panel", "operand": "find_in_files"}, {"key": "panel_has_focus"}]
    },
    { "keys": ["ctrl+alt+enter"], "command": "replace_all",
         "context": [{"key": "panel", "operand": "find_in_files"}, {"key": "panel_has_focus"}]
    },

    // HTML, XML close tag
    { "keys": ["/"], "command": "close_tag", "args": { "insert_slash": true }, "context":
        [
            { "key": "selector", "operator": "equal", "operand": "(text.html, text.xml) - string - comment", "match_all": true },
            { "key": "preceding_text", "operator": "regex_match", "operand": ".*<$", "match_all": true },
            { "key": "setting.auto_close_tags" }
        ]
    },
{ "keys": ["enter"], "command": "insert_best_completion", "args": {"default": "\n", "exact": true}},
{ "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": true}},
{ "keys": ["ctrl+alt+b"], "command": "build", "args": {"select": true} },
]

配置好了这些快捷键,你也得会用啊。
不要慌,细心的小编让大家打包带走👍Sublime text3快捷键一包通


好了,此时Sublime text3的基本配置就ok了。
下面是重中之重。

用户代码段:
默认打开时是这样的:

<snippet>
    <content><![CDATA[
Hello, ${1:this} is a ${2:snippet}.
]]></content>
    <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    <!-- <tabTrigger>hello</tabTrigger> -->
    <!-- Optional: Set a scope to limit where the snippet will trigger -->
    <!-- <scope>source.python</scope> -->
</snippet>

按照楼下我的中文提示来加入你想要的代码段:

<snippet>
    <content><![CDATA[<!-- 你要的代码段 -->]]></content>
    <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    <tabTrigger><!-- 你的快捷键例如是a,按下a后tab,就是你的代码段 --></tabTrigger>
    <!-- Optional: Set a scope to limit where the snippet will trigger -->
    <scope>source.<!-- 你的语言,我的是source.c++ --></scope>
</snippet>

举个栗子:

<snippet>
    <content><![CDATA[
/* Kevin's code */
#include <stdio.h>
int main() {
    ${2:}
${3:    return 0;
}}]]></content>
    <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    <tabTrigger>c</tabTrigger>
    <!-- Optional: Set a scope to limit where the snippet will trigger -->
    <scope>source.c</scope>
</snippet>

也就说,我在C语言下(source.c)输入c(<tabTrigger>c</tabTrigger>)按下Tab,会出现:

/* Kevin's code */
#include <stdio.h>
int main() {

    return 0;
}

你们可能会问:为什么没有那个${2:}?
其实这是Sublime text3的一个特殊语法,意思是:
光标第二个移到这里来,如果有第一个,即
${1:},
则不执行。
若没有,光标第一个移到这里来。
如果在大括号里面有东西,则选中它。
如果同时出现多个光标定义,则打开多行修改。
总的来说就是 ${数字:内容}.

现在,赶快去给你的Sublime text3定制想要的代码段吧!

如果代码段中有中文,请将编码改成UTF-8:

然后保存,以 .sublime-snippet 作为文件后缀。

其实Sublime text3能下载到的color scheme并不是非常好看清晰,我在这里为大家提供一种方案:
👇👇👇👇👇👇👇👇👇福利来啦!

自定义配色在线工具
选择你喜欢的,下载下来,放到Sublime text3安装目录下data—>Cache里面,便可以搜索使用:

最后,就是编译系统了。
其实安装插件:C++ & C Single File Builder - Minghang Yang
设置MinGW64下的bin目录为系统Path
这个设置网上有很多,可以参考:Windows10配置path

那你的Sublime text3已经配置得差不多了,
有点积分的大佬可以直接下载使用,轻松方便,迷你可移动。
超方便SublimeText3170.rar
没有积分的朋友们也不用担心,按照我的方法去配置也是一样的,就是有点麻烦。
谢谢你的查看,希望这篇博客能让你受益😁
还是那句话:
当你看到这篇文章,请留下你的赞赞给一个害羞的初中生信心❤
希望喜欢的朋友留下评论,让小编继续改进。留下赞赞,给小编信心😁。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值