Suggested Text User Interface Editors

This page is here to help you get started with a text user interface editor for use within a terminal (also lightly covered in CSE 391). While you can make just about anything work, we still encourage you to try one of these to avoid unnecessary transferring of files or delays from sending graphics data over the network.

These editors have a steep learning curve, so it's perfectly normal and expected to feel intimidated at first, but 351 involves relatively little coding, which makes it a great course to dip your toes in the water!

This page covers setup and tips for the two most popular options:vim (project page) and Emacs (project page).

vim

Getting Started

In order to launch vim on the CSE Linux environment, type vim or vim <filename> on the command line and press [Enter]. This will open a welcome screen or the specified file, respectively, for viewing and modification.
Below is a table of commonly used vim commands to help you get started with basic file navigation and editing, which can be useful while learning and before you have the muscle memory down.
A more thorough cheat sheet can be found here.
When finished, you can type :q to exit (or :q! to exit and discard changes).

Basic vim Commands

CommandFunctionExampleExplanationNotes
iInserts before the cursoriThis will start insert mode and you can start editing the file.
EscExits insert mode.EscThis will exit the insert mode on the editor.ALWAYS do Esc before other vim commands, or else you will be typing the commands into the file.
:wqSaves the changes made and quits.:wqThis will exit the vim editor and save the changes to the file.
:q!Quits and throws away unsaved changes.:q!This will exit the vim editor without saving the changes made.
yyYanks (copies) a line.yyThis will copy the current line to the clipboard.
2yyYanks (copies) 2 lines.2yyThis will copy the current line and the next to the clipboard.You can replace 2 with any number.
ddDeletes (cuts) a line.ddThis will delete the current line.
2ddDeletes (cuts) 2 lines.2ddThis will delete the current line and the line after.You can replace 2 with any number.
pPuts (pastes) the clipboard after cursor.pThis will paste the clipboard after cursor.

Tutorials

vimtutor can be run from the command line and gives a brief introduction to vim terminology and the general gist of how it works. This describes how to move around, select, copy, paste, and other basic functions of vim. However, vimtutor is quite dry.
Open Vim is a browser-based, interactive tutorial. There is also a "Practice" mode with a handy context-aware help menu. Make sure to complete the tutorial (and take notes!) before navigating elsewhere because it will restart if you do.
Vim Adventures is a game-based, interactive introduction; the free version (levels 1-3) covers basic text navigation in vim, but in a way that will help with your muscle memory.

Configuration

The following startup configuration has been created by the course staff to give you a decent starting experience using vim. This is completely optional to use but is intended to improve your workflow and reduce frustrations.

Commands placed in the file ~/.vimrc will be run whenvim starts up. The CSE 351 starter vimrc file can be automatically placed in the correct location for you using the following command:

$ curl -Lo ~/.vimrc https://cs.uw.edu/351/files/vimrc.txt

This should serve as a good starting point for you to customizevim yourself and does the following for you:

Sets the color theme to ‘ron’. Instructions for changing this are in the .vimrc file.
Turns on line numbers by default.
Allows you to press F9 to run make (you can also just do :make). Then, you can run :copen to see the output alongside your code.vim will even take you to the lines that have compiler problems.
Highlights all matches for searches.
Automatically indents the proper amount after hitting enter (specifically for C files).

If you're curious how it works, the file has comments that describe what each command does; just open the file withvim ~/.vimrc.

Emacs

Getting Started

In order to launch Emacs on the CSE Linux environment, type emacs or emacs <filename> on the command line and press [Enter]. This will open a welcome screen or the specified file, respectively, for viewing and modification.
You can find an Emacs cheat sheet of commonly used commands to help you get started with basic file navigation and editing, which can be useful while learning and before you have the muscle memory down.
Alternatively, here is a printable How to Learn Emacs visual tutorial (png).
A more thorough reference card can be found here.
When finished, you can type Ctrl-x, Ctrl-c to exit.

Tutorials

The official Emacs Tutorial is accessed by typingCtrl-h, t from within Emacs. This will open up a text file with instructions to follow that covers the basics of movement and editing. As this is just plain text, it can feel dry and is a lot to read.
Here is a Practical Emacs Tutorial by Xah Lee. The presentation leaves something to be desired, but use the left side menu to access pages of interest.
Recommended: "Emacs Principles, Command and Keys", "Basic Emacs Keys", "Basic Tips", everything under the "Find Replace" heading, everything under the "Copy/Paste" heading
The official Emacs documentation includes this guided tour.
"Mastering Emacs" is an online repository of guides and articles about Emacs. The author does recommend going through the Emacs Tutorial first, but has an article on editing and movement.

Configuration

Commands placed in the file ~/.emacs will be run whenEmacs starts up. The default settings should do a decent job as-is, so we won't be providing a starter configuration file. If you do feel like customizing a bit, you can find some examples here.