vimrc 文件

位置

vimrc 文件是 Vim 的配置文件,用于存储用户的个人设置和定制。它的位置可能因操作系统而异:

  • Linux/Unix:通常在 ~/.vimrc~/.vim/vimrc
  • MacOS:类似于 Linux,通常在 ~/.vimrc~/.vim/vimrc
  • Windows:在 C:\Users\<用户名>\_vimrcC:\Users\<用户名>\vimfiles\vimrc

在 Vim 中,可以通过以下命令查看 vimrc 文件的位置:

:echo $MYVIMRC

基本结构

一个典型的 vimrc 文件可能包含以下几部分:

  1. 全局设置:设置 Vim 的全局行为,例如编码、文件格式等。
  2. 界面设置:配置界面元素,例如行号、颜色主题、状态栏等。
  3. 编辑设置:调整编辑行为,例如自动缩进、搜索选项等。
  4. 插件设置:加载和配置 Vim 插件。
  5. 快捷键映射:自定义快捷键,提升编辑效率。

示例配置

" 全局设置
set nocompatible            " 关闭与 Vi 的兼容模式
filetype off                " 关闭文件类型检测
 
" 界面设置
set number                  " 显示行号
syntax on                   " 启用语法高亮
set background=dark         " 设置背景色为暗色系
colorscheme desert          " 使用 desert 颜色主题
 
" 编辑设置
set tabstop=4               " 设置 Tab 宽度为 4 个空格
set shiftwidth=4            " 设置自动缩进的宽度为 4 个空格
set expandtab               " 将 Tab 转换为空格
set autoindent              " 自动缩进新行
set hlsearch                " 高亮搜索结果
set incsearch               " 增量搜索
 
" 插件设置
call plug#begin('~/.vim/plugged')
Plug 'scrooloose/nerdtree'  " 文件树插件
Plug 'tpope/vim-fugitive'   " Git 集成插件
call plug#end()
 
" 快捷键映射
nnoremap <C-n> :NERDTreeToggle<CR>  " Ctrl+n 切换 NERDTree

常用配置选项

配置选项说明示例
set nocompatible关闭与 Vi 的兼容模式set nocompatible
set number显示行号set number
set relativenumber显示相对行号set relativenumber
set tabstop设置 Tab 宽度(以空格数表示)set tabstop=4
set shiftwidth设置自动缩进的宽度(以空格数表示)set shiftwidth=4
set expandtab将 Tab 转换为空格set expandtab
set autoindent自动缩进新行set autoindent
set smartindent智能缩进set smartindent
set hlsearch高亮搜索结果set hlsearch
set incsearch增量搜索set incsearch
set ignorecase搜索时忽略大小写set ignorecase
set smartcase智能大小写匹配set smartcase
syntax on启用语法高亮syntax on
set background设置背景色(dark 或 light)set background=dark
colorscheme设置颜色主题colorscheme desert
set cursorline高亮当前行set cursorline
set wrap自动换行显示长行set wrap
set nowrap禁止自动换行显示长行set nowrap
set linebreak在单词边界处换行set linebreak
set showcmd显示部分命令(在底部命令行显示)set showcmd
set ruler显示光标位置(行号和列号)set ruler
set wildmenu命令行补全增强set wildmenu
set clipboard使用系统剪贴板set clipboard=unnamedplus
set backspace设置退格键的行为set backspace=indent,eol,start
set mouse启用鼠标操作(a 为全部模式启用)set mouse=a
set splitbelow新窗口在当前窗口下方打开set splitbelow
set splitright新窗口在当前窗口右侧打开set splitright
set foldmethod设置折叠方法(syntax、indent 等)set foldmethod=syntax
set foldlevel设置折叠级别set foldlevel=99
set termguicolors启用真彩色支持(需要终端支持)set termguicolors
set guifont设置 GUI 字体(在 GUI Vim 中使用)set guifont=Monaco:h12
set encoding设置文件编码set encoding=utf-8
filetype plugin indent on启用文件类型检测和插件filetype plugin indent on
set spell启用拼写检查set spell
set spelllang设置拼写检查语言set spelllang=en_us
set list显示不可见字符set list
set listchars设置不可见字符的显示方式set listchars=tab:>-,trail:~,eol:$
set undofile启用撤销文件set undofile
set undodir设置撤销文件的保存路径set undodir=~/.vim/undodir
set backup启用备份文件set backup
set backupdir设置备份文件的保存路径set backupdir=~/.vim/backup
set updatetime设置交换文件的更新频率(毫秒)set updatetime=300

