Vim Edit Mode Mac



  1. Mac Install Vim
  2. Vim Insert Mode
  3. Vim Edit Mode Mac Os

The default editor that comes with the UNIX operating system is called vi (visual editor). Alternate editors for UNIX environments include pico and emacs, a product of GNU. The UNIX vi editor is a full screen editor and has two modes of operation: Command mode commands which cause action to be taken on the file,. I just finished Learning Unix for Mac OS X Tiger, and think it is an excellent little resource. I'm recently out of school, a school where we weren't taught anything about Unix, just enough to get. I started work with the data converter team at Agilent labs, and have been able to glean quite a bit off of them (considering many of them were either directly or indirectly responsible for. Save a File in Vim Text Editor The vi or vim is a text editor who has three modes: command mode, input mode, and ex mode. When starting, vim or vi begins in command mode. One can press Esc key to return to command mode and issue various commands. Vim: handle it as a Vim shortcut. With Vim emulation enabled, the cursor is a block when you are in the Normal mode: To change to the Insert mode, press i, and the cursor will become a line: In this mode you can type new code or change existing code. You can also enter other Vim modes: for example, press r for the Replace mode. Vim is in Insert mode with the use of the a, A, i, I, o, and O commands. Once in Insert mode, the editor will stay in that mode until you press an Esc key. Every other key pressed is directly inserted into the file at the current cursor location. Visual mode happens when you use a v, V, and Ctrl-v.

Command line editors can be a scary thing to learn and use for beginners, and Vim is probably the scariest of them all - but it doesn't have to be. There's a lot to cover in Vim (more than one tutorial can possibly teach), but we'll cover most of the basics here so that you'll be at least comfortable editing files with it.

We're going to break this tutorial into two sections. A super basic starter to get you up and running and then more detailed sections below with a better explanation

Here's a blank canvas of what editing with Vim is like in our interactive tutorial. All examples will be JavaScript files. Try it out:

function meow() { return 'meow';}function bark() { return 'woof';}function getRandomAnimal() { var animals = [ 'cat', 'dog', 'hippo', 'lion', 'bear', 'zebra' ]; return animals[Math.floor(Math.random()*animals.length)];}console.log(meow());console.log(bark());console.log(getRandomAnimal());

Introduction

Command line editors are exactly what they sound like, they give you the ability to edit files from the command line. There's a whole bunch of them, too:

  • Pico
  • Nano
  • Emacs
  • Vi
  • Vim
  • Neovim

Nano (which is basically a clone of Pico) is probably the most common one. It's just a dead simple editor and most people can usually figure out how to use it by just opening it up. Vim on the other hand requires training. Vim is a clone of Vi but improved (Vi IMproved). It has all the functionality of Vi and more - things like extra features, plugins, and more.

Vim is also extremely extensible. You can use it as your primary editor or just as a simple editor for changing files when SSH'd into a server (usually what I just do). The goal of this tutorial is going to be to get you comfortable enough to make edits on a server with Vim. At the end of this tutorial you'll be able to make edits to config files, use Vim to manage your Git merges and conflicts, and more. How much you want to use it is up to you.

If you're able to confidently use a vanilla install of Vim, you can effectively make edits on any server or OS worry free. Need to change an Nginx or Apache setting? No need to mount or do some FTP/SFTP stuff. Simply SSH into the box and make it happen from the command line in seconds.

Learning Vim is an investment. As you learn it, you'll only get better with it and find more and more things to improve your productivity. Very good people with it will claim it's like an extension of your fingers allowing you to edit files faster and smarter than you can even with an editor as awesome as Sublime Text.

Installing Vim

Vim works in almost any OS environment - including Windows. You can expect to be able to use it on virtually any machine or system that you're working with.

BeginnerTailwind.comLearn Tailwind CSS from Scratch

Macs

If you're using a Mac, VIM is already installed. It's an older version (~1.7), but it really doesn't matter for this tutorial. If you want to upgrade VIM on mac first, follow these steps (requires homebrew) in your terminal:

After you do this, you should have VIM version (7.x) on your machine.

Windows

Vim Edit Mode Mac

For Windows users visit the Official Vim website to download.

Linux

Vim ships as a package for *nix systems.

For Ubuntu, just run this from your terminal:

For CentOS, just run:

Test Your Install

Now that you have installed (or updated) Vim, it's time to test to see if it worked. From the command line in your terminal, type:

That's it! Now to exit this screen, just type:

Super Basic Starter

Before we go into detail, let's do a super basic starter example to get things rolling.

From the terminal, navigate to a file and let's edit it with Vim:

Alternatively, you can create a brand new file with the same command: vim mynewfile.txt.

Now that you're using Vim, we need to explain the two modes that Vim has: Command Mode and Insert Mode. Command Mode, just like it sounds, is for executing commands. Things like custom Vim commands (we'll cover later), saving files, etc. Insert Mode, also just like it sounds, is for editing text freely.

