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