快捷键映射

自定义快捷键

Vim 提供了强大的快捷键映射功能,用户可以根据需要自定义快捷键。常用的映射命令有:

  • map:通用映射
  • nmap:普通模式下的映射
  • imap:插入模式下的映射
  • vmap:可视模式下的映射
nnoremap <C-s> :w<CR>       " 在普通模式下,Ctrl+s 保存文件
inoremap <C-c> <Esc>        " 在插入模式下,Ctrl+c 切换到普通模式
vnoremap <C-c> "+y          " 在可视模式下,Ctrl+c 复制到系统剪贴板

常用快捷键示例

以下是一些常用的快捷键示例,这些快捷键可以提高日常编辑的效率:

快捷键配置模式说明示例
nnoremap <C-s> :w<CR>普通模式Ctrl+s 保存文件nnoremap <C-s> :w<CR>
inoremap <C-c> <Esc>插入模式Ctrl+c 退出插入模式inoremap <C-c> <Esc>
vnoremap <C-c> "+y可视模式Ctrl+c 复制到系统剪贴板vnoremap <C-c> "+y
nnoremap <C-x> :q<CR>普通模式Ctrl+x 退出 Vimnnoremap <C-x> :q<CR>
nnoremap <C-t> :tabnew<CR>普通模式Ctrl+t 打开新标签nnoremap <C-t> :tabnew<CR>
nnoremap <C-n> :NERDTreeToggle<CR>普通模式Ctrl+n 切换 NERDTree 文件树nnoremap <C-n> :NERDTreeToggle<CR>
nnoremap <Leader>f :Files<CR>普通模式Leader+f 调用 FZF 查找文件nnoremap <Leader>f :Files<CR>
nnoremap <Leader>g :Gstatus<CR>普通模式Leader+g 调用 Git 状态nnoremap <Leader>g :Gstatus<CR>
nnoremap <Leader>w :w!<CR>普通模式Leader+w 强制保存文件nnoremap <Leader>w :w!<CR>
nnoremap <Leader>q :q!<CR>普通模式Leader+q 强制退出 Vimnnoremap <Leader>q :q!<CR>
nnoremap <Leader>r :source $MYVIMRC<CR>普通模式Leader+r 重新加载 vimrc 文件nnoremap <Leader>r :source $MYVIMRC<CR>
vnoremap <Leader>y "+y可视模式Leader+y 复制选中文本到系统剪贴板vnoremap <Leader>y "+y
nnoremap <Leader>p "+p普通模式Leader+p 从系统剪贴板粘贴nnoremap <Leader>p "+p
nnoremap <Leader>t :terminal<CR>普通模式Leader+t 打开终端nnoremap <Leader>t :terminal<CR>
nnoremap <C-j> :cnext<CR>普通模式Ctrl+j 跳到下一个 QuickFix 项nnoremap <C-j> :cnext<CR>
nnoremap <C-k> :cprev<CR>普通模式Ctrl+k 跳到上一个 QuickFix 项nnoremap <C-k> :cprev<CR>
nnoremap <Leader>n :nohlsearch<CR>普通模式Leader+n 取消搜索高亮nnoremap <Leader>n :nohlsearch<CR>
nnoremap <Leader>e :e ~/.vimrc<CR>普通模式Leader+e 打开 vimrc 文件nnoremap <Leader>e :e ~/.vimrc<CR>
nnoremap <Leader>d "_d普通模式Leader+d 删除但不复制到寄存器nnoremap <Leader>d "_d

Vim 插件管理

插件管理工具

Vundle

Vundle 是一个流行的 Vim 插件管理工具,安装步骤如下:

  1. 克隆 Vundle 仓库到 Vim 的插件目录:

    $ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
  2. vimrc 文件中添加以下内容:

    set nocompatible              " 关闭 Vi 兼容模式
    filetype off                  " 关闭文件类型检测
     
    " 设置 Vundle
    set rtp+=~/.vim/bundle/Vundle.vim
    call vundle#begin()
    " 在此处添加插件
    Plugin 'VundleVim/Vundle.vim'
    call vundle#end()            " 所有插件必须在这一行之前
     
    filetype plugin indent on    " 启用文件类型检测

