Vim Setup Mac



MacVim is a port of the text editor Vim to Mac OS X that is meant to look better and integrate more seamlessly with the Mac than the older Carbon port of Vim. MacVim supports multiple windows with tabbed editing and a host of other features such as: bindings to standard OS X keyboard shortcuts (⌘-Z, ⌘-V, ⌘-A, ⌘-G, etc.). These installation guides will help you get Vim up and running on Mac OS X, Linux and Windows. Upgrading Vim on OS X explains why to upgrade from Vim 7.2 to 7.3+ and how to do it using Homebrew. The easiest way to install Vim on Windows 7+ is to download and run the gvim74.exe file. On Linux make sure to install the vim package with sudo apt. What is Vim online? Vim online is a central place for the Vim community to store useful Vim tips and tools. Vim has a scripting language that allows for plugin like extensions to enable IDE behavior, syntax highlighting, colorization as well as other advanced features. First run vim -version in the terminal. Notice the +(s) and -(s) and keep it in mind, maybe even take a picture. Next we will install a package manager, if one is not already installed on your computer. We will use Homebrew for this tutorial. Run xcode-select -install in the terminal. It will take about 10-15 min to install the Xcode Command.

  1. Vim Settings Mac
  2. Mac Vim Color

spf13 presents

For mac os x, the vimrc file is located in /usr/share/vim directory edit the vimdc file with any text editor. Add the syntax on to the last line of the file. Then next time you start a file you can see color. This is a system wide setting.

spf13-vim is a distribution of vim plugins and resources for Vim, GVim and MacVim.
It is a completely cross platform distribution that stays true to the feel of vim while providing modern features like a plugin management system, autocomplete, tags and tons more.

  • Featured Plugins
  • Other Awesome stuff
  • Community
spf13-vim

Easy Installation *nix and os x

The easiest way to install spf13-vim is to use our automatic installer by simply copying and pasting the following line into a terminal. This will install spf13-vim and backup your existing vim configuration.

If you are upgrading from a prior version (before 3.0) this is also the recommended installation.

Updating to the latest version

Installing on Windows

On Windows and *nix Git and Curl are required.

Installing dependencies

Install msysgit

After installation try running git --version within command prompt (press Win-R, type cmd, press Enter) to make sure all good:

Setup Curl

Instructions blatently copied from vundle readmeInstalling Curl on Windows is easy as Curl is bundled with msysgit!But before it can be used with Vundle it's required make curl run in command prompt.The easiest way is to create curl.cmd with this content

And copy it to C:Program FilesGitcmdcurl.cmd, assuming msysgit was installed to c:Program FilesGit

to verify all good, run:

Installing spf13-vim on Windows

The easiest way is to download and run the spf13-vim-windows-install.cmd file.

The .vimrc file is suited to programming. It is extremely well organized and folds in sections. Each section is labeled and each option is commented.

It fixes many of the inconveniences of vanilla vim including

  • A single config can be used across Windows, Mac and linux
  • Eliminates swap and backup files from littering directories, preferring to store in a central location.
  • Fixes common typos like :W, :Q, etc
  • Setup a solid set of settings for Formatting (change to meet your needs)
  • Setup the interface to take advantage of vim's features including
    • omnicomplete
    • line numbers
    • syntax highlighting
    • A better ruler & status line
    • & more
  • Configuring included plugins

Customization

Vim Setup Mac

Create ~/.vimrc.local and ~/.gvimrc.local for any local customizations.

For example, to override the default color schemes:

Vundle The best plugin manager

Vundle is an excellent system built on the same principles as Pathogen, but with an integrated plugin management system that is Git and Github aware.

