When we are participating in a programming contest, our aim is to be as quick and as efficient as possible. However, often the tools we use during contests are clunky, non-intuitive and impede our speed. The following post will help you set up Sublime Text in a way that leads to a good workflow - from reading the problem statement to submitting the solution.
Setting up the Environment
Run C in Sublime Text 3 on Mac OSX. I know there is a built in C compiler and run plugin for ST3. This builds my program just fine. Running the code, it runs the first part in its console, but stops at the first cin. The code runs fine when I run the file compiled in ST3 straight from the terminal. Sublime Text is much lighter than Xcode because ST is not a full featured IDE, likc Xcode. What you'll end up doing is installing/using gcc or g directly via the command line (which happens to be my preferred way of working). Command line compiling can get to be tedious though with all of the parameters that need to be passed.
1. Install MinGW Compiler
Sublime Text C++ Compiler Machine
MinGW is a native Windows port of the GNU Compiler Collection (GCC). Install the latest MinGW compiler, after downloading from here.
Your path should preferably be C:MinGW
. Finally, add the bin
directory, C:MinGWbin
to the System PATH.
2. Install Sublime Text
Sublime Text is one of the most popular editors for development in general. It’s smooth and fast compared to other editors (being written in C++ helps that speed). Sublime also has tons of plugins you can find through Package Control. Download and install Sublime Text 3 from here.
3. Create a build system
Sublime Text provides build systems to allow users to run external programs. Create a new build system for Sublime Text for setting up C++ compilation.
Go to Tools > Build System > New Build System
. Paste the following code in the file and save it.
This can be used for piping input from the inputf.in
file, and output to the outputf.in
file. Note that this uses the -std=c++17
flag to enable the latest features of C++17. If you don't want this or want to use C++14, replace this with the -std=c++14
flag.
4. Setup window layout
Create three new files, file.cpp
, inputf.in
, and outputf.in
. Select View > Layout > Columns : 3
. This will create three columns in the workspace. Move the three files into the three columns. Select View > Groups > Max Columns : 2
.
The windows will look like above when you are done. Write a hello world program, and test its working. Use Ctrl+B
to build and execute the file.
5. Precompile headers
Now we can speed up compilation time by precompiling all the header files as mentioned here, i.e. by precompiling the bits/stdc++.h
header file. This can speed up compilation time by up to a factor of 12.
For this, first, navigate to the stdc++.h
file. This will be located at a directory similar to C:MinGWlibgccmingw326.3.0includec++mingw32bits
. Right click while pressing Shift to open a Powershell/cmd window there. Run the command g++ -std=c++17 stdc++.h
, to compile the header. Take care to use the same flags you used in your build system. Check to make sure that the stdc++.h.gch
file was created in the directory.
Finally, we can take advantage of the features of Sublime Text, namely snippets and completions.
Sublime Text features
Snippets
Snippets are smart templates that will insert text for you and adapt it to their context. Read up on the documentation of snippets at the official guide. You can create snippets like the following to quickly insert snippets of code into your file.
You can also create starter templates like these :
Sublime Text
Completions
Sublime Text suggests completions that aggregate code or content while writing by catching everything that you have written, like variable names. Fps games on mac. Read up on the documentation of completions at the official guide. You can create completions like the following to quickly enter common phrases into your file.
This provides an experience close to code completion, with the advantage that you can customize it to phrases you frequently type.
You can create snippet or completion files by putting the corresponding code in a .sublime-snippet
or .sublime-completions
file.
Sublime Text C++ Compiler
So that's the basics out of the way, you can now begin coding. You can also explore various other features present in Sublime text, especially its plugin functionality and the most common plugins. You can also install themes to change the look and feel of the windows. There are other features that you may want to use so I’ve provided some further reading.