To enter Insert Mode simply type:

Now type any nonsense you'd like. Once you're done, let's save the file. You need to first exit Insert Mode and enter Command Mode by hitting ESC.

Once you're back into command mode, you'll need to save the file (called a Write) and then quit Vim. To enter a command, you need to hit the semicolon key :. Here's the command to save the edits (write, quit).

That's it! Alternatively, if you want to quit Vim without saving changes, just type:

The exclamation mark means discard changes. So this literally will translate to 'quit and discard changes' for Vim.

That's all there is to the basic starter. If you want, you can either follow along in your own terminal or use our interactive editors below for the more detailed tutorial.

Learn to Speak Vim's Language

Vim is always just listening for instructions from you. It's up to you to give it commands. You need to tell the editor what to do. Vim follows a system for the syntax and pattern of these commands. Once you learn the 'language' of Vim, all you need to do is keep learning more commands - Vim's 'vocabulary'.

There's no way to cover all the commands, but we'll get you started with the most common ones and how to start using them. In time, you'll learn more and more of these. Eventually, just when you think you've become a Vim expert, BOOM, you'll learn a new command and trick to save you time.

Vim also comes with its own tutorial. If you need to freshen up on your skills, you can simply type this from the command line to bring it up:

Moving the Cursor

From the earlier example, you were probably using the arrow keys to navigate around. That's perfectly okay, but it's recommended that you navigate a different way and actually not with the arrow keys. This way may be unnatural or weird at first, but it's recommended to use these keys instead:

  • h - Left
  • k - Up
  • l - Right
  • j - Down

Here's a visual for reference:

Simply try navigating around with these keys below to get the hang of it. It will get easier in time. You can hold any of these keys to quickly make the action repeat:

function meow() { return 'meow';}function bark() { return 'woof';}function getRandomAnimal() { var animals = [ 'cat', 'dog', 'hippo', 'lion', 'bear', 'zebra' ]; return animals[Math.floor(Math.random()*animals.length)];}console.log(meow());console.log(bark());console.log(getRandomAnimal());

Exiting Vim

The first time I encountered Vim I had no idea what it was. A server had it pop-open on me with a git pull and I couldn't even figure out how to exit until a friend helped me out.

Mac vim setup

To quit, enter Command Mode with ESC, then just type:

To quit and discard changes, type:

To quit and save changes, type:

Text Editing - Deletion

It's one thing to delete text from Insert Mode, but you can also delete text from Command Mode. In the example below, click the editor and hit ESC to enter Command Mode. Next, navigate to any letter you want to delete and hit:

Try it below:

function meow() { return 'meow';}function bark() { return 'woof';}function getRandomAnimal() { var animals = [ 'cat', 'dog', 'hippo', 'lion', 'bear', 'zebra' ]; return animals[Math.floor(Math.random()*animals.length)];}console.log(meow());console.log(bark());console.log(getRandomAnimal());

You're probably wondering why you just won't enter Insert Mode to delete characters. You can always do that, but you'll see from future examples that deleting text from Command Mode is more powerful and much quicker. It's better to start the habit now.

Text Editing - Insertion

Text editing simply requires you that you enter Insert Mode. We already covered how to do that, but there's some other methods to do this that can help speed things up and save you some keystrokes.

Inserting

This puts the cursor before the current position.

Edit

Appending

This puts the cursor after the current position.

Open Commands

This puts the cursor below the line:

And this puts the cursor above the line:

Try each these below to see the differences in action:

function meow() { return 'meow';}function bark() { return 'woof';}function getRandomAnimal() { var animals = [ 'cat', 'dog', 'hippo', 'lion', 'bear', 'zebra' ]; return animals[Math.floor(Math.random()*animals.length)];}console.log(meow());console.log(bark());console.log(getRandomAnimal());

