1
0
wiki/FormalSciences/ComputerScience/GettingStarted/3.CommandLineTools/Vim/2.Vim 配置管理.md
2024-10-14 16:48:38 +08:00

16 KiB
Raw Permalink Blame History

title description keywords tags author date
Vim 配置管理 介绍 Vim 配置文件 vimrc 的管理,包括不同操作系统下的 vimrc 文件位置、基本结构、示例配置及插件管理。
Vim
配置管理
vimrc
插件
Vundle
vim-plug
FormalSciences/ComputerScience
GettingStarted/CommandLineTools
Vim
仲平 2024-08-08

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 退出 Vim nnoremap <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 强制退出 Vim nnoremap <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-fugitive Git 集成 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