vimrc README

The project's README from github.com/amix/vimrc. As one markdown file: README.md.

VIM

The Ultimate vimrc

Over the last 10 years, I have used and tweaked Vim. This configuration is the ultimate vimrc (or at least my version of it).

There are two versions:

I would, of course, recommend using the awesome version.

How to install the Awesome version?

Install for your own user only

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 from your terminal:

git clone --depth=1 https://github.com/amix/vimrc.git ~/.vim_runtime
sh ~/.vim_runtime/install_awesome_vimrc.sh

Install for multiple users

To install for multiple users, the repository needs to be cloned to a location accessible for all the intended users.

git clone --depth=1 https://github.com/amix/vimrc.git /opt/vim_runtime
sh /opt/vim_runtime/install_awesome_parameterized.sh /opt/vim_runtime user0 user1 user2
# to install for all users with home directories, note that root will not be included
sh /opt/vim_runtime/install_awesome_parameterized.sh /opt/vim_runtime --all

Naturally, /opt/vim_runtime can be any directory, as long as all the users specified have read access.

Fonts

I recommend using IBM Plex Mono font (it's an open-source and awesome font that can make your code look beautiful). The Awesome vimrc is already setup to try to use it.

Some other fonts that Awesome will try to use:

How to install the Basic version?

The basic version is just one file and no plugins. Just copy basic.vim and paste it into your vimrc.

The basic version is useful to install on remote servers where you don't need many plugins, and you don't do many edits.

git clone --depth=1 https://github.com/amix/vimrc.git ~/.vim_runtime
sh ~/.vim_runtime/install_basic_vimrc.sh

How to install on Windows?

Use gitforwindows to checkout the repository and run the installation instructions above. No special instructions needed ;-)

How to install on Linux

If you have vim aliased as vi instead of vim, make sure to either alias it: alias vi=vim. Otherwise, apt-get install vim

How to update to latest version?

Just do a git rebase!

cd ~/.vim_runtime
git reset --hard
git clean -d --force
git pull --rebase
python update_plugins.py  # use python3 if python is unavailable

Some screenshots

Colors when editing a Python file:

Screenshot 1

NERD Tree plugin in a terminal window: Screenshot 3

Distraction free mode using goyo.vim and vim-zenroom2: Screenshot 4

Included Plugins

I recommend reading the docs of these plugins to understand them better. Each plugin provides a much better Vim experience!

Included color schemes

Type :colorscheme <Tab> to try out color schemes on the fly, or add the command to ~/.vim_runtime/my_configs.vim (see below), for example colorscheme pyte.

Included modes

How to include your own stuff?

After you have installed the setup, create an empty ~/.vim_runtime/my_configs.vim file for further customization. This file's syntax matches vimrc syntax, and add vimrc lines like set number as needed.

For instance, my my_configs.vim looks like this:

~/.vim_runtime > cat my_configs.vim
map <leader>ct :cd ~/Desktop/Todoist/todoist<cr>
map <leader>cw :cd ~/Desktop/Wedoist/wedoist<cr> 

You can also install your plugins, for instance, via pathogen you can install vim-rails:

cd ~/.vim_runtime
git clone git://github.com/tpope/vim-rails.git my_plugins/vim-rails

You can also install plugins without any plugin manager (vim 8+ required):

Key Mappings

The leader is ,, so whenever you see <leader> it means ,.

Normal mode mappings

Fast saving of a buffer (<leader>w):

nmap <leader>w :w!<cr>

Map <Space> to / (search) and <Ctrl>+<Space> to ? (backwards search):

map <space> /
map <C-space> ?

Disable highlights when you press <leader><cr>:

map <silent> <leader><cr> :noh<cr>

Smart way to move between windows (<ctrl>j etc.):

map <C-j> <C-W>j
map <C-k> <C-W>k
map <C-h> <C-W>h
map <C-l> <C-W>l

Closing of the current buffer(s) (<leader>bd and (<leader>ba)):

" Close current buffer
map <leader>bd :Bclose<cr>

" Close all buffers
map <leader>ba :1,1000 bd!<cr>
```	
Useful mappings for managing tabs:
```vim	
map <leader>tn :tabnew<cr>
map <leader>to :tabonly<cr>
map <leader>tc :tabclose<cr>
map <leader>tm :tabmove 

" Opens a new tab with the current buffer's path
" Super useful when editing files in the same directory
map <leader>te :tabedit <C-r>=escape(expand("%:p:h"), " ")<cr>/
```	
Switch [CWD](http://vim.wikia.com/wiki/Set_working_directory_to_the_current_file) to the directory of the open buffer:
```vim	
map <leader>cd :cd %:p:h<cr>:pwd<cr>
```	
Open `ack.vim` for fast search:
```vim	
map <leader>g :Ack 