Operators and Motions, Counts, and Combining Them

Commands are where the true power and efficiency come from Vim. It takes time to start using them, but they all follow a similar pattern. It's a good idea to learn how commands work, not memorize commands. Commands are broken down into these parts:

  • Operator
  • Numbers
  • Motions

When to put together, the Vim Command will look something like this:

Mac

Operators

Operators are actions. These are like verbs of a sentence when 'speaking Vim'.

Here's a list of common operators:

  • d - Delete (acts like a 'cut' command though)
  • c - Change
  • y - Yank
  • p - Insert last deleted text after cursor (put command)
  • r - Replace

Motions

Motions provide context to your Operators. These execute the action in a particular way.

Here's a list of common motions:

  • w - Until the start of the next word, EXCLUDING its first character.
  • e - To the end of the current word, INCLUDING the last character.
  • $ - To the end of the line, INCLUDING the last character.

And some additional others:

  • w - Forward by word
  • b - Backward by word
  • ) - Beginning of next sentence
  • ( - Beginning of current sentence
  • } - Beginning of next paragraph
  • { - Beginning of current paragraph
  • ] - Beggining of next sect
  • [ - Begginning of current section
  • H - Top line of screen
  • L - Last line of screen

Counts

Counts are optional and simply let you put a multiplier to your command and motion. You'll see how these work in the examples below.

In time you'll learn more and more of these and get quicker and quicker. It's usually handy to have a solid Vim Cheat Sheet on hand when getting started.

Let's go over some examples to demo how these work to together. Once you recognize that it's a pattern and language, you can start figuring out and testing these all on your own.

Deleting a Word

Navigate to beginning of the word in the editor below and enter this command. If you're in the middle it will stop at where the word ends:

function meow() { return 'meow';}function bark() { return 'woof';}function getRandomAnimal() { var animals = [ 'cat', 'dog', 'hippo', 'lion', 'bear', 'zebra' ]; return animals[Math.floor(Math.random()*animals.length)];}console.log(meow());console.log(bark());console.log(getRandomAnimal());

Deleting to End of a Line

This will delete everything until the end of the line. Move your cursor to the beginning of a line and enter this command:

Now, here's an example of a count. This will run the command twice and deleting two lines after the cursor position.

function meow() { return 'meow';}function bark() { return 'woof';}function getRandomAnimal() { var animals = [ 'cat', 'dog', 'hippo', 'lion', 'bear', 'zebra' ]; return animals[Math.floor(Math.random()*animals.length)];}console.log(meow());console.log(bark());console.log(getRandomAnimal());

Deleting a line is a super common task. Vim has a shortcut built in for this. For example, to quickly delete a line you can always just do dd instead.

Deleting Four Words

Here's a command for deleting four words:

function meow() { return 'meow';}function bark() { return 'woof';}function getRandomAnimal() { var animals = [ 'cat', 'dog', 'hippo', 'lion', 'bear', 'zebra' ]; return animals[Math.floor(Math.random()*animals.length)];}console.log(meow());console.log(bark());console.log(getRandomAnimal());

The Undo Command

With all these commands, there's a good chance you might mess up once or twice. This is totally normal and okay. You can quickly undo a command with:

Try undoing some commands in the editor below to see how easy it is:

function meow() { return 'meow';}function bark() { return 'woof';}function getRandomAnimal() { var animals = [ 'cat', 'dog', 'hippo', 'lion', 'bear', 'zebra' ]; return animals[Math.floor(Math.random()*animals.length)];}console.log(meow());console.log(bark());console.log(getRandomAnimal());

Quick Page Navigation

Scrolling doesn't really exist in a terminal. So if you have a long file that you're editing, it might get real boring navigating with the arrow keys or h, k, l, j. Here's some tips for this:

Move to the bottom of a file

Move to the start of a file

Edit

Navigate to a specific line

You can view your current page line with:

You can jump to a specific line with:

Searching

You're probably used to doing ctrl-f to jump around a page. Vim is actually really similar to this - except it's a command. You're probably learning by now that everything is a command action.

Search a page after the cursor position

Search a page before the cursor position

Go to next or previous match

To navigate to the next search match, enter:

To navigate to the previous search match, enter:

Try it out:

function meow() { return 'meow';}function bark() { return 'woof';}function getRandomAnimal() { var animals = [ 'cat', 'dog', 'hippo', 'lion', 'bear', 'zebra' ]; return animals[Math.floor(Math.random()*animals.length)];}console.log(meow());console.log(bark());console.log(getRandomAnimal());

Matching Search

By this point, you can jump around the page and search things, but it's still slow to locate various things in a file. In Vim, you can jump around based on opening and closing matching brackets.

For example, say you have:

If you go navigate to { and hit the following key, you'll jump to it's matching counter part.

This is insanely useful for quickly jumping around functions. This works on the following:

  • ( and )
  • [ and ]
  • { and }

Try it in the example below, it's awesome:

function meow() { return 'meow';}function bark() { return 'woof';}function getRandomAnimal() { var animals = [ 'cat', 'dog', 'hippo', 'lion', 'bear', 'zebra' ]; return animals[Math.floor(Math.random()*animals.length)];}console.log(meow());console.log(bark());console.log(getRandomAnimal());

Search and Replace

Searching and jumping around the page is one thing, but maybe you want to change all words of cat to the word dog. This is really easy with Vim.

Find and Replace

Find and Replace All

To replace all instances, you need to make the find and replace global. Here's how:

This can get infinitely more complex. You can do regular expression find and replaces, replace only on certain lines, sections, and more.

Execute an External Command

This creeps right out of the area of getting started with Vim to the intermediate parts of it. With Vim, the commands aren't just limited to the Vim syntax/language of operators and motions.

You can execute external commands as you normally would from the command line inside of the editor. All you need to do is start the command with an exclamation mark.

Here's an example to list all files:

As you learn more about Vim, you'll see how insanely powerful this will be. You can do things like write to other files, grab code from other files, paste into other files, and more. In a sense, it like your own little Sublime Sidebar on steroids. We won't cover any of this in this tutorial, but here's a good resource for learning more about external commands with Vim.

Configuring Vim

Vim can also do things like syntax highlighting. Simulator mac os x. By default, this usually isn't enabled. To enable it on a file, simply enter the following command:

This is quite annoying to have to reenter on each file. This is where configuring Vim comes in handy. All Vim installs come with a file in your home directory called .vimrc. If it's not there, create one.

So, from the command line and with vim, let's force enable :syntax on to be a default setting. The first step is to open the file in Vim:

Then simply add this line to the file:

Finally, save the file to have syntax on by default in Vim:

There's a ton of these features. Things like showing a ruler, always showing the line number, themes and color schemes, and much more. You can even create short codes and functions to operate from.

A good reference for this is The Ultimate Vim Configuration for .vimrc. You can either copy this or pick and choose all the goodies you want from it.

Useful Tips and Tricks

You should now be comfortable with Vim on the command line. Here's some miscellaneous useful tips and tricks.

Set Vim as your default command line editor

Nano is usually a default command line editor in a lot of systems. On Ubuntu or other Debian-based systems, run this command to make the switch:

Set Vim as your default editor for Git

Plugins

Vim also has the ability to allow third-parties to write plugins into the editor. This is awesome because you can use all this pre-built additional functionality by others.

For example, NERD Tree will essentially simulate a sidebar for your editor.

To learn more about plugins, check out these additional resources:

  • Vim Awesome - List of awesome plugins across the universe

Neovim

Appararently building a plugins on Vim is pretty difficult to do though. Neovim is a rebuild of Vim to hopefully making adding plugins easier. You can check out their official website to learn more.

On Ubuntu, you can install Neovim by doing:

Conclusion

That's all there is to getting started with Vim. Just like anything else in the development world, you get better at it by just doing it. Hopefully by now, you're ready to start editing files with Vim.

Finally, there's a ton of awesome content on the web for Vim resources and learning beyond this article. I definitely encourage you to check them out:

Like this article? Follow @whatnicktweets on Twitter

Read next..

Since the 1970’s, Vi and its successor Vim have been included by default on many operating systems, including almost all GNU/Linux distributions.

Vim is free and open-source and is one of the most popular code editors. It can be downloaded on Vim official site.

Vim is a modal text editor, which means that it has a mode for writing text, a mode for running commands, etc.

Vim has a total of 12 different editing modes.

The three main modes are:

  • Command mode (also sometimes reffered to as Normal mode) is where you can run commands. This is the default mode in which Vim starts up.
  • Insert mode is the mode where you insert/write your text.
  • Visual mode is where you visually select a bunch of text so that you can run a command/operation only on that part of the text.

Basic Vim Commands

Let’s start with an easy set of Vim commands to open, save, and exit Vim.

:e filenameOpen filename for edition
:wSave file
:qExit Vim
:q!Quit without saving
:xWrite file (if changes has been made) and exit
:sav filenameSaves file as filename
.Repeats the last change made in normal mode

Moving in the File

While in command mode, the following set of commands will allow you to easily move the cursor in the file, jump to a particular line number, or set the cursor position at the beginning of the file.

k or Up Arrowmove the cursor position up one line
j or Down Arrowmove the cursor down one line
emove the cursor to the end of the word
bmove the cursor to the begining of the word
0move the cursor to the begining of the line
Gmove the cursor to the end of the file
ggmove the cursor to the begining of the file
Lmove the cursor to the bottom of the screen
:59move cursor to line number 59. Replace 59 by the desired line number.
%Move cursor to matching parenthesis
[[Jump to function start
[{Jump to block start

Cut, Copy & Paste

Here are some basic Vim commands to cut, copy and paste portions of text. All the commands below has to be ran in command mode.

yCopy the selected text to clipboard
pPaste clipboard contents
ddCut current line
yyCopy current line
y$Copy to end of line
DCut to end of line

Search

In command mode, you can easily search for any string within a file. This is extremely useful for developers and sysadmins alike.

/wordSearch word from top to bottom
?wordSearch word from bottom to top
*Search the word under cursor
/cstringSearch STRING or string, case insensitive
/jo[ha]nSearch john or joan
/< theSearch the, theatre or then
/the>Search the or breathe
/fred|joeSearch fred or joe
/<dddd>Search exactly 4 digits
/^n{3}Find 3 empty lines
:bufdo /searchstr/Search in all open files
bufdo %s/something/somethingelse/gSearch something in all the open buffers and replace it with somethingelse

Replace

Vim command line tool is extremely useful to replace many occurences of a string by another within a file. Using more advanced commands, there are a lot of search and replace options available.

:%s/old/new/gReplace all occurences of old by new in file
:%s/onward/forward/giReplace onward by forward, case unsensitive
:%s/old/new/gcReplace all occurences with confirmation
:%s/^/hello/gReplace the begining of each line by hello
:%s/$/Harry/gReplace the end of each line by Harry
:%s/onward/forward/giReplace onward by forward, case unsensitive
:%s/ *$//gDelete all white spaces
:g/string/dDelete all lines containing string
:v/string/dDelete all lines containing which didn’t contain string
:s/Bill/Steve/Replace the first occurence of Bill by Steve in current line
:s/Bill/Steve/gReplace Bill by Steve in current line
:%s/Bill/Steve/gReplace Bill by Steve in all the file
:%s/^M//gDelete DOS carriage returns (^M)
:%s/r/r/gTransform DOS carriage returns in returns
:%s#<[^>]+>##gDelete HTML tags but keeps text
:%s/^(.*)n1$/1/Delete lines which appears twice
Ctrl+aIncrement number under the cursor
Ctrl+xDecrement number under cursor
ggVGg?Change text to Rot13

Case

Vim has some powerful commands to modify the case of text. All the commands below have to be run in command mode.

VuLowercase line
VUUppercase line
g~~Invert case
vEUSwitch word to uppercase
vE~Modify word case
ggguGSet all text to lowercase
gggUGSet all text to uppercase
:set ignorecaseIgnore case in searches
:set smartcaseIgnore case in searches excepted if an uppercase letter is used
:%s/<./u&/gSets first letter of each word to uppercase
:%s/<./l&/gSets first letter of each word to lowercase
:%s/.*/u&Sets first letter of each line to uppercase
:%s/.*/l&Sets first letter of each line to lowercase

Read and Write Files

Vim is clearly one of the most powerful text editors available. This section shows how you can manipulate files, insert the content of a file into another, and export portions of a file into a new file.

:1,10 w outfileSaves lines 1 to 10 in outfile
:1,10 w >> outfileAppends lines 1 to 10 to outfile
:r infileInsert the content of infile
:23r infileInsert the content of infile under line 23

File Explorer

Vim features a built in file explorer, which allows you to explorer the content of your server without exiting the text editor.

:e .Open integrated file explorer
:SexSplit window and open integrated file explorer
:Sex!Same as :Sex but split window vertically
:browse eGraphical file explorer
:lsList buffers
:cd .Move to parent directory
:argsList files
:args *.phpOpen file list
:grep expression *.phpReturns a list of .php files contening expression
gfOpen file name under cursor

Interact With Unix

Vim is installed by default on most Unix based operating systems, including Mac OS and most GNU/Linux distros. It therefore feature various commands that allows you to interact with the OS.

:!pwdExecute the pwd unix command, then returns to Vi
!!pwdExecute the pwd unix command and insert output in file
:shTemporary returns to Unix
$exitRetourns to Vi

Alignment

In command mode, you can quickly and easily align a file’s lines for better clarity.

Mac Install Vim

:%!fmtAlign all lines
!}fmtAlign all lines at the current position
5!!fmtAlign the next 5 lines

Tabs and Windows

One of my favorite Vim options is the ability to use tabs to edit various files at the same time. The following Vim commands will let you open, close, and organize your tabs for better productivity.

:tabnewCreates a new tab
gtShow next tab
:tabfirstShow first tab
:tablastShow last tab
:tabm n(position)Rearrange tabs
:tabdo %s/foo/bar/gExecute a command in all tabs
:tab ballPuts all open files in tabs
:new abc.txtEdit abc.txt in new window

Window Spliting

Vim allows you to split the screen horizontally or vertically, so you can edit many files at once using the insert mode.

:e filenameEdit filename in current window
:split filenameSplit the window and open filename
ctrl-w up arrowPuts cursor in top window
ctrl-w ctrl-wPuts cursor in next window
ctrl-w_Maximize current window vertically
ctrl-w|Maximize current window horizontally
ctrl-w=Gives the same size to all windows
10 ctrl-w+Add 10 lines to current window
:vsplit fileSplit window vertically
:sview fileSame as :split in readonly mode
:hideClose current window
:­nlyClose all windows, excepted current
:b 2Open #2 in this window

Auto-Completion

Business in a box trailer. Vim can use external dictionaries to provide auto-completion. This can be a real time saver, so pay attention to the commands below if you want to speed up your workflow.

Ctrl+n Ctrl+p (To be used in insert mode)Complete word
Ctrl+x Ctrl+lComplete line
:set dictionary=dictDefine dict as a dictionnary
Ctrl+x Ctrl+kComplete with dictionnary

Marks

When editing large files, it can be tricky to move in the file and remember important sections. Happilly, Vim allows its users to create marks that can easily be accessed later. No need to remember a dozen of line numbers anymore!

m {a-z}Marks current position as {a-z}
‘ {a-z}Move to position {a-z}
Move to previous position

Abbreviations

This little known trick lets you define abbreviations that can be reused later and as many times as needed.

:ab mail mail@provider.orgDefine mail as abbreviation of mail@provider.org

Text Indentation

Text indentation is vital when it comes to code readability. Luckily, Vim has a set of commands for the text editor to indent your lines in a clear and readable manner.

:set autoindentTurn on auto-indent
:set smartindentTurn on intelligent auto-indent
:set shiftwidth=4Defines 4 spaces as indent size
ctrl-t, ctrl-dIndent/un-indent in insert mode
>>Indent
<<Un-indent
=%Indent the code between parenthesis
1GVG=Indent the whole file
Learn Vim from scratch and quickly become more productive.
Design, develop, and deploy end-to-end applications with Vim.

Frequently Asked Questions

Vim Insert Mode

How do I Type Commands in Vim?

To type commands, you have to first activate Vim’s command mode. To do so, press the Esc key of your keyboard. You can then type any command of your choice.

How do I Start Typing Text in Vim?

Vim must be in insert mode for you to type text. Simply press the i key when in command mode to enter the insert mode.

On Which Hosting Plans Can You Use Vim?

Vim Edit Mode Mac Os

Basically any Linux hosting will have Vim installed on the server. As long as you are able to access your server via SSH, you’ll be able to use Vim. Please refer to our best web hosting for developers guide to find out which hosts provide a SSH access.