1. 配置 - vim
2018-06-23 本文已影响5人
风云雄霸天下123456
参考:
说明:
-
效果预览
效果
安装:
-
参考:
从零开始配置你的个性化Vim: https://saul-mirone.github.io/2017/06/20/vim-config/
https://github.com/Saul-Mirone/miroConf/blob/master/.vimrc -
安装:
- 安装软件
- ctags:
- mac:
brew install ctags - linux:
wget http://prdownloads.sourceforge.net/ctags/ctags-5.6.tar.gz
tar -zxvf ctags-5.6.tar.gz
cd ctags-5.6 && ./configure && make install
- mac:
- fzf:
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf && ~/.fzf/install - ag:
yum install -y epel-release.noarch the_silver_searcher - vundle:
git clone --depth 1 https://gitee.com/open-resource/Vundle.vim.git ~/.vim/bundle/Vundle.vim
- ctags:
- 配置vimrc
参照下方vimrc - 进入vim安装
:PluginInstall,在任务栏会出现"Processing ...",直到"Done!" - 重启vim
- 至此Ok,愉快使用吧
- 安装软件
-
卸载:
rm -rf ~/.vim ~/.vimrc -
安装的插件:
- Vundle: 管理vim插件
- dracula/vim: 主题插件
- vim-devicons: 结合nerdtree显示文件对应的图标
- vim-minimap: 代码minimap图
- nerdtree: 文件tree
- vim-nerdtree-syntax-highlight: 结合nerdtree使用
- Tagbar: 函数列表(类似大纲视图)
- fzf: 文件搜索
- ack: 使用ag搜索字符串
- vim-airline: 丰富状态栏
-
vundle管理:
:PluginList "列出列表中的插件
:PluginInstall "安装插件
:PluginInstall! "更新插件
:PluginUpdate "更新插件
:PluginSearch foo "查找名中含有foo的插件
:PluginSearch! foo "查找前清除本地缓存
:PluginClean "清理不在列表中的插件
:PluginClean! "清理时不需用户同意
配置
let mapleader="," " 设置<leader>键
" Vundle Section Start
set nocompatible " be iMproved, required
filetype off " required
set rtp+=~/.vim/bundle/Vundle.vim
set rtp+=~/.fzf
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
" theme
Plugin 'dracula/vim'
" icon
Plugin 'ryanoasis/vim-devicons'
" minimap
Plugin 'severin-lemaignan/vim-minimap'
" 树形文本插件
Plugin 'scrooloose/nerdtree'
Plugin 'tiagofumo/vim-nerdtree-syntax-highlight'
" Tagbar
Plugin 'vim-scripts/Tagbar'
" fzf
Plugin 'junegunn/fzf.vim'
" ag
Plugin 'mileszs/ack.vim'
" airline 状态条加强
Plugin 'bling/vim-airline'
call vundle#end() " required
filetype plugin indent on " required
" Vundle Section End
" 插件配置
" Dracula Theme
if !has('gui_running')
set t_Co=256
let g:dracula_italic=0
let g:dracula_colorterm=0
colorscheme dracula
let lightlineColor = 'dracula'
endif
" minimap
let g:minimap_toggle='<leader>mg'
" NERD tree
let NERDChristmasTree=0
let NERDTreeWinSize=20
let NERDTreeChDirMode=2
let NERDTreeIgnore=['\~$', '\.pyc$', '\.swp$']
let NERDTreeShowHidden=1
let NERDTreeShowBookmarks=1
let NERDTreeWinPos="left"
" Close vim if the only window left open is a NERDTree
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif
" Open a NERDTree
nmap <F4> :NERDTreeToggle<CR>
nmap <F5> :NERDTreeFind<CR>
let g:NERDTreeHighlightCursorline = 0
" Tagbar
set tags=./.tags;,.tags
let g:gutentags_project_root = ['.root', '.svn', '.git', '.hg', '.project']
let g:gutentags_ctags_tagfile = '.tags'
let s:vim_tags = expand('~/.cache/tags')
let g:gutentags_cache_dir = s:vim_tags
let g:gutentags_ctags_extra_args = ['--fields=+niazS', '--extra=+q']
let g:gutentags_ctags_extra_args += ['--c++-kinds=+px']
let g:gutentags_ctags_extra_args += ['--c-kinds=+px']
if !isdirectory(s:vim_tags)
silent! call mkdir(s:vim_tags, 'p')
endif
let g:tagbar_width=20
let g:tagbar_autofocus=1
let g:tagbar_right = 1
nmap <F6> :TagbarToggle<CR>
let g:tagbar_type_typescript = {
\ 'ctagsbin' : 'tstags',
\ 'ctagsargs' : '-f-',
\ 'kinds': [
\ 'e:enums:0:1',
\ 'f:function:0:1',
\ 't:typealias:0:1',
\ 'M:Module:0:1',
\ 'I:import:0:1',
\ 'i:interface:0:1',
\ 'C:class:0:1',
\ 'm:method:0:1',
\ 'p:property:0:1',
\ 'v:variable:0:1',
\ 'c:const:0:1',
\ ],
\ 'sort' : 0
\ }
" fzf
nnoremap <Leader>p :Files<CR>
" ag
let g:ackprg = 'ag --nogroup --nocolor --column'
map <c-u> :Ack<space>
map <leader>u :Ack<space>
" airline
let g:airline_powerline_fonts = 1
" 快捷键
nnoremap <Leader>cd :pwd<CR>
nnoremap <Leader>w :w<CR>
" 其他配置
set encoding=UTF-8
set mouse=a " 支持鼠标
set nu " 显示行号
set autoindent " 自动缩进
set confirm " 在处理未保存或只读文件的时候,弹出确认
set tabstop=4 " Tab键的宽度
" set noexpandtab " 不要用空格代替制表符
set expandtab " 设置用空格替换tab(支持python这种层级的语法)
set ignorecase " 搜索忽略大小写
set ws " 在搜索时如达到文件尾则绕回文件头继续搜索
set showmatch " 显示括号配对
set ruler " 打开状态栏标尺
syntax on " 自动语法高亮
set showcmd " 在状态栏显示目前所执行的指令,未完成的指令片段亦会显示出来
set pastetoggle=<F3> " 修改粘贴快捷键,拷贝代码格式不错乱
" 缩进
set softtabstop=4 " 统一缩进为4
set shiftwidth=4
" 临时文件
set nobackup " 禁止生成临时文件
set noswapfile
" other
set nocompatible " 去掉有关Vi的一致性模式,避免之前版本的Bug
set backspace=indent,eol,start " 设置backspace的工作方式
set nolist " 不显示特殊符号(换行符、结束符等 语法:set [ list | nolist | list! ])
快捷键
-
说明:
- vim的<leader>键为逗号(,)
-
常用快捷键:
F3 paste模式 F4 显示当前目录文件列表 F5 定位当前文件 F6 显示当前函数列表(大纲视图) ,p 搜索文件 ,u 或 ctrl+u 搜索字符串 ,w 保存 ,cd 显示当前目录 ctrl+w+w 或 鼠标 切换不同窗口 -
其他快捷键
:vs 垂直分屏 :sp 水平分屏 :ctrl+[hjkl] 在分屏的情况下,上下左右屏幕移动 ,f MRU最近打开的文件 ,j 快速打开项目文件夹下的文件 ,nn 当前文件夹下的文件列表 ,z 当前vim小屏幕最大化,聚焦当前的输入 空格 查找命令(类似于/) ,g Ack(查找) -
自带快捷键
- 滚屏:(ctrl == C) <C-f> 向下滚动一屏幕 <C-b> 向上滚动一屏幕 <C-u> 向上滚动半屏幕 <C-d> 向下滚动半屏幕 - 移动当前行: zz 移动当前行到屏幕正中 zt 移动当前行到屏幕顶端 zb 移动当前行到屏幕底端 <C-e> 屏幕向下移动一行 <C-y> 屏幕向上移动一行 - 单词移动 w 向后移动到单词的词首 b 向前移动到单词的词首 e 向后移动到单词的词尾 ge 向前移动到单词的词尾 - 查找移动 n 跳转到下一个查找项目 N 跳转到上一个查找项目 /+xxx 查找xxx :noh 关闭本次查找高亮
其他知识
-
基本通式
-
Vim在Normal模式下的操作有个基本通式:
最终操作=重复次数∗操作
-
其中操作又有两个公式:
操作=普通操作符+操作范围
操作=立即执行操作符
-
-
操作符
- 普通操作符
c 修改
d 剪切
y 复制
g~ 大小写反转
gu 转换为小写
gU 转换为大写
> 增加缩进 (>>当前行)
< 减小缩进
= 自动缩进
说明:有趣的是,当普通操作符被连续输入两次时,它会作用于当前行,例如dd会剪切当前行的内容。 - 立即执行操作符(只举几个例子):
x 删除当前字符
- 普通操作符
-
可视模式
分以下三种:- 常规可视模式
v 进入常规可视模式,通过“移动”部分的内容可以选择选定的内容。 - 行可视模式
V 进入行可视模式,此时只能以行为单位来进行选择。 - 列可视模式
<C-v 进入列可视模式,此时可以进行列移动。
- 常规可视模式