基本使用

  • 安装插件: 在 vimrc 中添加插件后,启动 Vim 并运行 :PluginInstall
  • 更新插件: 启动 Vim 并运行 :PluginUpdate
  • 删除插件: 从 vimrc 中移除插件行,启动 Vim 并运行 :PluginClean

Vim-plug

vim-plug 是一个现代的 Vim 插件管理工具,安装步骤如下:

  1. 下载 vim-plug 并放入 autoload 目录:

    $ curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  2. vimrc 文件中添加以下内容:

    call plug#begin('~/.vim/plugged')
    " 在此处添加插件
    Plug 'junegunn/vim-plug'
    call plug#end()

基本使用

  • 安装插件: 在 vimrc 中添加插件后,启动 Vim 并运行 :PlugInstall
  • 更新插件: 启动 Vim 并运行 :PlugUpdate
  • 删除插件: 从 vimrc 中移除插件行,启动 Vim 并运行 :PlugClean

常用插件

插件功能描述安装配置示例(基于 vim-plug)常用命令或快捷键
NERDTree文件树管理Plug 'preservim/nerdtree':NERDTreeToggle
fzf.vim模糊查找Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }:Files :Buffers
ctrlp.vim文件和缓冲区切换Plug 'ctrlpvim/ctrlp.vim':CtrlP
YouCompleteMe代码补全Plug 'ycm-core/YouCompleteMe' (需要编译安装)自动代码补全
Syntastic语法检查Plug 'vim-syntastic/syntastic':SyntasticCheck
vim-airline状态栏美化Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes'自动启用状态栏美化
vim-fugitiveGit 集成Plug 'tpope/vim-fugitive':Gstatus :Gcommit :Gpush :Gpull
vim-surround快速修改括号、引号等符号Plug 'tpope/vim-surround'ysiw] ds' cs"'
vim-commentary快速注释代码Plug 'tpope/vim-commentary'gc + 动作
vim-gitgutter显示 Git 更改信息Plug 'airblade/vim-gitgutter'自动显示更改标记

配置示例

call plug#begin('~/.vim/plugged')
 
" 文件树管理
Plug 'preservim/nerdtree'
 
" 模糊查找
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
 
" 文件和缓冲区切换
Plug 'ctrlpvim/ctrlp.vim'
 
" 状态栏美化
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
 
" Git 集成
Plug 'tpope/vim-fugitive'
 
" 快速修改括号、引号等符号
Plug 'tpope/vim-surround'
 
" 快速注释代码
Plug 'tpope/vim-commentary'
 
" 显示 Git 更改信息
Plug 'airblade/vim-gitgutter'
 
call plug#end()
 
" 基本设置
set nocompatible
set number
set relativenumber
set tabstop=4
set shiftwidth=4
set expandtab
set autoindent
set hlsearch
set incsearch
set ignorecase
set smartcase
syntax on
set background=dark
colorscheme desert
set cursorline
set wrap
set showcmd
set ruler
set wildmenu
set clipboard=unnamedplus
set backspace=indent,eol,start
set mouse=a
set splitbelow
set splitright
set foldmethod=syntax
set foldlevel=99
set termguicolors
 
" 快捷键映射
nnoremap <C-n> :NERDTreeToggle<CR>
nnoremap <C-p> :CtrlP<CR>
nnoremap <Leader>f :Files<CR>
nnoremap <Leader>g :Gstatus<CR>
nnoremap <Leader>w :w!<CR>
nnoremap <Leader>q :q!<CR>
nnoremap <Leader>r :source $MYVIMRC<CR>
vnoremap <Leader>y "+y
nnoremap <Leader>p "+p
nnoremap <Leader>t :terminal<CR>
nnoremap <C-j> :cnext<CR>
nnoremap <C-k> :cprev<CR>
nnoremap <Leader>n :nohlsearch<CR>
nnoremap <Leader>e :e ~/.vimrc<CR>
nnoremap <Leader>d "_d
 
" Airline 主题
let g:airline_theme='luna'
 
" GitGutter 配置
let g:gitgutter_enabled = 1