Sublime Text is a lightweight and very popular programming text editor out there. Even though it’s lightweight, it supports advanced features like Visual Studio Code or Atom.
Sublime Text has packages that you can install on Sublime Text to add additional features to Sublime Text. Like other editors such as Atom or Visual Studio Code, installing Packages in Sublime Text is a little hard. This is what this article is about.
How To Uninstall Apps In Mac
Uninstall Apps Using the Trash Can. The easiest way to uninstall an app or program from your Mac is by using the trash can located on the Dock. Drag the application from wherever it is located on your Mac and drop it on the trash can. When you empty the trash, the application is deleted. Sublime Text is available for Mac, Windows and Linux. One license is all you need to use Sublime Text on every computer you own, no matter what operating system it uses. Sublime Text uses a custom UI toolkit, optimized for speed and beauty, while taking advantage of native functionality on each platform. Launch Sublime Text 2 from the Mac OS X Terminal. Sublime Text 2 ships with a CLI called subl (why not 'sublime', go figure). This utility is hidden in the following folder (assuming you installed Sublime in /Applications like normal folk. If this following line opens Sublime Text for you, then bingo, you're ready.
In this article, I will show you how to use Package Control to install Packages in Sublime Text. Let’s get started.
Package Control is the package manager for Sublime Text. With Package Control you can manage Sublime Text packages. You can install new packages, list installed packages, remove installed packages, update packages and so on. It is a very handy tool for Sublime Text users.
All the Sublime Text packages are hosted in the Package Control’s official website at https://packagecontrol.io
Visit the website and search for what you need in here.
A lot of packages with your search keyword should be listed. You can click on any of the packages to learn more about it.
As you can see, very detailed description and how to use this package is given in the Package’s official page.
You can scroll down and see more information.
If you like this package, you can install it using Package Control in Sublime Text, which I will show you in the next section of this article.
Installing Package Control:
Package Control is very easy to install.
To install Package Control, Open Sublime Text and go to Toools > Install Package Control… as shown in the screenshot below.
Once you see the following dialog, click on OK. Package Control should be installed.
Installing Sublime Text Packages with Package Control:
Now that Package Control is installed, you can install Sublime Text packages with it.
To open Package Control, go to Preferences > Package Control as shown in the screenshot below.
You should see the following Package Control options. To install a new Sublime Text package, click on Package Control: Install Package as marked in the screenshot below.
Now you see the following pop up window. From here you can search for Sublime Text packages. Type in your query in the marked section of the screenshot below.
I searched for node, and as you can see, the search result is displayed. It’s a long list. You can use <Up> and <Down> arrow keys of your keyboard or your Mouse Scroll Wheel to navigate the search result. Once you find the package you like, click on it. I clicked on Nodejs package.
Package Control should download and install the package.
Once the package is installed, you may see something like this.
Now I can access Node.js package tools from Tools > Nodejs
Listing Installed Sublime Text Packages with Package Control:
You can find a list of all the packages installed in your Sublime Text editor with Package Control.
First open Package Control from Preferences > Package Control as before. Now click on Package Control: List Packages from the list as marked in the screenshot below.
The packages installed on your Sublime Text editor should be listed as you can see from the screenshot below.
If you click on any of the package from the list, a File Manager should open the directory where the package is installed. If you know how Sublime packages are made, you can modify required files in here.
Disable Sublime Text Packages with Package Control:
You can disable installed and enabled Sublime Text packages with Package Control.
Open Package Control and click on Package Control: Disable Package as marked in the screenshot below.
Now search and click on the package that you want to disable.
The package should be disabled. At times, you need to restart Sublime Text for the changes to take effect.
Enable Sublime Text Packages with Package Control:
You can enable the Sublime Text packages that you’ve disabled with Package Control.
The Sublime Text packages that you’ve disabled should be listed. Now click on the package that you want to enable from the list.
The package should be enabled. In my case, the Node.js package is enabled as you can see from the screenshot below.
Removing Sublime Text Packages with Package Control:
You can also remove the Sublime Text packages that you’ve installed with Package Control.
Just like before, open Package Control and click on Package Control: Remove Package as marked in the screenshot below.
You should see a list of Sublime Text packages that you’ve installed. Now click on any one of them from the list. It should be removed.
It should be removed. In my case, the Nodejs package is removed.
That’s how you manage Sublime Text packages with Package Control. Thanks for reading this article.
Sublime Text is a fast, powerful and easily extensible code editor. Check out some visual demos for a quick demonstration.
You can download and install Sublime Text 3 from the Sublime Text Website. Assuming you have access to the right repositories, you can also install Sublime via apt-get on Linux. Help and general documentation is available in the Sublime Text 3 Docs.
Sublime can be used on Linux, Windows and Mac as an IDE for developing Chromium. Here's what works:
- Editing code works well (especially if you're used to it and get used to the shortcuts).
- Navigating around the code works well. There are multiple ways to do this (a full list of keyboard shortcuts is available for Windows/Linux and Mac).
- Building works fairly well and it does a decent job of parsing errors so that you can click and jump to the problem spot.
Setup
Configuring Sublime
All global configuration for Sublime (including installed packages) is stored in
~/.config/sublime-text-3
(or %APPDATASublime Text 3
on Windows, or ~/Library/Application Support/Sublime Text 3
on Mac). We will reference the Linux folder for the rest of this tutorial, but replace with your own path if using a different OS. If you ever want a clean install, just remove this folder.Warning: If you have installed a license key for a paid version Sublime Text, removing this folder will delete the license key, too.
Most of the packages you will install will be placed in
~/.config/sublime- text-3/Packages/User
, where Sublime Text can detect them. You can also get to this folder by selecting Preferences > Browse Packages..
(or Sublime Text > Preferences > Browse Packages..
on Mac).A short word about paths
Certain packages require executables to be on your
PATH
, but Sublime gets the $PATH
variable from a login shell, not an interactive session (i.e. your path needs to be set in ~/.bash_profile
, ~/.zprofile
, etc, not ~/.bashrc
, ~/.zshrc
, etc). For more info, see Debugging Path Problems.Editing Preferences
Sublime configuration (including project files, key bindings, etc) is done via JSON files. All configurations have a Default config (usually provided with the program or package to document the available commands) and a User config (overrides the default; this is where your overrides go). For example, select
Preferences > Settings - Default
to see all the available settings for Sublime. You can override any of these in Preferences > Settings - User
.Here are some settings that help match the Chromium style guide:
The settings will take effect as soon as you save the file.
Tips
View > Side Bar > Show Open Files
will add a list of open files to the top of the sidebarCtrl+`
will show the console; it shows errors and debugging output, and you can run PythonView > Enter Distraction Free Mode
goes into fullscreen and removes Sublime's header and footerView > Layout > ..
changes the configuration of files you can open side- by-sideCtrl + P
(Cmd + P
on Mac) quickly opens a search box to find a file or definitionAlt + O
(Alt + Cmd + Up
on Mac) switches between the source/header fileAlt + PageUp
/Alt + PageDown
(Alt + Cmd + Left
/Alt + Cmd + Right
on Mac) moves between tabsF12
(Alt + Cmd + Down
on Mac) goes to the symbol's definition- With text selected,
Ctrl + D
will multi-select the next occurrence (so typing in one types in all of them), andCtrl+U
deselects - Similarly, after finding something with
Ctrl + F
,Alt + Enter
will select all occurrences of the search query, which can be multi-edited Ctrl + X
without anything selected cuts the current line, then move to a different line andCtrl + V
pastes it below the current line
Setting Sublime as the default Terminal editor
Add
export EDITOR='subl -w'
to your ~/.bashrc
file (or similar) to open git commit messages, gn args, etc with Sublime Text. Since you may want to only open sublime when using a non-SSH session, you can wrap it in the following:Installing the Package Manager
The Sublime Package Manager is the way most Sublime packages are installed and configured. You can install the package manager by following in the installation instructions on their website. Once the package manager is installed, restart Sublime.
To install a package, press
Ctrl + Shift + P
and select Package Manager: Install Package
(the string match is fairly lenient; you can just type 'instp'
and it should find it). Then type or select the package you want to install.Mac Paths Fix
There is a known bug on Mac where Sublime doesn‘t detect the current path correctly. If you’re using Mac, install the package
SublimeFixMacPath
to find the path from your ~/.bashrc
file or similar.Making a New Project
Once you have a copy of the Chromium checkout, we'll make a new Sublime project with the src directory as the root.
To do this, create a new file
chromium.sublime-project
(or whatever name you‘d like) in the folder above your src/
directory, with the following contents (the exclude patterns are needed - Sublime can’t handle indexing all of Chrome's files):If you are working on Blink, or any other third-party subproject, you can add it as a separate entry in the
folders
array:Once you've saved the file, select
Project > Switch Project
and navigate to the chromium.sublime-project
file.Code Linting with CPPLint (Chromium only)
Note: CPPLint enforces the Google/Chromium style guide, and hence is not useful on third_party projects that use another style.
- Install the SublimeLinter package (
Ctrl + Shift + P > Install Package > SublimeLinter
). cpplint
should be somewhere on your path so that SublimeLinter finds it. depot_tools includescpplint.py
, but it needs to be namedcpplint
, so on Linux and Mac you have to make a symlink to it:- Install the SublimeLinter-cpplint package (
Ctrl + Shift + P > Install Package > SublimeLinter-cpplint
).
Now when you save a C++ file, red dots should appear next to lines that invalidate the style. You can change this behavior with Choose Lint Mode (
Ctrl + Shift + P > 'lint mode'
).You can also see and navigate all the linter errors with Show All Errors (
Ctrl + Shift + P > 'show all'
). You can also use Next Error/Previous Error (and their associated shortcuts) to navigate the errors. The gutter at the bottom of the screen shows the message for the error on the current line.You can also change the style of dot next to the line with Choose Gutter Theme (
Ctrl + Shift + P > 'gutter'
)Docker containers gui. For a list of all preferences, see
Preferences > Package Settings > SublimeLinter > Settings - Default
(or Settings - User
to edit your preferences).Format Selection with Clang-Format (Chromium only)
Note: Like CPPLint, Clang-format enforces the Google/Chromium style guide, and hence is not useful on third_party projects that use another style.
- Inside
src/
, run: - This installs a plugin that defines the command “clang_format”. You can add the “clang_format” command to
Preferences > Key Bindings - User
, e.g.: - Select some text and press
Ctrl + Shift + C
to format, or select no text to format the entire file
CodeSearch Integration with Chromium X-Refs
With Chromium X-Refs you can perform https://cs.chromium.org cross-reference searches in your editor. This gives you the call graph, overrides, references, declaration, and definition of most of the code. The results are as fresh as the search engine‘s index so uncomitted changes won’t be reflected.
More information on Chromium X-Ref's functionality (including keyboard and mouse shortcuts) can be found on the Chromium X-Refs page.
Code Completion, Error Highlighting, Go-to-Definition, and Find References with LSP (clangd)
Sublime Uninstall Package
Gives Sublime Text 3 rich editing features for languages with Language Server Protocol support. It searches the current compilation unit for definitions and references and provides super fast code completion.
In this case, we're going to add C/C++ support.
- Refer to clangd.md to install clangd and build a compilation database.
- Install the LSP Package and enable clangd support by following the link and following the instructions for Sublime Text.
To remove sublime text's auto completion and only show LSPs (recommended), set the following LSP preference:
Code Completion with SublimeClang (Linux Only) [Deprecated, see LSP above]
SublimeClang is a powerful autocompletion plugin for Sublime that uses the Clang static analyzer to provide real-time type and function completion and compilation errors on save. It works with Chromium with a script that finds and parses the appropriate *.ninja files to find the necessary include paths for a given file.
Note: Currently, only the Linux setup of SublimeClang is working. However, there are instructions below for Windows/Mac which you are welcome to try -- if you can get them to work, please update these instructions ^_^
More information on SublimeClang's functionality (including keyboard shortcuts) can be found on the SublimeClang GitHub page.
Linux
Note that there are recent (as of August 2017) changes to support C++14. Namely, you must use a more recent clang (3.9 is known to work), and use its resource directory instead of that supplied by SublimeClang.
- Install a recent libclang-dev to get a copy of libclang.so. 3.4 isn't recent enough, but 3.9 works. If you use something different, change the names and paths accordingly:
- Build libclang.so and SublimeClang in your packages directory:
- Edit your project file
Project > Edit Project
to call the script above (replace/path/to/depot_tools
with your depot_tools directory): - Edit your SublimeClang settings and set
dont_prepend_clang_includes
to true. This way you use the resource directory we set instead of the ancient ones included in the repository. Without this you won't have C++14 support. - (Optional) To remove errors that sometimes show up from importing out of third_party, edit your SublimeClang settings and set:
- Restart Sublime. Now when you save a file, you should see a “Reparsing…” message in the footer and errors will show up in the output panel. Also, variables and function definitions should auto-complete as you type.
Note: If you're having issues, adding
'sublimeclang_debug_options': true
to your settings file will print more to the console (accessed with Ctrl + `
) which can be helpful when debugging.Debugging: If things don't seem to be working, the console
Ctrl + `
is your friend. Here are some basic errors which have workarounds:- Bad Libclang args
- problem:
tu is None..
is showing up repeatedly in the console: - solution: ninja_options_script.py is generating arguments that libclang can't parse properly. To fix this, make sure to
export CHROMIUM_OUT_DIR='{Default Out Directory}'
This is because the ninja_options_script.py file will use the most recently modified build directory unless specified to do otherwise. If the chosen build directory has unusual args (say for thread sanitization), libclang may fail.
- problem:
Install Sublime Text 2
Mac (not working)
- Install cmake if you don't already have it
- Install XCode
- Copy libclang.dylib from XCode to the SublimeClang/internals folder:
- The rest of the instructions are the same, but when adding your project settings, add these extra arguments to
sublimeclang_options
:
Windows (not working)
You'll need cl.exe which can be installed with the Visual C++ Build Tools 2015. You should have cl.exe on your
$PATH
, which you can get by running C:Program Files (x86)Microsoft Visual C++ Build ToolsVisual C++ 2015 x64 Native Build Tools Command Prompt
.Then you'll need a copy of libclang.so, which can be found on the LLVM website. The instructions should be the same as Linux from there.
Alternative: Code Completion with Ctags
For a fast way to look up symbols, we recommend installing the CTags plugin.
- Install Exuberant Ctags and make sure that ctags is in your path: http://ctags.sourceforge.net/ (on linux you should be able to just do
sudo apt-get install ctags
) - Install the Ctags plugin:
Ctrl + Shift + P > Install Package > Ctags
Once installed, you‘ll get an entry in the context menu when you right click the top level folder(s) in your project that allow you to build the Ctags database. If you’re working in a Chrome project however, do not do that at this point, since it will index much more than you actually want. Instead, do one of:
- Create a batch file (e.g. ctags_builder.bat) that you can run either manually or automatically after you do a gclient sync:This takes a couple of minutes to run, but you can work while it is indexing.
- Edit the
CTags.sublime-settings
file for the ctags plugin so that it runs ctags with the above parameters. Note: the above is a batch file - don't simply copy all of it verbatim and paste it into the CTags settings file)
Once installed, you can quickly look up symbols with
Ctrl+t, Ctrl+t
etc. More information on keyboard shortcuts can be found on the CTags GitHub page.One more hint - Edit your
.gitignore
file (under %USERPROFILE%
or ~/
) so that git ignores the .tags
file. You don't want to commit it. Periodic table app mac. :)If you don't have a
.gitignore
in your profile directory, you can tell git about it with this command: Windows: git config --global core.excludesfile %USERPROFILE%.gitignore
Mac, Linux: git config --global core.excludesfile ~/.gitignore
Building inside Sublime
To build inside Sublime Text, we first have to create a new build system.
You can add the build system to your project file (
Project > Edit Project
), replacing out/Debug
with your output directory (on Windows, replace /'s with s in cmd
and working_dir
):The file regex will allow you to click on errors to go to the error line.
If you're using goma, add the -j parameter (replace out/Debug with your out directory):
Regex explanation: Aims to capture these error formats while respecting Sublime's perl-like group matching:
d:srcchromesrcbasethreadingsequenced_worker_pool.cc(670): error C2653: 'Foo': is not a class or namespace name
././base/threading/sequenced_worker_pool.cc(670,26) error: use of undeclared identifier 'Foo'
././base/threading/sequenced_worker_pool.cc:670:26: error: use of undeclared identifier 'Foo'
Building other targets
You can add build variants to the
variants
array to have quick access to other build targets with Ctrl + Shift + B
:You can also add a variant for running chrome, meaning you can assign a keyboard shortcut to run it after building:
More detailed stack traces
Chrome‘s default stack traces don’t have full file paths so Sublime can't parse them. You can enable more detailed stack traces and use F4 to step right to the crashing line of code.
First, add
print_unsymbolized_stack_traces = true
to your gn args, and make sure you have debug symbols enabled too (symbol_level = 2
). Then, pipe Chrome‘s stderr through the asan_symbolize.py script. Here’s a suitable build variant for Linux (with tweaked file_regex):You can test it by visiting chrome://crash. You should be able to step through each line in the resulting stacktrace with F4. You can also get a stack trace without crashing like so:
Assigning builds to keyboard shortcuts
To assign a build to a keyboard shortcut, select
Preferences > Key Bindings - User
(or Key Bindings - Default
to see the current key bindings). You can add the build variants above with the 'build'
command, like so:For more info on custom key bindings, see the Sublime Text Key Bindings Documentation.
Other useful packages
Some other useful packages that improve sublime can be installed from
Ctrl+Shift+P > Install Package
:- Git enhancements
- GitCommitMsg - Performs a ‘git blame’ for one or more lines of code with
Alt + Shift + M
(Command + Shift + M
on Mac) - GitDiffHelper -
Ctrl + Alt + G
to open all files modified since the last commit - GitOpenChangedFiles -
Ctrl + Shift + O
(Command + Shift + O
on Mac) to open all files modified on the current branch - Git Conflict Resolver
- A GUI for resolving git conflicts
- GitGutter - Shows an icon next to lines that have been inserted, modified or deleted since the last commit.
- GitCommitMsg - Performs a ‘git blame’ for one or more lines of code with
- Visual enhancements
- SyncedSideBar - Syncs the currently open file with the expanded tree in the sidebar
- SideBarEnhancements - Adds more file management options to the sidebar context menu.
- SyncedSidebarBg - A purely aesthetic improvement that syncs the sidebar background with the background color for the current theme.
- Theme - Soda - A global theme for Sublime that matches the default color scheme. Needs
'theme': 'Soda Light 3.sublime-theme'
in your Preferences > Settings - User` file.
- Code navigation tools
- AutoFileName - Auto- completes filenames in #includes
- Open-Include
- Opens the file path under the cursor with
Alt + D
- Opens the file path under the cursor with
- Text tools
- Case Conversion - automatically changes the case of selected text, e.g.
kConstantName
toCONSTANT_NAME
- Text Pastry - Inserts incremental number sequences with multi-select
- Wrap Plus - Auto-wraps a comment block to 80 columns with
Alt + Q
(was used to write this document! ;-) - Diffy - With two files opened side-by-side,
Ctrl + k Ctrl + d
will show the differences
- Case Conversion - automatically changes the case of selected text, e.g.