spf13-vim uses the Vundle plugin management system to have a well organized vim directory (Similar to mac's app folders). Vundle also ensures that the latest versions of your plugins are installed and makes it easy to keep them up to date.

NERDTreefile navigation

NERDTree is a file explorer plugin that provides 'project drawer' functionality to your vim editing. You can learn more about it with :help NERDTree or checkout my post on NERDTree.

QuickStart Launch using <Leader>e.

Customizations:

  • Use <C-E> to toggle NERDTree
  • Use <leader>e or <leader>nt to load NERDTreeFind which opens NERDTree where the current file is located.
  • Hide clutter ('.pyc', '.git', '.hg', '.svn', '.bzr')
  • Treat NERDTree more like a panel than a split.

ctrlpfast file finder

Ctrlp replaces the Command-T plugin with a 100% viml plugin. It provides an intuitive and fast mechanism to load files from the file system (with regex and fuzzy find), from open buffers, and from recently used files.

QuickStart Launch using <c-p>.

Surroundmanaging all the '[{}]' etc

This plugin is a tool for dealing with pairs of 'surroundings.' Examples of surroundings include parentheses, quotes, and HTML tags. They are closely related to what Vim refers to as text-objects. Provided are mappings to allow for removing, changing, and adding surroundings.

Details follow on the exact semantics, but first, consider the following examples. An asterisk (*) is used to denote the cursor position.

For instance, if the cursor was inside 'foo bar', you could type cs' to convert the text to 'foo bar'.

Vim Settings Mac

There's a lot more, check it out at :help surround

NERDCommentercomment++

NERDCommenter allows you to wrangle your code comments, regardless of filetype. View help :NERDCommenter for all the details.

QuickStart Toggle comments using <Leader>c<space> in Visual or Normal mode.

Syntasticintegrated syntax checking

Syntastic is a syntax checking plugin that runs buffers through external syntax checkers as they are saved and opened. If syntax errors are detected, the user is notified and is happy because they didn't have to compile their code or execute their script to find them.

numbers.vimbetter line numbers

This plugin will alternate between relative numbering (normal mode) and absolute numbering (insert mode) depending on the mode you are in. This allows you to easily move code around with the relative line numbers when in normal mode. As well as providing accurate line numbers when writing code in insert mode

neocomplcacheautocomplete++

Mac

NeoComplCache is an amazing autocomplete plugin with additional support for snippets. It can complete simulatiously from the dictionary, buffer, omnicomplete and snippets. This is the one true plugin that brings Vim autocomplete on par with the best editors.

QuickStart Just start typing, it will autocomplete where possible

Customizations:

  • Automatically present the autocomplete menu
  • Support tab and enter for autocomplete
  • <C-k> for completing snippets.

Fugitive deep git integration

Fugitive adds pervasive git support to git directories in vim. For more information, use :help fugitive

Use :Gstatus to view git status and type - on any file to stage or unstage it. Type p on a file to enter git add -p and stage specific hunks in the file.

Use :Gdiff on an open file to see what changes have been made to that file

QuickStart<leader>gs to bring up git status

Customizations:

  • <leader>gs :Gstatus
  • <leader>gd :Gdiff
  • <leader>gc :Gcommit
  • <leader>gb :Gblame
  • <leader>gl :Glog
  • <leader>gp :Git push
  • :Git ___ will pass anything along to git.

PIV PHP editing

The most feature complete and up to date PHP Integration for Vim with proper support for PHP 5.3+ including latest syntax, functions, better fold support, etc.

PIV provides:

  • PHP 5.3 support
  • Auto generation of PHP Doc (,pd on (function, variable, class) definition line)
  • Autocomplete of classes, functions, variables, constants and language keywords
  • Better indenting
  • Full PHP documentation manual (hit K on any function for full docs)

Tabularize align everything

Tabularize lets you align statements on their equal signs and other characters

Customizations:

  • <Leader>a= :Tabularize /=
  • <Leader>a: :Tabularize /:
  • <Leader>a:: :Tabularize /:zs
  • <Leader>a, :Tabularize /,
  • <Leader>a<Bar> :Tabularize /

Tagbartag generation and navigation

spf13-vim includes the Tagbar plugin. This plugin requires exuberant-ctags and will automatically generate tags for your open files. It also provides a panel to navigate easily via tags

QuickStartCTRL-] while the cursor is on a keyword (such as a function name) to jump to it's definition.

Customizations: spf13-vim binds <Leader>tt to toggle the tagbar panel

Note: For full language support, run brew install ctags to install exuberant-ctags.

Tip: Check out :help ctags for information about VIM's built-in ctag support. Tag navigation creates a stack which can traversed via Ctrl-] (to find the source of a token) and Ctrl-T (to jump back up one level).

EasyMotionjump anywhere

EasyMotion provides an interactive way to use motions in Vim.

It quickly maps each possible jump destination to a key allowing very fast and straightforward movement.

Mac

QuickStart EasyMotion is triggered using the normal movements, but prefixing them with <leader><leader>

For example this screen shot demonstrates pressing ,w

Adding Your Own Bundles

Create ~/.vimrc.bundles.local for any additional bundles.

To add a new bundle

Custom Settings

Create ~/.vimrc.local and ~/.gvimrc.local for any local customizations.

For example, to override the default color schemes:

Additional Syntaxes

Vim Setup Mac

spf13-vim ships with a few additional syntaxes:

  • Markdown (bound to *.markdown, *.md, and *.mk)
  • Twig
  • Git commits (set your EDITOR to mvim -f)

Amazing Colors

spf13-vim includes solarized and spf13 vim color pack:

  • ir_black
  • molokai
  • peaksea

Use :color molokai to switch to a color scheme.

Snippets

It also contains a very complete set of snippets for use with snipmate or NeoComplCache.

Tutorials

  • Type vimtutor into a shell to go through a brief interactive tutorial inside VIM.
  • Read the slides at VIM: Walking Without Crutches.

