vimrc

vimrc

功能丰富的Vim配置框架

Ultimate vimrc是一个功能全面的Vim配置框架,提供基础版和进阶版两种选择。它集成了众多实用插件、配色方案和优化设置,可大幅提升Vim的使用效率。该项目支持多用户安装,兼容Linux、Windows等主流系统。用户可通过简单命令完成安装和更新,轻松定制个性化的Vim环境。

vimvimrc插件配置键位映射Github开源项目

终极 vimrc

在过去的10年里,我一直在使用和调整 Vim。这个配置是终极 vimrc(或者至少是我的版本)。

有两个版本:

  • 基础版:如果你想要简单的配置,只需将 basic.vim 复制到你的 ~/.vimrc 中,就可以得到一个不错的基本设置
  • 高级版:包含大量有用的插件、配色方案和配置

当然,我推荐使用高级版。

如何安装高级版?

仅为当前用户安装

高级版包含许多优秀的插件、配置和配色方案,这些都让 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
# 为所有拥有家目录的用户安装,注意不包括 root 用户
sh /opt/vim_runtime/install_awesome_parameterized.sh /opt/vim_runtime --all

当然,/opt/vim_runtime 可以是任何目录,只要所有指定的用户都有读取权限。

字体

我推荐使用 IBM Plex Mono 字体(这是一个开源的优秀字体,可以让你的代码看起来更美观)。高级版 vimrc 已经设置好尝试使用它。

高级版还会尝试使用的其他字体:

如何安装基础版?

基础版只有一个文件,没有插件。只需复制 basic.vim 并粘贴到你的 vimrc 中。

基础版适合安装在远程服务器上,那里你不需要太多插件,也不会进行太多编辑。

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

如何在 Windows 上安装?

使用 gitforwindows 来检出仓库并运行上述安装指令。不需要特殊说明 ;-)

如何在 Linux 上安装

如果你的 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 文件时的颜色:

截图 1

终端窗口中的 NERD Tree 插件: 截图 3

使用 goyo.vimvim-zenroom2 的无干扰模式: 截图 4

包含的插件

我建议阅读这些插件的文档以更好地理解它们。每个插件都能提供更好的 Vim 体验!

  • ack.vim:Vim 插件,用于 the_silver_searcher (ag) 或 ack -- 一个超快的 grep
  • bufexplorer.zip:快速轻松地在缓冲区之间切换。可以用 <leader+o> 打开此插件
  • ctrlp.vim:模糊文件、缓冲区、mru 和标签查找器。映射到 <Ctrl+F>
  • goyo.vimvim-zenroom2
  • lightline.vim:Vim 的轻量级可配置状态栏/标签栏
  • NERD Tree:Vim 的树形文件浏览器插件
  • open_file_under_cursor.vim:按 gf 时打开光标下的文件
  • pathogen.vim:管理你的 vim runtimepath
  • snipmate.vim:snipmate.vim 旨在成为一个简洁的 vim 脚本,在 Vim 中实现 TextMate 的一些代码片段功能
  • ale:Vim 的语法和 lint 检查(ALE 需要 NeoVim >= 0.2.0 或 Vim 8 with +timers +job +channel)
  • vim-commentary:注释代码。使用 gcc 注释一行(可带数量),gc 注释动作目标。gcu 取消注释相邻的一组注释行
  • vim-expand-region:允许你使用相同的按键组合来视觉选择越来越大的文本区域
  • vim-fugitive:一个非常棒的 Git 包装器,好到应该是违法的
  • vim-indent-object:定义了一个新的文本对象,表示相同缩进级别的代码行。对 Python/Vim 脚本有用
  • vim-multiple-cursors:Vim 的 Sublime Text 风格多重选择,CTRL+N 被重新映射为 CTRL+S(由于 YankRing)
  • vim-yankstack:维护之前的复制、更改和删除的历史记录
  • vim-zenroom2 移除所有杂乱,只关注核心内容。类似于 iA Writer 或 Write Room
  • gist-vim 使用 :Gist 命令从 Vim 轻松创建 gists
  • vim-indent-guides 是一个用于在 Vim 中可视化显示缩进级别的插件
  • editorconfig-vim EditorConfig 有助于在多个开发者使用不同编辑器和 IDE 在同一项目上工作时保持一致的编码风格
  • copilot.vim GitHub Copilot 的插件(AI 自动完成 FTW 😅)

包含的配色方案

输入 :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

插入当前日期和时间(对时间戳很有用):

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

命令行映射

$q 在命令行浏览时非常有用。它删除最后一个斜杠之前的所有内容:

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](https://github.com/preservim/nerdtree) 映射:
```vim
map <leader>nn :NERDTreeToggle<cr>
map <leader>nb :NERDTreeFromBookmark 
map <leader>nf :NERDTreeFind<cr>

goyo.vimvim-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 映射用于管理剪贴板:

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) }<esc>

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

如果你不确定 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 的创始人/CEO。你可以来帮助我们打造未来的工作场所,同时过上平衡的生活(在世界任何地方 🌍🌎🌏)。

PS: 使用 Vim 不是必需的 😄

编辑推荐精选

讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

TRELLIS

TRELLIS

用于可扩展和多功能 3D 生成的结构化 3D 潜在表示

TRELLIS 是一个专注于 3D 生成的项目,它利用结构化 3D 潜在表示技术,实现了可扩展且多功能的 3D 生成。项目提供了多种 3D 生成的方法和工具,包括文本到 3D、图像到 3D 等,并且支持多种输出格式,如 3D 高斯、辐射场和网格等。通过 TRELLIS,用户可以根据文本描述或图像输入快速生成高质量的 3D 资产,适用于游戏开发、动画制作、虚拟现实等多个领域。

下拉加载更多