在过去的十年里,我一直在使用和调整 Vim。这个配置是终极版的 vimrc(或者至少是我的版本)。
有两个版本:
基础版: 如果您想要一些小版本,只需将 basic.vim 复制到您的 ~/.vimrc 中,即可获得一个良好的基本设置。
超极版: 包含大量实用的插件、配色方案和配置。
当然,我推荐使用超极版。
Awesome 版本包含许多出色的插件、配置和配色方案,可显著提升 Vim 的体验。要安装它,只需在终端中执行以下操作:
git clone --depth=1 https://github.com/amix/vimrc.git ~/.vim_runtime
sh ~/.vim_runtime/install_awesome_vimrc.sh
要为多个用户安装,需要将代码库克隆到所有目标用户均可访问的位置。
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
当然,“/opt/vim_runtime”可以是任何目录,只要指定的所有用户都拥有读取权限即可。
我推荐使用 IBM Plex Mono 字体(这是一款非常棒的开源字体,可以让你的代码看起来更美观)。Awesome vimrc 已经设置好了,你可以尝试使用它。
Awesome 会尝试使用的其他一些字体:
Basic 版本只有一个文件,没有插件。只需复制 basic.vim 并将其粘贴到你的 vimrc 中即可。
基本版本适用于安装在远程服务器上,因为您不需要安装太多插件,也不需要进行太多编辑。
git clone --depth=1 https://github.com/amix/vimrc.git ~/.vim_runtime
sh ~/.vim_runtime/install_basic_vimrc.sh
使用 gitforwindows 检出仓库并运行上述安装说明。无需特殊说明 ;-)
如果您的 vim 别名为 vi
而不是 vim
,请确保为其添加别名:alias vi=vim
。否则,请使用 apt-get install vim
。
只需执行 git rebase
即可!
cd ~/.vim_runtime
git reset --hard
git clean -d --force
git pull --rebase
python update_plugins.py # 如果 Python 不可用,请使用 Python3
编辑 Python 文件时的颜色:
我建议阅读这些插件的文档,以便更好地理解它们。每个插件都能带来更佳的 Vim 体验!
the_silver_searcher
(ag) 或 ack 的 Vim 插件——一个超快的 grep 命令<leader+o>
打开<Ctrl+F>
gf
键时打开光标下的文件gcc
注释掉一行(需要计数),gc
注释掉动作的目标。 gcu
取消注释一组相邻的注释行:Gist
命令轻松在 Vim 中创建 Gist输入 :colorscheme <Tab>
即可即时尝试配色方案,
或者将命令添加到 ~/.vim_runtime/my_configs.vim
(参见下文#如何包含您自己的内容),
例如 colorscheme pyte
。
安装完成后,
创建一个空的 ~/.vim_runtime/my_configs.vim
文件,以便进一步自定义。
此文件的语法与 vimrc
语法匹配,
并根据需要添加 vimrc
行,例如 set number
。
例如,我的 my_configs.vim
如下所示:
~/.vim_runtime > cat my_configs.vim
map <leader>ct :cd ~/Desktop/Todoist/todoist<cr>
map <leader>cw :cd ~/Desktop/Wedoist/wedoist<cr>
你也可以安装插件,例如,通过 pathogen 安装 vim-rails:
cd ~/.vim_runtime
git clone git://github.com/tpope/vim-rails.git my_plugins/vim-rails
你也可以不使用插件管理器来安装插件(需要 vim 8 及以上版本):
mkdir -p ~/.vim_runtime/pack/plugins/start
git clone --depth=1 git://github.com/maxmellon/vim-jsx-pretty ~/.vim_runtime/pack/plugins/start/vim-jsx-pretty
leader 是 ,
,因此每当您看到 <leader>
时,它都表示 ,
。
快速保存缓冲区 (<leader>w
):
nmap <leader>w :w!<cr>
将 <Space>
映射到 /
(搜索),将 <Ctrl>+<Space>
映射到 ?
(向后搜索):
map <space> /
map <C-space> ?
按下 <leader><cr>
时禁用高亮:
map <silent> <leader><cr> :noh<cr>
在窗口之间切换的智能方式(<ctrl>j
等):
map <C-j> <C-W>j
map <C-k> <C-W>k
map <C-h> <C-W>h
map <C-l> <C-W>l
关闭当前缓冲区(<leader>bd
和 <leader>ba
)):
" 关闭当前缓冲区
map <leader>bd :Bclose<cr>
" 关闭所有缓冲区
map <leader>ba :1,1000 bd!<cr>
用于管理标签页的实用映射:
map <leader>tn :tabnew<cr>
map <leader>to :tabonly<cr>
map <leader>tc :tabclose<cr>
map <leader>tm :tabmove
" 使用当前缓冲区的路径打开新标签页
" 在编辑同一目录中的文件时非常有用
map <leader>te :tabedit <C-r>=escape(expand("%:p:h"), " ")<cr>/
切换 CWD 到打开缓冲区的目录:
map <leader>cd :cd %:p:h<cr>:pwd<cr>
打开 ack.vim
进行快速搜索:
map <leader>g :Ack
快速打开一个缓冲区用于粘贴:
map <leader>q :e ~/buffer<cr>
打开或关闭粘贴模式:
map <leader>pp :setlocal paste!<cr>
在可视模式下按 *
或 #
键可搜索当前选择:
vnoremap <silent> * :call VisualSelection('f')<CR>
vnoremap <silent> # :call VisualSelection('b')<CR>
按下 gv 键后,在选定文本后执行 Ack.vim
操作:
vnoremap <silent> gv :call VisualSelection('gv', '')<CR>
按下 <leader>r
键可搜索并替换选定的内容文本:
vnoremap <silent> <leader>r :call VisualSelection('replace')<CR>
用括号/方括号等括住可视选择:
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>
快速插入括号/方括号等:
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
插入当前日期和时间(用于时间戳):
```vim
iab xdate
### 命令行映射
$q 在命令行浏览时非常有用。它会删除最后一个斜杠之前的所有内容:
```vim
cno $q <C-\>eDeleteTillSlash()<cr>
类似 Bash 的命令行按键:
cnoremap <C-A> <Home>
cnoremap <C-E> <End>
cnoremap <C-K> <C-U>
cnoremap <C-P> <Up>
cnoremap <C-N> <Down>
使用 sudo 写入文件(仅适用于 Unix)。当您打开文件但无权保存更改时,这非常有用。 Vim 技巧:
:W
打开 bufexplorer 查看和管理当前缓冲区 (<leader>o
):
map <leader>o :BufExplorer<cr>
打开 ctrlp.vim 插件快速查找文件或缓冲区 (<leader>j
或 <ctrl>f
):
" 在连续工作区 (CWD) 中快速查找并打开文件
let g:ctrlp_map = '<C-f>'
" 快速查找并打开最近打开的文件
map <leader>f :MRU<CR>
" 快速查找并打开缓冲区
map <leader>b :CtrlPBuffer<cr>
NERD Tree 映射:
map <leader>nn :NERDTreeToggle<cr>
map <leader>nb :NERDTreeFromBookmark
map <leader>nf :NERDTreeFind<cr>
goyo.vim 和 vim-zenroom2 让你一次只专注于一件事。它能消除所有干扰,使内容居中。在编辑 Markdown、reStructuredText 和文本文件时,它具有特殊的外观。它只有一个映射。(<leader>z
)
map <leader>z :Goyo<cr>
vim-multiple-cursors 映射用于同时管理多个光标:
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 映射用于管理 kill-ring(剪贴板):
nmap <C-p> <Plug>yankstack_substitute_older_paste
nmap <C-n> <Plug>yankstack_substitute_newer_paste
ctrl-p 映射用于轻松查找和打开文件、缓冲区等:
let g:ctrlp_map = '<C-f>'
map <leader>j :CtrlP<cr>
map <C-b> :CtrlPBuffer<cr>
vim-snipmate 映射用于自动补全代码片段:
ino <C-j> <C-r>=snipMate#TriggerSnippet()<cr>
snor <C-j> <esc>i<right><C-r>=snipMate#TriggerSnippet()<cr>
vim-surround 映射,可轻松使用 _()
gettext 注释包围字符串:
vmap Si S(i_<esc>f)
au FileType mako vmap Si S"i${ _(<esc>2f"a) } }
ale 轻松跳转到下一个 Ale 语法/lint 错误:
nmap <silent> <leader>a <Plug>(ale_next_wrap)
vim-indent-guides 中,默认的插件映射是 (<leader>ig
)
你也可以在 Vim 中使用以下命令:
:IndentGuidesEnable
:IndentGuidesDisable
:IndentGuidesToggle
vim-fugitive 将 Git 仓库中某一行的链接复制到剪贴板:
nnoremap <leader>v :.GBrowse!<CR>
xnoremap <leader>v :'<'>GBrowse!<CR>
按 <leader>ss
可切换拼写检查:
map <leader>ss :setlocal spell!<cr>
使用 <leader>
代替特殊字符的快捷键:
map <leader>sn ]s
map <leader>sp [s
map <leader>sa zg
map <leader>s? z=
要直接从 vim 运行代码,请按 F5
。当前打开的代码将立即执行,无需您输入任何内容。
可用于执行用 C、C++、Java、Python、Go、Octave、Bash 脚本和 HTML 编写的代码。要编辑代码的执行方式,请在文件 ~/.vim_runtime/vimrcs/extended.vim
中进行更改。
如果您不确定 cope 是什么,请查询 :help cope
。它非常有用!
当您使用 Ack.vim
搜索时,请在 cope 中显示结果:
<leader>cc
要转到下一个搜索结果执行:
<leader>n
要返回上一个搜索结果,执行:
<leader>p
Cope 映射:
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>
只需执行以下操作:
~/.vim_runtime
~/.vimrc
中所有引用 .vim_runtime
的行维护 Vim 配置并非我的日常工作。我每天都是 Doist 的创始人/首席执行官。您可以加入我们,在享受平衡生活的同时(在世界任何地方)帮助我们构建未来的工作场所。 🌍🌎🌏)。
PS:使用 Vim 并不是要求😄