VIM编辑器使用及插件配置

1.VIM的三种模式:

  普通模式、插入模式、命令行模式
2.三种模式的转换:
  2.1进入普通模式
    ①打开VIM默认为普通模式
    ②处于插入模式/命令行模式时,按ESC进入普通模式
  2.2进入插入模式:
    A:在行末插入
    a:在光标后插入
    I:在行首插入
    i:在当前位置插入
    O:在上一行插入
    o:在下一行插入
3.VIM中光标的移动
  3.1在普通模式下移动光标
    ↑/j
     ←/h    →/l
    ↓/j

  w:移动到下一个单词
  b:移动到上一个单词
  3.2在插入模式下移动光标
    ↑
  ←    →
    ↓
4.退出
  进入命令行模式(普通模式下输入":")
  :q! 强制退出,不保存
  :q 退出
  :wq! 强制保存并退出
  :w <文件路径> 另存为
  :saveas 文件路径 另存为
  :x 保存并退出
  :wq 保存并退出
5.普通模式下删除(剪切)文本
  x 删除游标所在的字符
  X 删除游标所在前一个字符
  Delete 同x
  dd 删除整行
  dw 删除一个单词(不适用中文)
  d$或D 删除至行尾
  d^ 删除至行首
  dG 删除到文档结尾处
  d1G 删至文档首部
  2dd 表示一次删除2行
6.光标跳转
  nG游标移动到第 n 行
  gg 游标移动到到第一行
  G 到最后一行
  Ctrl+o 快速回到上一次(跳转前)光标所在位置
  w 到下一个单词的开头
  e 到当前单词的结尾
  b 到前一个单词的开头
  ge 到前一个单词的结尾
  0或^ 到行头
  $ 到行尾
  f<字母> 向后搜索<字母>并跳转到第一个匹配的位置(非常实用)
  F<字母> 向前搜索<字母>并跳转到第一个匹配的位置

7.复制及粘贴(普通模式下操作)
  yy 复制游标所在的整行(3yy表示复制3行)
  y^ 复制至行首,或y0。不含光标所在处字符。
  y$ 复制至行尾。含光标所在处字符。
  yw 复制一个单词。
  y2w 复制两个单词。
  yG 复制至文本末。
  y1G 复制至文本开头。
  p(小写)代表粘贴至光标后(下)
  P(大写)代表粘贴至光标前(上)
8.替换与撤销
  r+<待替换字母> 将游标所在字母替换为指定字母
  R 连续替换,直到按下Esc
  cc 替换整行,即删除游标所在行,并进入插入模式
  cw 替换一个单词,即删除一个单词,并进入插入模式
  C(大写) 替换游标以后至行末
  u{n} 撤销一次或n次操作
  U(大写) 撤销当前行的所有修改
  Ctrl+r redo,即撤销undo的操作
9.快速缩进
  普通模式下输入>> 整行将向右缩进(使用,用于格式化代码超爽)
  普通模式下输入<< 整行向左回退
  普通模式下输入:进入命令行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数
  例:设置缩进为4个字符
  :set sw=4 或 set shiftwidth=4
10.调整文本位置:
  命令行模式下:
  :ce 居中
  :ri 靠右
  :le 靠左


11.查找
  命令行模式下: /word 或 ?word

12.多文件编辑
  vim a.txt b.txt
  切换需要编辑的文件(命令行模式下操作):
  :n 编辑下一个文件 或 :n! 强制切换
  :N 编辑上一个文件 或 :N! 强制切换

  :ls 查看打开的的所有文件
  :f 查看正在编辑的文件名
  :e new.txt 打开新的文件
  :b b.txt 或 :b 编号 进入文件b.txt编辑

13.可视模式(相当于鼠标的选择)
  v 字符选择
  V 行选择
  Ctrl+v 块选择(相当于alt+鼠标)

14.文档加密
  vim -x file

"###################插件配置###################
set nocompatible              " 去除VI一致性,必须
filetype off                  " 必须