Modes

  • VIM has two (common) modes:
    • insert mode- stuff you type is added to the buffer
    • normal mode- keys you hit are interpreted as commands
  • To enter insert mode, hit i
  • To exit insert mode, hit <ESC>

Useful commands

  • Use :q to exit vim
  • Certain commands are prefixed with a <Leader> key, which by default maps to .
  • Spf13-vim uses let mapleader = ',' to change this to , which is in a consistent and convenient location.
  • Keyboard cheat sheet.

Mailing List
Be notified of major updates

Mac

Discussion Group
Discuss issues, ideas, plugins

Contributing
GitHub makes for easy contribution

All development is done via GitHub. Fork and issue a pull request or file an issue.

Vim (source code),short for Vi IMproved, is a configurable text editor often used asa Python development environment. Vim proponents commonly cite the numerousplugins, Vimscript and logical command language as major Vim strengths.

Why is Vim a good Python development environment?

Vim's philosophy is that developers are more productive when they avoidtaking their hands off the keyboard. Code should flow naturally from thedeveloper's thoughts through the keyboard and onto the screen. Using a mouseor other peripheral is a detriment to the rate at which a developer'sthoughts become code. This 'efficiency by keyboard'keeps Vim as one of the most popular text editorsdespite having been around for decades. Few programming tools have that kindof staying power.

Vim has a logical, structured command language. When a beginner is learningthe editor she may feel like it is impossible to understand all the keycommands. However, the commands stack together in a logical way so that overtime the editor becomes predictable.

Vim is an implementation of the text editors and IDEs concept. Learn how these parts fit together in the development environments chapter or view all topics.

Configuring Vim with a Vimrc file

The Vimrc file is used to configure the Vim editor. A Vimrc file can rangefrom nothing in it to very complicated with hundreds or thousands of linesof configuration commands.

Here's a short, commented example .vimrc file I use for Python developmentto get a feel for some of the configuration statements:

Here is how these configuration options look with a dark background onMac OS X while editing the markdown for this webpage (how meta!).

Take a look at another example using these configuration options, this timewith a light background and editing Python code from myChoose Your Own Adventures Presentationsproject.

The Vimrc file lives under the home directory of the user account runningVim. For example, when my user account is 'matt', on Mac OS X my Vimrcfile is found at /Users/matt/.vimrc. On Ubuntu Linux my .vimrc filecan be found within the /home/matt/ directory.

If a Vimrc file does not already exist, just create it within the user'shome directory and it will be picked up by Vim the next time you open theeditor.

The following are a few resources for learning what to put in, and how tostructure a .vimrc file. I recommend adding configuration options oneat a time to test them individually instead of going whole hog with a Vimrcyou are unfamiliar with.

  • A Good Vimrc is a fantastic,detailed overview and opinionated guide to configuring Vim. Highlyrecommended for new and experienced Vim users.

  • 5 lines for a blank .vimrcshows settings for case insensitive search, highlighting as you search,disabling swap, and a couple more 'must have' enhancements to thedefault configuration.

  • Vim and Python showsand explains many Python-specific .vimrc options.

  • Vim as a Python IDEshows a slew of plugins and configuration options for coding with Pythonin Vim.

  • Thisrepository's folder with Vimrc fileshas example configurations that are well commented and easy to learn from.

  • For people who are having trouble getting started with Vim, check out thisblog post on thetwo simple steps that helped this author learn Vim.

Vim tutorials

Vim has a reputation for a difficult learning curve, but it's much easierto get started with these tutorials.

  • Learn Vim Progressivelyis a wonderful tutorial that follows the path I took when learning Vim:learn just enough to survive with it as your day-to-day editor then beginadding more advanced commands on top.

  • A vim Tutorial and Primer is anincredibly deep study in how to go from beginner to knowledgeable in Vim.

  • Why Atom Can't Replace Vimdiscusses one of Vim's core principles: command composability. Vim hasa language where simple commands are combined to execute more advancedoperations. For example, in command mode,$ moves to the end of a line.When $ is preceded by d then everything to the end of the line isdeleted. Over time the simple commands become intuitive and thecombinations become more powerful than having distinct commands such asa drop-down menu with a specific option to delete all text until the endof the line.

  • Vim as a Languageexplains the language syntax and how you can build up over time to masterthe editor.

  • How to install and use Vim on a cloud serveralong with How to use Vim for advanced editing of code on a VPSare two detailed Digital Ocean guides for getting up and running with Vim,regardless of whether you're using it locally or on a cloud server.

  • PacVim: a commandline game to learn Vim commandstakes the PacMan theme and teaches you how to use Vim by forcing youto move around and use Vim commands while gaming.

  • Ten years of Vimprovides an insightful retrospective on one experienced developer'sjourney with using Vim as a primary text editor and developmentenvironment. I found the part about going overboard with plugins beforeswitching back to a simpler configuration fascinating because it isthe same path I've found myself taking as I approach my own ten yearmark with Vim.

  • At least one Vim trick you might not know aboutis a collection of non-obvious keyboard shortcuts, many of which areinfrequently used but still useful.

  • Vim Adventures is a cute, fun browser-basedgame that helps you learn Vim commands by playing through the adventure.

  • In Vim: revisited theauthor explains his on-again off-again relationship with using Vim. He thenshows how he configures and uses the editor so it sticks as his primarycode editing tool.

  • Things About Vim I Wish I Knew Earlierexplores the lessons one developer learned while exclusively using Vimfor several years. The author includes using relative instead of absoluteline numbering, setting numerous configuration options and fuzzy findingto quickly open files in other directories rather than expanding thewhole path.

  • Seven habits of effective text editingexplains moving around efficiently, fixing errors quickly and forming goodhabits.

