vimrc
vimrc copied to clipboard
自己的vimrc配置,别人的用起来总不顺手(基于spf13-vim)
breaker vimrc : Breaker Vim Distribution
_-. .-_ _..-'( )`-.._ ./'. '||\\. (\_/) .//||` .`\. ./'.|'.'||||\\|.. )*.*( ..|//||||`.`|.`\. ./'..|'.|| |||||\``````` " '''''''/||||| ||.`|..`\. ./'.||'.|||| ||||||||||||. .|||||||||||| ||||.`||.`\. /'|||'.|||||| ||||||||||||{ }|||||||||||| ||||||.`|||`\ '.|||'.||||||| ||||||||||||{ }|||||||||||| |||||||.`|||.` '.||| ||||||||| |/' ``\||/` '\||/'' `\| ||||||||| |||.` |/' \./' `\./ |/\ /\| \./' `\./ `\| V V V }' `\ /' `{ V V V ` ` ` U ' ' ___ ( _`\ ( ) | (_) ) _ __ __ _ _ | |/') __ _ __ ______ _ _ (_) ___ ___ | _Enginsh README
Breaker-vim 是一个集成了多种插件的vim配置,支持vim,Gvim和MacVim breaker-vim 适合作为一个IDE。并且在各种平台上运行良好,包括 Linux, *nix and Mac. 本配置文件有强大的自定义功能,用户可以添加自己的配置到
~/.vimrc.local
,~/.vimrc.bundles.local
, and~/.vimrc.before.local
.
与传统的vim插件文件结构不通,breaker-vim使用Vimdle插件管理vim插件,这样更有利于vim插件的增加、删除和更新
安装
需求
neocomplete插件需要vim支持lua. 你可能需要重新编译vim让其支持lua,因为默认vim不支持lua。
Linux, *nix, Mac OSX 安装
最简单的安装方式是使用安装器安装.拷贝和粘贴并执行下面的命令. 安装器会首先备份你vim之前的配置,当你已经安装过breaker-vim,并不会备份,只会升级插件以及配置到最新版本。
- 要求安装 Git 1.7+ 和 Vim 7.3+*
curl https://coding.net/u/breaker/p/vimrc/git/raw/dev/bootstrap.sh -L > breaker-vim.sh && sh breaker-vim.sh
或者:
sh <(curl https://coding.net/u/breaker/p/vimrc/git/raw/dev/bootstrap.sh -L)
升级到最新版本
升级插件和配置最简单和最安全的方式就是使用安装器。使用以下命令:
curl https://raw.githubusercontent.com/ibreaker/vimrc/dev/bootstrap.sh -L -o - | sh
或者你可以手动指向下面的命令,如果文件结构有所改变,你需要创建相应的符号链接。
cd $HOME/to/breaker-vim/
git pull
vim +BundleInstall! +BundleClean +q
Fork me on GitHub
很乐意接收PRs。现在已经有很多人为Breaker-vim贡献代码,请fork项目。
一个高度可配置的.vim coding项目
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
Create ~/.vimrc.local
and ~/.gvimrc.local
for any local
customizations.
For example, to override the default color schemes:
echo colorscheme ir_black >> ~/.vimrc.local
Before File
Create a ~/.vimrc.before.local
file to define any customizations
that get loaded before the breaker-vim .vimrc
.
For example, to prevent autocd into a file directory:
echo let g:breaker_no_autochdir = 1 >> ~/.vimrc.before.local
For a list of available breaker-vim specific customization options, look at the ~/.vimrc.before
file.
Fork Customization
There is an additional tier of customization available to those who want to maintain a
fork of Breaker-vim specialized for a particular group. These users can create .vimrc.fork
and .vimrc.bundles.fork
files in the root of their fork. The load order for the configuration is:
-
.vimrc.before
- Breaker-vim before configuration -
.vimrc.before.fork
- fork before configuration -
.vimrc.before.local
- before user configuration -
.vimrc.bundles
- Breaker-vim bundle configuration -
.vimrc.bundles.fork
- fork bundle configuration -
.vimrc.bundles.local
- local user bundle configuration -
.vimrc
- Breaker-vim vim configuration -
.vimrc.fork
- fork vim configuration -
.vimrc.local
- local user configuration
See .vimrc.bundles
for specifics on what options can be set to override bundle configuration. See .vimrc.before
for specifics
on what options can be overridden. Most vim configuration options should be set in your .vimrc.fork
file, bundle configuration
needs to be set in your .vimrc.bundles.fork
file.
You can specify the default bundles for your fork using .vimrc.before.fork
file. Here is how to create an example .vimrc.before.fork
file
in a fork repo for the default bundles.
echo let g:breaker_bundle_groups=[\'general\', \'programming\', \'misc\', \'youcompleteme\'] >> .vimrc.before.fork
Once you have this file in your repo, only the bundles you specified will be installed during the first installation of your fork.
You may also want to update your README.markdown
file so that the bootstrap.sh
link points to your repository and your bootstrap.sh
file to pull down your fork.
Easily Editing Your Configuration
<Leader>ev
opens a new tab containing the .vimrc configuration files listed above. This makes it easier to get an overview of your
configuration and make customizations.
<Leader>sv
sources the .vimrc file, instantly applying your customizations to the currently running vim instance.
These two mappings can themselves be customized by setting the following in .vimrc.before.local:
let g:breaker_edit_config_mapping='<Leader>ev'
let g:breaker_apply_config_mapping='<Leader>sv'
Plugins
Breaker-vim contains a curated set of popular vim plugins, colors, snippets and syntaxes. Great care has been made to ensure that these plugins play well together and have optimal configuration.
Adding new plugins
Create ~/.vimrc.bundles.local
for any additional bundles.
To add a new bundle, just add one line for each bundle you want to install. The line should start with the word "Bundle" followed by a string of either the vim.org project name or the githubusername/githubprojectname. For example, the github project spf13/vim-colors can be added with the following command
echo Bundle \'spf13/vim-colors\' >> ~/.vimrc.bundles.local
Once new plugins are added, they have to be installed.
vim +BundleInstall! +BundleClean +q
Removing (disabling) an included plugin
Create ~/.vimrc.local
if it doesn't already exist.
Add the UnBundle command to this line. It takes the same input as the Bundle line, so simply copy the line you want to disable and add 'Un' to the beginning.
For example, disabling the 'AutoClose' and 'scrooloose/syntastic' plugins
echo UnBundle \'AutoClose\' >> ~/.vimrc.bundles.local
echo UnBundle \'scrooloose/syntastic\' >> ~/.vimrc.bundles.local
Remember to run ':BundleClean!' after this to remove the existing directories
Here are a few of the plugins:
Undotree
If you undo changes and then make a new change, in most editors the changes you undid are gone forever, as their undo-history is a simple list. Since version 7.0 vim uses an undo-tree instead. If you make a new change after undoing changes, a new branch is created in that tree. Combined with persistent undo, this is nearly as flexible and safe as git ;-)
Undotree makes that feature more accessible by creating a visual representation of said undo-tree.
QuickStart Launch using <Leader>u
.
NERDTree
NERDTree is a file explorer plugin that provides "project drawer"
functionality to your vim editing. You can learn more about it with
:help 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.
ctrlp
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>
.
Surround
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.
Old text Command New text ~
"Hello *world!" ds" Hello world!
[123+4*56]/2 cs]) (123+456)/2
"Look ma, I'm *HTML!" cs"<q> <q>Look ma, I'm HTML!</q>
if *x>3 { ysW( if ( x>3 ) {
my $str = *whee!; vllllS' my $str = 'whee!';
For instance, if the cursor was inside "foo bar"
, you could type
cs"'
to convert the text to 'foo bar'
.
There's a lot more, check it out at :help surround
NERDCommenter
NERDCommenter allows you to wrangle your code comments, regardless of
filetype. View help :NERDCommenter
or checkout my post on .
QuickStart Toggle comments using <Leader>c<space>
in Visual or Normal mode.
neocomplete
Neocomplete 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 using Neosnippet.
YouCompleteMe
YouCompleteMe is another amazing completion engine. It is slightly more involved to set up as it contains a binary component that the user needs to compile before it will work. As a result of this however it is very fast.
To enable YouCompleteMe add youcompleteme
to your list of groups by overriding it in your .vimrc.before.local
like so: let g:breaker_bundle_groups=['general', 'programming', 'misc', 'scala', 'youcompleteme']
This is just an example. Remember to choose the other groups you want here.
Once you have done this you will need to get Vundle to grab the latest code from git. You can do this by calling :BundleInstall!
. You should see YouCompleteMe in the list.
You will now have the code in your bundles directory and can proceed to compile the core. Change to the directory it has been downloaded to. If you have a vanilla install then cd ~/.vim/bundle/YouCompleteMe/
should do the trick. You should see a file in this directory called install.sh. There are a few options to consider before running the installer:
- Do you want clang support (if you don't know what this is then you likely don't need it)?
- Do you want to link against a local libclang or have the installer download the latest for you?
- Do you want support for c# via the omnisharp server?
The plugin is well documented on the site linked above. Be sure to give that a read and make sure you understand the options you require.
For java users wanting to use eclim be sure to add let g:EclimCompletionMethod = 'omnifunc'
to your .vimrc.local.
Syntastic
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.
AutoClose
AutoClose does what you expect. It's simple, if you open a bracket, paren, brace, quote, etc, it automatically closes it. It handles curlys correctly and doesn't get in the way of double curlies for things like jinja and twig.
Fugitive
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<CR> -
<leader>gd
:Gdiff<CR> -
<leader>gc
:Gcommit<CR> -
<leader>gb
:Gblame<CR> -
<leader>gl
:Glog<CR> -
<leader>gp
:Git push<CR> -
<leader>gw
:Gwrite<CR> - :Git ___ will pass anything along to git.
![fugitive image][fugitive-img]
PIV
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)
![php vim itegration image][phpmanual-img]
Ack.vim
Ack.vim uses ack to search inside the current directory for a pattern.
You can learn more about it with :help Ack
QuickStart :Ack
Tabularize
Tabularize lets you align statements on their equal signs and other characters
Customizations:
-
<Leader>a= :Tabularize /=<CR>
-
<Leader>a: :Tabularize /:<CR>
-
<Leader>a:: :Tabularize /:\zs<CR>
-
<Leader>a, :Tabularize /,<CR>
-
<Leader>a<Bar> :Tabularize /<Bar><CR>
Tagbar
Breaker-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
QuickStart CTRL-]
while the cursor is on a keyword (such as a function name) to jump to its definition.
Customizations: Breaker-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).
EasyMotion
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.
QuickStart EasyMotion is triggered using the normal movements, but prefixing them with <leader><leader>
For example this screen shot demonstrates pressing ,,w
Airline
Airline provides a lightweight themable statusline with no external dependencies. By default this configuration uses the symbols ‹
and ›
as separators for different statusline sections but can be configured to use the same symbols as Powerline. An example first without and then with powerline symbols is shown here:
To enable powerline symbols first install one of the Powerline Fonts or patch your favorite font using the provided instructions. Configure your terminal, MacVim, or Gvim to use the desired font. Finally add let g:airline_powerline_fonts=1
to your .vimrc.before.local
.
Additional Syntaxes
Breaker-vim ships with a few additional syntaxes:
- Markdown (bound to *.markdown, *.md, and *.mk)
- Twig
- Git commits (set your
EDITOR
tomvim -f
)
Amazing Colors
Breaker-vim includes solarized and spf13 vim color pack:
- ir_black
- molokai
- peaksea
Use :color molokai
to switch to a color scheme.
Terminal Vim users will benefit from solarizing their terminal emulators and setting solarized support to 16 colors:
let g:solarized_termcolors=16
color solarized
Terminal emulator colorschemes:
- http://ethanschoonover.com/solarized (iTerm2, Terminal.app)
- https://github.com/phiggins/konsole-colors-solarized (KDE Konsole)
- https://github.com/sigurdga/gnome-terminal-colors-solarized (Gnome Terminal)
Snippets
It also contains a very complete set of snippets for use with snipmate or neocomplete.
Intro to VIM
Here's some tips if you've never used VIM before:
Tutorials
- Type
vimtutor
into a shell to go through a brief interactive tutorial inside VIM.
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\
. Breaker-vim useslet mapleader = ","
to change this to,
which is in a consistent and convenient location. - Keyboard cheat sheet.