" 设置包括vundle和初始化相关的runtime path
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" 另一种选择, 指定一个vundle安装插件的路径
"call vundle#begin('~/some/path/here')

" 让vundle管理插件版本,必须
Plugin 'VundleVim/Vundle.vim'


" ------------ 状态栏插件------------
Plugin 'bling/vim-airline'


" ------------ 目录插件--------------
Plugin 'scrooloose/nerdtree'
" 在目录栏和编辑栏切换: Ctrl+ww
" 启动VIM时自动打开NERDTree
"autocmd vimenter * NERDTree
"vim没有指定文件时打开NERDTree,指定文件时不打开
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
" 设置快捷键
map <F2> :NERDTreeToggle<CR>
" 关闭文件时如果只剩下NERDTree,吧NERDTree也关闭
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
" 目录树窗口的宽度
let NERDTreeWinSize=25


" ------------文件搜索插件------------
Plugin 'kien/ctrlp.vim'
" 使用方法:
" 打开搜索:Ctrl+p 退出搜索:Ctrl+ C 
" 选择文件: 上下键 或 Ctrl+j/k
" 打开文件:Enter (在当前窗口打开) 或 Ctrl+t 在新窗口打开
" 创建一个新文件:输入文件名 按Ctrl+y
" 搜索时排除文件
set wildignore+=*/tmp/*,*.so,*.swp,*.zip     " MacOSX/Linux
"set wildignore+=*\tmp\*,*.swp,*.zip,*.exe  " Windows

let g:ctrlp_custom_ignore = 'v[/].(git|hg|svn)$'
let g:ctrlp_custom_ignore = {
   'dir':  'v[/].(git|hg|svn)$',
   'file': 'v.(exe|so|dll)$',
   'link': 'some_bad_symbolic_links',
   }

" --------------写前端用的插件---------
Plugin 'mattn/emmet-vim'
"使用:Ctrl+y 再按,
"生成html基本结构:输入 html:5                                                                                         
".outer    类名为outer的div标签                                                                                        
" #outer    id为outer的div标签                                                                                          
" h1{hello} 内容为hello的h1标签                                                                                         
" a         生成a标签                                                                                                   
" ul>li*3     生成下级标签                                                                                              
" 注释      光标移到_<div> div上 ctrl+y再按. 注释div标签  
" 写html css时开启
let g:user_emmet_install_global = 0
autocmd FileType html,css EmmetInstall
" 更改热键
let g:user_emmet_leader_key='<C-Z>'



"-------------Python折叠插件------------
Plugin 'tmhedberg/simpylfold'
" 使用方法: 视图模式下,在需要折叠的代码块的第一行按za
"显示 代码块的文档字符串,比如对类的注释
let g:SimpylFold_docstring_preview = 1
" vim 自带折叠, 根据缩进进行折叠
set foldmethod=indent


"------ Python 自动缩进插件-----------
Plugin 'indentpython.vim'



"------------语法检查插件------------
Plugin 'scrooloose/syntastic'
" 在保存文件的时候会检查语法并提示
" 官方推荐的设置
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*

let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0

let g:syntastic_python_python_exe = 'python3'
" 需要配置语法检查器才能生效
"
"
"---------------自动补全插件------------
Plugin 'valloric/youcompleteme' 
" 安装:sudo apt-get install build-essential cmake
" cd ~/.vim/bundle/YouCompleteMe
" ./install.py
let g:ycm_python_binary_path = '/usr/bin/python3'
" 不在上面显示函数的用法
let g:ycm_autoclose_preview_window_after_completion=0
let g:ycm_add_preview_to_completeopt=0
set completeopt-=preview



"-------------注释插件------------------
Plugin 'scrooloose/nerdcommenter'
let mapleader=","  "更改映射键 
"单行注释: 视图模式下 , + c <space>
"多行注释: 视图模式下 , + cs(每行前面加*) 或 视图模式下选中  + cm



"-------------Python补全插件-----------
Plugin 'honza/vim-snippets'
Plugin 'sirver/ultisnips'
" 设置补全快捷键
let g:UltiSnipsExpandTrigger = "<C-J>"


"-----------------标点符号插件---------
Plugin 'tpope/vim-surround'
" 用法 -- 正常模式下
" 加标点:光标放在需要加标点符号的地方, 然后按下yss + 标点符号
" 改遍标点:光标放在需要改标点符号的地方,按下cs + 源标点 + 新标点
" 删除标点:光标放在需要删除标点符号的地方, 按下ds + 需要删除的标点
"

"------------------主题插件-------------
Plugin 'tomasr/molokai'
"let g:molokai_original = 1
let g:rehash256 = 1
colorscheme molokai

"-------------------tag插件-------------
Plugin 'taglist.vim'
let Tlist_Show_One_File=1    "只显示当前文件的tags
let Tlist_WinWidth=30       "设置taglist宽度
let Tlist_Exit_OnlyWindow=1  "tagList窗口是最后一个窗口,则退出Vim
let Tlist_Use_Right_Window=1 "在Vim窗口右侧显示taglist窗口


map <F3> :TlistToggle<CR>









"
" 以下范例用来支持不同格式的插件安装.
" 请将安装插件的命令放在vundle#begin和vundle#end之间.
" Github上的插件
" 格式为 Plugin '用户名/插件仓库名'
"Plugin 'tpope/vim-fugitive'
" 来自 http://vim-scripts.org/vim/scripts.html 的插件
" Plugin '插件名称' 实际上是 Plugin 'vim-scripts/插件仓库名' 只是此处的用户名可以省略
"Plugin 'L9'
" 由Git支持但不再github上的插件仓库 Plugin 'git clone 后面的地址'
"Plugin 'git://git.wincent.com/command-t.git'
" 本地的Git仓库(例如自己的插件) Plugin 'file:///+本地插件仓库绝对路径'
"Plugin 'file:///home/gmarik/path/to/plugin'
" 插件在仓库的子目录中.
" 正确指定路径用以设置runtimepath. 以下范例插件在sparkup/vim目录下
"Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" 安装L9,如果已经安装过这个插件,可利用以下格式避免命名冲突
"Plugin 'ascenator/L9', {'name': 'newL9'}

" 你的所有插件需要在下面这行之前
call vundle#end()            " 必须
filetype plugin indent on    " 必须 加载vim自带和插件相应的语法和文件类型相关脚本
" 忽视插件改变缩进,可以使用以下替代:
"filetype plugin on
"
" 简要帮助文档
" :PluginList       - 列出所有已配置的插件
" :PluginInstall    - 安装插件,追加 `!` 用以更新或使用 :PluginUpdate
" :PluginSearch foo - 搜索 foo ; 追加 `!` 清除本地缓存
" :PluginClean      - 清除未使用插件,需要确认; 追加 `!` 自动批准移除未使用插件
"
" 查阅 :h vundle 获取更多细节和wiki以及FAQ
" 将你自己对非插件片段放在这行之后



"####################VIM配置####################
" 解决tmux下主题颜色问题, 改了之后功能键F1-F5都变了
"set term=screen
" 设置注释的颜色
hi comment ctermfg=6
" 显示行号
set number
" 突出显示当前行,在当前行下加一个横线
set cursorline
" 打开标尺,在vim界面下显示光标所在的位置,默认是开启的
set ruler
" 显示状态栏
set laststatus=2
" 定义状态栏的格式: 可以安装插件实现
set statusline=[FILE:%F] [TYPE:%Y] [%{&encoding}] [FORMAT=%{&ff}] [LINE:\%l/\%L]
" 设置文件的编码格式
set encoding=utf-8
" 在每行第80个字符出显示竖线, 颜色时红色的
set  colorcolumn=80
" 设置tab缩进的长度
set tabstop=4
" 设置使用<< 或 >> 时左右移动的距离,设置为4个空格
set shiftwidth=4
" 设置自动缩进
set autoindent
原文地址:https://www.cnblogs.com/gaoyuanzhi/p/9204181.html