diff --git a/README.md b/README.md index 4d78188f..00ddd215 100644 --- a/README.md +++ b/README.md @@ -1,329 +1,9 @@ # The Ultimate vimrc -Over the last 8 years I have used and tweaked Vim. This is my Ultimate vimrc. +I've taken the [fantastic awesome vim](https://github.com/amix/vimrc) collection of plugins, and made some tweaks. They are all under the `my_configs.vimrc` file and basically add these essentials (for me): -There are two versions: +- Line numbers on the left +- Ruler at 80 chars +- Actual copying into the OSX clipboard (requires vim 7.4) -* **Basic**: If you want something small just copy [basic.vim](https://github.com/amix/vimrc/blob/master/vimrcs/basic.vim) into your ~/.vimrc and you will have a great basic setup -* **Awesome**: This includes a ton of useful plugins, color schemes and configurations - -I would of course recommend using the awesome version. - -## How to install the Awesome version? -The awesome version includes a lot of great plugins, configurations and color schemes that make Vim a lot better. To install it simply do following: - - git clone https://github.com/amix/vimrc.git ~/.vim_runtime - sh ~/.vim_runtime/install_awesome_vimrc.sh - -The taglist.vim plugin will require ctags (http://ctags.sourceforge.net) (Debian: apt-get install ctags) - -I also recommend using [Source Code Pro font from Adobe](http://store1.adobe.com/cfusion/store/html/index.cfm?event=displayFontPackage&code=1960) (it's free and awesome font for writing and programming). The Awesome vimrc is already setup to try to use it - -## How to install the Basic version? -The basic version is basically just one file and no plugins. You can check out [basic.vim](https://github.com/amix/vimrc/blob/master/vimrcs/basic.vim). - -This is useful to install on remote servers where you don't need many plugins and you don't do many edits. - - git clone git://github.com/amix/vimrc.git ~/.vim_runtime - sh ~/.vim_runtime/install_basic_vimrc.sh - - -## How to install on Windows? - -Use [msysgit](http://msysgit.github.com/) to checkout the repository and run the installation instructions above. No special instructions needed ;-) - - -## How to update to latest version? - -Simply just do a git rebase! - - cd ~/.vim_runtime - git pull --rebase - - -## Some screenshots - -Colors when editing a Python file: -![Screenshot 1](http://files1.wedoist.com/e952fdb343b1e617b90d256e474d0370/as/screenshot_1.png) - -Opening recently opened files [mru.vim](https://github.com/vim-scripts/mru.vim): -![Screenshot 2](http://files1.wedoist.com/1967b0e48af40e513d1a464e08196990/as/screenshot_2.png) - -[NERD Tree](https://github.com/scrooloose/nerdtree) plugin in a terminal window: -![Screenshot 3](http://files1.wedoist.com/b1509d7ed9e9f357e8d04797f9fad67b/as/screenshot3.png) - -This vimrc even works on Windows! -![Screenshot 4](http://files1.wedoist.com/4e85163d97b81422240c822c82022f2f/as/screenshot_4.png) - -Distraction free mode using [goyo.vim](https://github.com/junegunn/goyo.vim) and [vim-zenroom2](https://github.com/amix/vim-zenroom2): -![Screenshot 5](https://d2dq6e731uoz0t.cloudfront.net/a5182977c3d6c2a6cd3f9e97398ca8ca/as/zen_mode.jpg) - - -## Included Plugins - -I recommend reading the docs of these plugins to understand them better. Each of them provide a much better Vim experience! - -* [pathogen.vim](https://github.com/tpope/vim-pathogen): Manages the runtime path of the plugins -* [YankRing](https://github.com/vim-scripts/YankRing.vim): Maintains a history of previous yanks, changes and deletes -* [snipMate.vim](https://github.com/garbas/vim-snipmate): snipMate.vim aims to be a concise vim script that implements some of TextMate's snippets features in Vim -* [bufexplorer.zip](https://github.com/vim-scripts/bufexplorer.zip): Buffer Explorer / Browser. This plugin can be opened with `` -* [NERD Tree](https://github.com/scrooloose/nerdtree): A tree explorer plugin for vim -* [ack.vim](https://github.com/mileszs/ack.vim): Vim plugin for the Perl module / CLI script 'ack' -* [ag.vim](https://github.com/rking/ag.vim): A much faster Ack -* [ctrlp.vim](https://github.com/kien/ctrlp.vim): Fuzzy file, buffer, mru and tag finder. In my config it's mapped to ``, because `` is used by YankRing -* [mru.vim](https://github.com/vim-scripts/mru.vim): Plugin to manage Most Recently Used (MRU) files. Includes my own fork which adds syntax highlighting to MRU. This plugin can be opened with `` -* [open_file_under_cursor.vim](https://github.com/amix/open_file_under_cursor.vim): Open file under cursor when pressing `gf` -* [zencoding](https://github.com/mattn/emmet-vim): Expanding abbreviation like zen-coding, very useful for editing XML, HTML. -* [vim-indent-object](https://github.com/michaeljsmith/vim-indent-object): Defines a new text object representing lines of code at the same indent level. Useful for python/vim scripts -* [taglist.vim](https://github.com/vim-scripts/taglist.vim): Source code browser (supports C/C++, java, perl, python, tcl, sql, php, etc) -* [vim-multiple-cursors](https://github.com/terryma/vim-multiple-cursors): Sublime Text style multiple selections for Vim, CTRL+N is remapped to CTRL+S (due to YankRing) -* [vim-expand-region](https://github.com/terryma/vim-expand-region): Allows you to visually select increasingly larger regions of text using the same key combination. -* [vim-airline](https://github.com/bling/vim-airline): Lean & mean status/tabline for vim that's light as air (replacing powerline) -* [vim-fugitive](https://github.com/tpope/vim-fugitive): A Git wrapper so awesome, it should be illegal -* [goyo.vim](https://github.com/junegunn/goyo.vim) and [vim-zenroom2](https://github.com/amix/vim-zenroom2): -Remove all clutter and focus only on the essential. Similar to iA Writer or Write Room [Read more here](http://amix.dk/blog/post/19744) -* [vim-commentary](https://github.com/tpope/vim-commentary): Comment stuff out. Use `gcc` to comment out a line (takes a count), `gc` to comment out the target of a motion. `gcu` uncomments a set of adjacent commented lines. -* [syntastic](https://github.com/scrooloose/syntastic): Syntax checking hacks for vim - - -## Included color schemes - -* [peaksea](https://github.com/vim-scripts/peaksea): My favorite! -* [vim-colors-solarized](https://github.com/altercation/vim-colors-solarized) -* [vim-irblack](https://github.com/wgibbs/vim-irblack) -* [mayansmoke](https://github.com/vim-scripts/mayansmoke) -* [vim-pyte](https://github.com/therubymug/vim-pyte) - - -## Included modes - -* [vim-coffee-script](https://github.com/kchmck/vim-coffee-script) -* [vim-less](https://github.com/groenewege/vim-less) -* [vim-bundle-mako](https://github.com/sophacles/vim-bundle-mako) -* [vim-markdown](https://github.com/tpope/vim-markdown) -* [nginx.vim](https://github.com/vim-scripts/nginx.vim): Highlights configuration files for nginx -* [vim-golang](https://github.com/jnwhiteh/vim-golang) - - -## How to include your own stuff? - -After you have installed the setup you can create **~/.vim_runtime/my_configs.vim** to fill in any configurations that are important for you. For instance, my **my_configs.vim** looks like this: - - ~/.vim_runtime (master)> cat my_configs.vim - map ct :cd ~/Desktop/Todoist/todoist - map cw :cd ~/Desktop/Wedoist/wedoist - -You can also install your own plugins, for instance, via pathogen we can install [vim-rails](https://github.com/tpope/vim-rails): - - cd ~/.vim_runtime - git clone git://github.com/tpope/vim-rails.git sources_non_forked/vim-rails - -Now you have vim-rails installed ;-) - - -## Key Mappings - -### Plugin related mappings - -Open [bufexplorer](https://github.com/vim-scripts/bufexplorer.zip) and see and manage the current buffers: - - map o :BufExplorer - -Open [MRU.vim](https://github.com/vim-scripts/mru.vim) and see the recently open files: - - map f :MRU - -Open [ctrlp.vim](https://github.com/kien/ctrlp.vim) plugin: - - let g:ctrlp_map = '' - -Open [PeepOpen](https://peepcode.com/products/peepopen) plugin: - - map j :PeepOpen - -Managing the [NERD Tree](https://github.com/scrooloose/nerdtree) plugin: - - map nn :NERDTreeToggle - map nb :NERDTreeFromBookmark - map nf :NERDTreeFind - -[goyo.vim](https://github.com/junegunn/goyo.vim) and [vim-zenroom2](https://github.com/amix/vim-zenroom2) lets you only focus on one thing at a time. It removes all the distractions and centers the content. It has a special look when editing Markdown, reStructuredText and textfiles. It only has one mapping. - - map z :Goyo - -### Normal mode mappings - -Fast saving of a buffer: - - nmap w :w! - -Treat long lines as break lines (useful when moving around in them): - - map j gj - map k gk - -Map `` to `/` (search) and `+` to `?` (backwards search): - - map / - map ? - map :noh - -Disable highlight when `` is pressed: - - map :noh - -Smart way to move between windows: - - map j - map k - map h - map l - -Closing of current buffer(s): - - " Close current buffer - map bd :Bclose - - " Close all buffers - map ba :1,1000 bd! - -Useful mappings for managing tabs: - - map tn :tabnew - map to :tabonly - map tc :tabclose - map tm :tabmove - - " Opens a new tab with the current buffer's path - " Super useful when editing files in the same directory - map te :tabedit =expand("%:p:h")/ - -Switch CWD to the directory of the open buffer: - - map cd :cd %:p:h:pwd - -Open vimgrep and put the cursor in the right position: - - map g :vimgrep // **/*. - -Vimgreps in the current file: - - map :vimgrep // % - -Remove the Windows ^M - when the encodings gets messed up: - - noremap m mmHmt:%s///ge'tzt'm - -Quickly open a buffer for scripbble: - - map q :e ~/buffer - -Toggle paste mode on and off: - - map pp :setlocal paste! - - -### Insert mode mappings - -Quickly insert parenthesis/brackets/etc.: - - inoremap $1 ()i - inoremap $2 []i - inoremap $3 {}i - inoremap $4 {o}O - inoremap $q ''i - inoremap $e ""i - inoremap $t <>i - -Insert the current date and time (useful for timestamps): - - iab xdate =strftime("%d/%m/%y %H:%M:%S") - - -### Visual mode mappings - -Visual mode pressing `*` or `#` searches for the current selection: - - vnoremap * :call VisualSelection('f') - vnoremap # :call VisualSelection('b') - -When you press gv you vimgrep after the selected text: - - vnoremap gv :call VisualSelection('gv') - -When you press `r` you can search and replace the selected text: - - vnoremap r :call VisualSelection('replace') - -Surround the visual selection in parenthesis/brackets/etc.: - - vnoremap $1 `>a)` - vnoremap $2 `>a]` - vnoremap $3 `>a}` - vnoremap $$ `>a"` - vnoremap $q `>a'` - vnoremap $e `>a"` - - -### Command line mappings - -$q is super useful when browsing on the command line. It deletes everything until the last slash: - - cno $q eDeleteTillSlash() - -Bash like keys for the command line: - - cnoremap - cnoremap - cnoremap - - cnoremap - cnoremap - -Write the file as sudo (only on Unix). Super useful when you open a file and you don't have permissions to save your changes. [Vim tip](http://vim.wikia.com/wiki/Su-write): - - :W - - -### Spell checking -Pressing `ss` will toggle and untoggle spell checking - - map ss :setlocal spell! - -Shortcuts using `` instead of special chars - - map sn ]s - map sp [s - map sa zg - map s? z= - -### Cope -Do :help cope if you are unsure what cope is. It's super useful! - -When you search with vimgrep, display your results in cope by doing: -`cc` - -To go to the next search result do: -`n` - -To go to the previous search results do: -`p` - -Vimscript mappings: - - map cc :botright cope - map co ggVGy:tabnew:set syntax=qfpgg - map n :cn - map p :cp - -## Useful blog tips regarding my Vim setup - -* [Vim: Annotate strings with gettext (the macro way)](http://amix.dk/blog/post/19678#Vim-Annotate-strings-with-gettext-the-macro-way) -* [vimgrep: Searching through multiple file extensions](http://amix.dk/blog/post/19672#vimgrep-Searching-through-multiple-file-extensions) -* [Filtering through vimgrep results using regular expressions](http://amix.dk/blog/post/19666#Filtering-through-vimgrep-results-using-regular-expressions) -* [PeepOpen - File auto completion for Mac editors](http://amix.dk/blog/post/19601#PeepOpen-File-auto-completion-for-Mac-editors) -* [Vim 7.3: Persistent undo and encryption!](http://amix.dk/blog/post/19548#Vim-7-3-Persistent-undo-and-encryption) -* [Vim tips: Visual Search](http://amix.dk/blog/post/19334#Vim-tips-Visual-Search) -* [Folding in Vim](http://amix.dk/blog/post/19132#Folding-in-Vim) -* [ -Zen room for Vim: Focusing only on the essential](http://amix.dk/blog/post/19744#zenroom-for-Vim-Focsuing-only-on-the-essential) +I highly suggest you visit the parent repo and see the overview, or look at the actual `.vimrc` files – which are very well documented. Enjoy!