Quickly open a buffer for scripbble:

map <leader>q :e ~/buffer<cr>

Toggle paste mode on and off:

map <leader>pp :setlocal paste!<cr>

Visual mode mappings

Visual mode pressing * or # searches for the current selection:

vnoremap <silent> * :call VisualSelection('f')<CR>
vnoremap <silent> # :call VisualSelection('b')<CR>

When you press gv you Ack.vim after the selected text:

vnoremap <silent> gv :call VisualSelection('gv', '')<CR>

When you press <leader>r you can search and replace the selected text:

vnoremap <silent> <leader>r :call VisualSelection('replace')<CR>

Surround the visual selection in parenthesis/brackets/etc.:

vnoremap $1 <esc>`>a)<esc>`<i(<esc>
vnoremap $2 <esc>`>a]<esc>`<i[<esc>
vnoremap $3 <esc>`>a}<esc>`<i{<esc>
vnoremap $$ <esc>`>a"<esc>`<i"<esc>
vnoremap $q <esc>`>a'<esc>`<i'<esc>
vnoremap $e <esc>`>a`<esc>`<i`<esc>

Insert mode mappings

Quickly insert parenthesis/brackets/etc.:

inoremap $1 ()<esc>i
inoremap $2 []<esc>i
inoremap $3 {}<esc>i
inoremap $4 {<esc>o}<esc>O
inoremap $q ''<esc>i
inoremap $e ""<esc>i
inoremap $t <><esc>i

Insert the current date and time (useful for timestamps):

iab xdate <C-r>=strftime("%d/%m/%y %H:%M:%S")<cr>

Command line mappings

$q is super useful when browsing on the command line. It deletes everything until the last slash:

cno $q <C-\>eDeleteTillSlash()<cr>

Bash like keys for the command line:

cnoremap <C-A>		<Home>
cnoremap <C-E>		<End>
cnoremap <C-K>		<C-U>

cnoremap <C-P> <Up>
cnoremap <C-N> <Down>

Write the file as sudo (works only on Unix). Super useful when you open a file and you don't have permissions to save your changes. Vim tip:

:W 

Open bufexplorer to see and manage the current buffers (<leader>o):

map <leader>o :BufExplorer<cr>

Open ctrlp.vim plugin to quickly find a file or a buffer (<leader>j or <ctrl>f):

" Quickly find and open a file in the CWD
let g:ctrlp_map = '<C-f>'

" Quickly find and open a recently opened file
map <leader>f :MRU<CR>

" Quickly find and open a buffer
map <leader>b :CtrlPBuffer<cr>

NERD Tree mappings:

map <leader>nn :NERDTreeToggle<cr>
map <leader>nb :NERDTreeFromBookmark 
map <leader>nf :NERDTreeFind<cr>

goyo.vim and 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. (<leader>z)

map <leader>z :Goyo<cr>

vim-multiple-cursors mappings to manage multiple cursors at once:

let g:multi_cursor_start_word_key      = '<C-s>'
let g:multi_cursor_select_all_word_key = '<A-s>'
let g:multi_cursor_start_key           = 'g<C-s>'
let g:multi_cursor_select_all_key      = 'g<A-s>'
let g:multi_cursor_next_key            = '<C-s>'
let g:multi_cursor_prev_key            = '<C-p>'
let g:multi_cursor_skip_key            = '<C-x>'
let g:multi_cursor_quit_key            = '<Esc>'

vim-yankstack mappings to manage the kill-ring (clipboard):

nmap <C-p> <Plug>yankstack_substitute_older_paste
nmap <C-n> <Plug>yankstack_substitute_newer_paste

ctrl-p mappings to easily find and open a file, buffer, etc.:

let g:ctrlp_map = '<C-f>'
map <leader>j :CtrlP<cr>
map <C-b> :CtrlPBuffer<cr>

vim-snipmate mappings to autocomplete via snippets:

ino <C-j> <C-r>=snipMate#TriggerSnippet()<cr>
snor <C-j> <esc>i<right><C-r>=snipMate#TriggerSnippet()<cr>

vim-surround mappings to easily surround a string with _() gettext annotation:

vmap Si S(i_<esc>f)
au FileType mako vmap Si S"i${ _(<esc>2f"a) }<esc>

ale to easily go to the next Ale syntax/lint error:

nmap <silent> <leader>a <Plug>(ale_next_wrap)

vim-indent-guides the default mapping to toggle the plugin is (<leader>ig)

You can also use the following commands inside Vim:
:IndentGuidesEnable
:IndentGuidesDisable
:IndentGuidesToggle

vim-fugitive to copy the link to the line of a Git repository to the clipboard:

nnoremap <leader>v :.GBrowse!<CR>
xnoremap <leader>v :'<'>GBrowse!<CR>

Spell checking

Pressing <leader>ss will toggle spell checking:

map <leader>ss :setlocal spell!<cr>

Shortcuts using <leader> instead of special characters:

map <leader>sn ]s
map <leader>sp [s
map <leader>sa zg
map <leader>s? z=

Running Code

To run code directly from vim, press F5. The currently open code will execute without you having to type anything.

Can be used to execute code written in C, C++, Java, Python, Go, Octave, Bash scripts and HTML. To edit how you want your code to be executed, make changes in the file ~/.vim_runtime/vimrcs/extended.vim

Cope

Query :help cope if you are unsure what cope is. It's super useful!

When you search with Ack.vim, display your results in cope by doing: <leader>cc

To go to the next search result do: <leader>n

To go to the previous search results do: <leader>p

Cope mappings:

map <leader>cc :botright cope<cr>
map <leader>co ggVGy:tabnew<cr>:set syntax=qf<cr>pgg
map <leader>n :cn<cr>
map <leader>p :cp<cr>

How to uninstall

Just do following:

Looking for a remote-first job?

Maintaining this Vim configuration isn't my day job. Daily I am the founder/CEO of Doist. You could come and help us build the workplace of the future while living a balanced life (anywhere in the world 🌍🌎🌏).

PS: Using Vim isn't a requirement 😄

vimrc (amix/vimrc)

Searching Database…

31.8K ·GitHub
这是什么?The Ultimate vimrc 是一套打磨多年、拿来即用的 Vim 配置,作者已经持续调整了十多年。把它安装到你的用户主目录后,Vim 开箱就能好用很多。
它是单个配置文件,还是带插件的完整配置?有两种版本。Basic 是不带插件的单一文件,适合只做少量编辑的远程服务器;Awesome(推荐)是带大量插件、配色方案和配置项的完整版本,通过脚本安装。
怎么安装?以后怎么更新?先把仓库浅克隆到 ~/.vim_runtime,然后运行 sh ~/.vim_runtime/install_awesome_vimrc.sh。以后更新时:先执行 git reset --hard 和 git clean -d --force,再执行 git pull --rebase,最后运行 python update_plugins.py(如果没有 python 命令就用 python3)。
对 Vim 版本或其他工具有要求吗?安装本身只需要 Vim 和 Git。其中一个内置插件 ALE 需要 NeoVim >= 0.2.0,或者编译时带 +timers +job +channel 的 Vim 8;另外更新插件的步骤需要用到 Python。
它会改变我平时习惯的 Vim 按键吗?会,而且变化挺明显。leader 键被改成了逗号,很多日常操作也有自定义映射——快速保存、关闭缓冲区、切换窗口、ack 搜索、按 F5 运行代码等等,所以要有心理准备重新适应一些习惯。
它在 Windows 上能用吗,还是只能用在 Unix 系统上?只要能跑 Vim 的地方都能用,Windows 也支持:用 gitforwindows 克隆仓库,然后按同样的步骤操作即可;在 Linux 上,要确认 vi 已经别名指向 vim,或者用 apt-get 安装 vim。
Awesome 版本自带哪些插件?二十多个:NERD Tree 文件浏览器、ctrlp 模糊查找器、vim-fugitive Git 封装、ALE 代码检查、lightline 状态栏、snipmate 代码片段、vim-multiple-cursors、vim-commentary、vim-yankstack、editorconfig 支持,以及 AI 自动补全的 copilot.vim,还有免打扰模式的 goyo 和 vim-zenroom2。
能在 Vim 里直接运行代码吗?可以——按 F5 就会直接执行当前打开的文件。支持 C、C++、Java、Python、Go、Octave、Bash 脚本和 HTML,运行方式可以在 vimrcs/extended.vim 里自行调整。
我想加自己的配置和插件,该怎么做?个人配置写在 ~/.vim_runtime/my_configs.vim 里,这个文件就是专门留给你的。额外的插件可以通过 pathogen 装到 my_plugins/ 目录,或者在 Vim 8 及以上版本直接克隆到 ~/.vim_runtime/pack/plugins/start,完全不需要插件管理器。
它用哪些字体和配色方案?优先使用 IBM Plex Mono(作者推荐的字体),其次是 Hack 和 Source Code Pro。内置配色方案有 peaksea(默认)、Solarized、vim-irblack、mayansmoke 和 pyte,可以用 :colorscheme 实时预览切换。
Creator
amix
Size
31.7 MB
Stars
31.8K
Updated
CommitOct 06
Age
14y
Commits · 90 Days