Command line text editing
Directories are great, they’re a useful tool for organizing our lives. But we really need to be able to actually create stuff on the command line.
We’ve spent some time getting to know VS Code, and VS Code is an excellent text editor and can be used to edit remote files, but being able to use a command-line text editor is useful because command-line text editors are always there.
You are able to install VS Code on your own computer, but you don’t always have control over remote computers, and you (generally) don’t have permissions to install software on them. You definitely don’t have permission to install software on Aviary.
In this module we’re going to start working with a command-line text
editor called vim.
Opening vim
vim is a program, just like the programs that you’ve
been running for creating and navigating directories, so you can run it
just like the other programs you’ve been running so far:
You can start vim by typing vim at the
“prompt” and pressing Enter.
A “prompt” is what your shell prints out before it waits for you to
enter something. In our case, it’s [you@bird ~]>.
vimWhen vim opens, you’ll see something like this:
~ VIM - Vi IMproved
~
~ version 7.4.629
~ by Bram Moolenaar et al.
~ Modified by <bugzilla@redhat.com>
~ Vim is open source and freely distributable
~
~ Sponsor Vim development!
~ type :help sponsor<Enter> for information
~
~ type :q<Enter> to exit
~ type :help<Enter> or <F1> for on-line help
~ type :help version7<Enter> for version info
~
[No Name] 0,0-1 All
You can quit vim by typing :q (colon, then
q) and pressing Enter.
vim has several “modes”,
but only two that we care about right now: normal mode and insert
mode.
When you start vim, you are in “normal” mode. In
“normal” mode, you’re interacting with vim itself and you
can give commands to vim, like saving your file or
exiting. In “insert” mode, you’re actually able to make changes to the
file.
Editing and saving a file
Open vim again (if didn’t close it, quit, then open it
again), but this time pass it a filename to create a new file with that
name.
Create a new file with vim named hello.md.
vim hello.mdOnce you’re in vim, enter insert mode
by typing i on your keyboard. Now start typing!
Once you’re finished, press Esc on your keyboard to get back into normal mode.
Now save the file by “writing” the file. Similar to
quitting, you can write your file by typing :w (colon, then
w) and pressing Enter.
Now you can quit vim and check out the file you just
created.
lshello.md
vim isn’t just good at making new files, you can also
open existing files. You can re-open the file that you just made by
passing that same filename to vim on the command line.
Cool 😎! Now you
can create new text files on the command-line with vim!
Copying and pasting into
vim
You can create new text files on the command-line with
vim, but sometimes you also want to copy some text from one
place and then paste it into vim, just like you do with
other programs.
You can paste into vim, but you have to tell
vim that you’re about to paste something into it. You have
to tell vim that you’re going to paste something into it so
that vim knows not to do things like automatically indent
when you’re editing a file with code in it.
We tell vim that we’re going to paste something into it
by “setting a flag” called “paste”.
Just before you paste something in vim, enter normal
mode (press Escape on your keyboard), then type
:set paste and press Enter.
Now re-enter insert mode (press i on your keyboard) and paste whatever you wanted to paste.
Finally, enter normal mode, then type :set nopaste and
press Enter.
OK, but how do we paste?
Copying and pasting in Windows
You can copy in Windows by highlighting text, then either:
- Use menus: Edit → Copy, or
- Use keyboard shortcuts: press Control+C on your keyboard.
To paste text into your terminal window you can do one of two things:
- Use your mouse: Right-click, or
- Use keyboard shortcuts: press Control+Shift+V. Notice that different from the normal shortcut for pasting!
Copying and pasting in macOS
You can copy and paste in macOS by highlighting text, then either:
- Use menus: Edit → Copy, or
- Use keyboard shortcuts: press Command+C on your keyboard.
To paste text into your terminal window you can do one of two things:
- Use menus: Edit → Paste, or
- Use keyboard shortcuts: press Command+V on your keyboard.
Copying and pasting in Linux
How you copy and paste may depend on the Linux distribution you’re using and the desktop environment that you’re using.
Assuming that you’re using Ubuntu with the default Gnome interface, you can copy and paste text by highlighting some text, then either:
- Use menus: Edit → Copy, or
- Use your mouse: Right-click and select Copy, or
- Use keyboard shortcuts: press Control+C on your keyboard.
To paste text into your terminal window you can do one of two things:
- Use menus: Edit → Paste, or
- Use your mouse: Right-click and select Paste, or
- Use keyboard shortcuts: press Control+Shift+V. Notice that different from the normal shortcut for pasting!
Cheatsheets
Despite its minimal appearance, vim is a full-featured
text editor that can do everything that you might want. As you’ve seen,
interacting with programs on the command line is done entirely through
your keyboard (you can keep clicking on the terminal, but all you’re
doing is making fun clicking or tapping sounds).
When you’re in normal mode, you can get vim to do many
different things for you, but listing out all of those different things
would be painful and tedious.
You should seek out and find a “cheat sheet” for vim
that lists a good set of things that you can do with vim in
normal mode. Some examples of operations that you’re going to want to do
with vim frequently and should be included in the cheat
sheet are:
- Copying or cutting and pasting lines from one place to another
(
yto yank/copy,dto cut,pto paste). - Undoing or redoing changes to a file (
uto undo, Control+R to redo). - Moving around on lines or around the file (
Gto go to the bottom of the file,ggto move to the top). - Doing the same thing multiple times (cutting the next three lines
d3↓).
Other editors
vim is not the only text editor, and you’re not required
to use vim for this course (or any course, really). You’re
welcome to try out and use other text editors, like nano,
pico, or emacs.