Vim installation guides

These installation guides will help you get Vim up and running on Mac OS X,Linux and Windows.

  • Upgrading Vim on OS Xexplains why to upgrade from Vim 7.2 to 7.3+ and how to do it usingHomebrew.

  • The easiest way to install Vim on Windows 7+ is to download and run thegvim74.exe file.

  • On Linux make sure to install thevim package withsudo apt-get install vim.

  • If you're using PyCharm as your IDE you won't need to install Vim as aseparate text editor - instead use theIdeaVim PyCharm plugin to getVim keybindings, visual/insert mode, configuration with ~/.ideavimrc andother Vim emulation features.

Using Vim as a Python IDE

Once you get comfortable with Vim as an editor, there are severalconfiguration options and plugins you can use to enhance your Pythonproductivity. These are the resources and tutorials to read when you'reready to take that step.

  • VIM and Python - a Match Made in Heaven details how to set up a powerful VIM environment geared towards wrangling Python day in and day out.

  • The python-mode project is a Vimplugin with syntax highlighting, breakpoints, PEP8 linting, code completionand many other features you'd expect from an integrated developmentenvironment.

  • Vim as Your IDE discusses how toset up Vim for greater productivity once you learn the initial Vim languagefor using the editor.

  • Setting up Vim for Pythonhas a well written answer on Stack Overflow for getting started with Vim.

  • If you're writing your documentation in Markdown using Vim, be sure toread thisinsightful post on a Vim setup for Markdown.

Vim Plugin resources

Mac Vim Color

  • 5 Essential VIM Plugins That Greatly Increase my Productivitycovers the author's experience with the Vundle, NERDTree, ctrlp, Syntasticand EasyMotion Vim plugins.

  • Getting more from Vim with pluginsprovides a list of plugins with a description for each one on itsusefulness. The comments at the bottom are also interesting as people havesuggested alternatives to some of the plugins mentioned in the post.

  • Powerline is a popular statuslineplugin for Vim that works with both Python 2 and 3.

  • VimAwesome is a directory of Vim plugins sourcedfrom Vim.org, GitHub and user submissions.

  • Command-T is a Vim plugin forfast fuzzy searching files.

  • YouCompleteMe(source code) is acode-completion engine and plugin that works for Python.

Vim Plugin Managers

If you use many Vim plugins together it is really handy to have a pluginmanagers to sort out all of the dependencies. The following plugin managersare the most commonly-used ones in the Vim ecosystem.

  • Vundle comes highly recommendedas a plugin manager for Vim.

  • Pathogen is a widely usedplugin manager.

  • Vim-plug bills itself as aminimalistic Vim plugin manager.

Niche tutorials

After you have been using Vim for awhile there will be features you bumpinto without realizing they were ever there. The following tutorials showhow to use some specific niche features. You may already know about theseif you have been using Vim for awhile but everyone's learning path isdifferent so it's useful to do a quick scan to make sure you are not missinganything.

  • Vim’s absolute, relative and hybrid line numbersshows how to change the line numbering scheme. There was a period oftime I used relative line numbers although I eventually switched backto absolute numbers. The usefulness of these schemes is often dependenton what language you are working in.

  • A simpler Vim statuslineexplains how to customize your bottom screen statusline without usingplugins such as vim-powerlineor vim-airline.

  • The vim-clutch is a really coolproject and walkthrough that shows how you can create a foot pedal toswitch between Normal and Insert modes instead of using the typical ESCkey (or a remapped key).

  • How I'm able to take notes in mathematics lectures using LaTeX and Vimexplains how the author is able to keep up with mathematicslectures by using Vim and LaTeX which produces gorgeous notesthat can be used to study.

Now that you know about Vim, what do you want to develop in it?

I want to learn how to code a Python web application using a framework.

I've built a Python web app, now how do I deploy it?