cvim常用快捷键

h、j、k、l:上、下、左、右

u、d:上半屏、下半屏

H、L:后退、前进

f、F:直接打开、后台打开

o、t:当前打开网址、标签打开网址

gg、G:页头、页尾

gi、gI:第一个输入框、最后一个输入框

q、Q:鼠标hover事件、取消覆盖事件

x、X:关闭、打开上一次关闭

r:刷新

gd、ge:下载页面、扩展页面

0、$:行首、行尾

<、>:左移标签、右移标签

g0、g$:第一个标签、最后一个标签

gx$、gx0:关闭当前标签右、左所有标签

gxt、gxT:关闭当前标签右、左一个标签

commend+1、2345678:条转数字标签、9最后一个标签

ctrl+i、e:文本框行首、行尾

ctrl+u、o:删除当前光标到行首、行尾

/:查找、n下一个、N上一个、v选择模式

mac VIM

https://github.com/mxyg/f-vim

sudo xcodebuild -license

brew install lua

https://github.com/mxyg/vim-plug

:PlugInstall



vimrc

git

“”==========================================
” Author: fidding
” Version: 1.2
” Email: 395455856@qq.com
” BlogPost: http://www.fidding.me
” ReadMe: README.md
” Last_modify: 2017-04-02
“”==========================================

” Turn off the vi compatibility mode
set nocompatible
” set runtime path
set runtimepath^=~/.vim/plugged
“==========================================
” Plugin Settings
“==========================================
call plug#begin(‘~/.vim/plugged’)
” File fuzzy query
Plug ‘kien/ctrlp.vim’
Plug ‘scrooloose/syntastic’
Plug ‘majutsushi/tagbar’
” Automatic completion of the html/xml label
Plug ‘docunext/closetag.vim’, { ‘for’: [‘html’, ‘xml’] }
” status bar
“Plug ‘powerline/powerline’
” molokai-theme
Plug ‘tomasr/molokai’
” dracula-theme
Plug ‘dracula/vim’
” Directory tree
Plug ‘scrooloose/nerdtree’
” Automatic completion
Plug ‘Shougo/neocomplete.vim’
” quickly comment
Plug ‘scrooloose/nerdcommenter’
” airline
Plug ‘vim-airline/vim-airline’
Plug ‘vim-airline/vim-airline-themes’
call plug#end()

“==========================================
” General Settings
“==========================================
” set backspace work style
set backspace=indent,eol,start
” set leader key
let mapleader = “\”
” Grammar highlighting
syntax on
” Detect file types
filetype on
” Change the indentation mode according to the file type
filetype indent on
” Allow plugins
filetype plugin on
filetype plugin indent on
” save file
set fileformats=dos,unix,mac
” Highlight the current column
set cursorcolumn
” Highlight the current line
set cursorline
” Disable the mouse
set mouse-=a
” Enable the mouse
“set mouse=a
” reomove toolbar
set guioptions-=T
” remove menubar
set guioptions-=m
” Cancel the backup
set nobackup
” display status bar
set laststatus=2
” set font style
if has(‘gui_win32′)
set guifont=Consolas:h12
else
set guifont=Source_Code_Pro:h12
endif
autocmd InsertEnter * se cul

“==========================================
” Display Settings
“==========================================
” The status bar shows the line number column number
set ruler
” The status bar displays the input command
set showcmd
” shows vim mode
set showmode
” Highlight match search
set hlsearch
set incsearch
” Ignore case when searching
set ignorecase
” One or more capital letters are capitalized sensitive
set smartcase
” Show brackets match
set showmatch
” code folding
set foldenable
” floding style
” manual
” indent
” expr
” syntax
” diff
” marker
set foldmethod=indent
set foldlevel=99
” Customize shortcuts zz
let g:FoldMethod = 0
map zz :call ToggleFold()
fun! ToggleFold()
if g:FoldMethod == 0
exe “normal! zM”
let g:FoldMethod = 1
else
exe “normal! zR”
let g:FoldMethod = 0
endif
endfun
” indent config
” Smart indent
set smartindent
” Turn on auto indent
set autoindent
set cindent
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
” Use spaces instead of tab indentation
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
” Show line number
set number

“==========================================
” FileEncode Settings
“==========================================
” Set the encoding to utf-8
set encoding=utf-8
” utomatically determine the coding sequence
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
set helplang=cn
“set langmenu=zh_CN.UTF-8
“set enc=2byte-gb18030
set termencoding=utf-8

“Use Unix as the standard file type
set ffs=unix,dos,mac
set formatoptions+=m
set formatoptions+=B
” Sync clipboard
” set clipboard+=unnamed
“==========================================
” HotKey Settings
“==========================================
” Close the arrow keys
map
map
map
map
” Smart way to move between windows
nnoremap wj j
nnoremap wk k
nnoremap wh h
nnoremap wl l
” close window
nnoremap wc :close
” save file
nnoremap fs :w
” instead of esc
inoremap jj
” closetag ({[
imap () ()
imap {} {}
imap [] []
imap “” “”
imap ” ”
imap <> <>
” Vim allows the use of the window copy and paste shortcut keys
map “+y
map “+p
” Disable F1 to bring up system help
” I can type :help on my own, thanks. Protect your fat fingers from the evils of
noremap ”

“==========================================
” commenter Settings
“==========================================
” Instructions for use
” cc Comment the current row or select the line
” cu Uncomment the current row or select the line
let g:NERDSpaceDelims=1
let g:NERDAltDelims_python = 1

“==========================================
” Closetag Settings Html tag completion
“==========================================
let g:closetag_html_style=1

“==========================================
” Powerline Settings
“==========================================
“set runtimepath^=~/.vim/plugged/powerline/powerline/bindings/vim
“let g:Powerline_symbols=’fancy’

“==========================================
” Airline Settings
“==========================================
let g:airline_powerline_fonts = 1
if !exists(‘g:airline_symbols’)
let g:airline_symbols = {}
endif

if has(‘gui_win32’)
let g:airline_left_sep = ”
let g:airline_left_alt_sep = ”
let g:airline_right_sep = ”
let g:airline_right_alt_sep = ”
let g:airline_symbols.branch = ”
let g:airline_symbols.readonly = ”
let g:airline_symbols.linenr = ”
else
let g:airline_left_sep = ‘’
let g:airline_left_alt_sep = ‘’
let g:airline_right_sep = ‘’
let g:airline_right_alt_sep = ‘’
let g:airline_symbols.branch = ‘’
let g:airline_symbols.readonly = ‘’
let g:airline_symbols.linenr = ‘’
endif
” ignore whitespace
let g:airline#extensions#whitespace#enabled=0
” tabline
“let g:airline#extensions#tabline#enabled = 1
“nnoremap bn :bn
“nnoremap bp :bp
” Theme Settings
“==========================================
color dracula
“set t_Co=256
“set background=dark
“color molokai

“==========================================
” Ctrlp Settings
“==========================================
let g:ctrlp_map=’fl’
let g:ctrlp_cmd=’CtrlP’
let g:ctrlp_working_path_mode=0
let g:ctrlp_match_window_bottom=1
let g:ctrlp_max_height=15
let g:ctrlp_match_window_reversed=0
let g:ctrlp_mruf_max=500
let g:ctrlp_follow_symlinks=1
set wildignore+=*/tmp/*,*.so,*.swp,*.zip ” Linux/MacOSX
set wildignore+=*\\tmp\\*,*.swp,*.zip,*.exe ” Windows

“==========================================
” NerdTree Settings
“==========================================
let NERDChristmasTree=0
let NERDTreeWinSize=25
let NERDTreeChDirMode=2
let NERDTreeShowHidden=1
let NERDTreeShowLineNumbers=0
let NERDTreeIgnore=[‘\~$’, ‘\.pyc$’, ‘\.swp$’]
let NERDTreeShowBookmarks=1
let NERDTreeWinPos=”left”
“open a NERDTree automatically when vim starts up if no files were specified
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists(“s:std_in”) | NERDTree | endif
” open NERDTree automatically when vim starts up on opening a directory
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists(“s:std_in”) | exe ‘NERDTree’ argv()[0] | wincmd p | ene | endif
” Close vim if the only window left open is a NERDTree
autocmd bufenter * if (winnr(“$”) == 1 && exists(“b:NERDTree”) && b:NERDTree.isTabTree()) | q | endif
nnoremap n :NERDTreeToggle

“==========================================
” Neocomplete Settings
“==========================================
“Note: This option must be set in .vimrc(_vimrc). NOT IN .gvimrc(_gvimrc)!
” Disable AutoComplPop.
let g:acp_enableAtStartup = 0
” Use neocomplete.
let g:neocomplete#enable_at_startup = 1
” Use smartcase.
let g:neocomplete#enable_smart_case = 1
” Set minimum syntax keyword length.
let g:neocomplete#sources#syntax#min_keyword_length = 3

” Define dictionary.
let g:neocomplete#sources#dictionary#dictionaries = {
\ ‘default’ : ”,
\ ‘vimshell’ : $HOME.’/.vimshell_hist’,
\ ‘scheme’ : $HOME.’/.gosh_completions’
\ }

” Define keyword.
if !exists(‘g:neocomplete#keyword_patterns’)
let g:neocomplete#keyword_patterns = {}
endif
let g:neocomplete#keyword_patterns[‘default’] = ‘\h\w*’

” Plugin key-mappings.
inoremap neocomplete#undo_completion()
inoremap neocomplete#complete_common_string()

” Recommended key-mappings.
” : close popup and save indent.
inoremap =my_cr_function()
function! s:my_cr_function()
return (pumvisible() ? “\” : “” ) . “\”
” For no inserting key.
“return pumvisible() ? “\” : “\”
endfunction
” : completion.
inoremap pumvisible() ? “\” : “\”
” , : close popup and delete backword char.
inoremap neocomplete#smart_close_popup().”\”
inoremap neocomplete#smart_close_popup().”\”
” Close popup by .
“inoremap pumvisible() ? “\” : “\”

” AutoComplPop like behavior.
“let g:neocomplete#enable_auto_select = 1

” Shell like behavior(not recommended).
“set completeopt+=longest
“let g:neocomplete#enable_auto_select = 1
“let g:neocomplete#disable_auto_complete = 1
“inoremap > pumvisible() ? “\” : “\\”

” Enable omni completion.
autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS
autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags
autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
autocmd FileType python setlocal omnifunc=pythoncomplete#Complete
autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags

” Enable heavy omni completion.
if !exists(‘g:neocomplete#sources#omni#input_patterns’)
let g:neocomplete#sources#omni#input_patterns = {}
endif
“let g:neocomplete#sources#omni#input_patterns.php = ‘[^. \t]->\h\w*\|\h\w*::’
“let g:neocomplete#sources#omni#input_patterns.c = ‘[^.[:digit:] *\t]\%(\.\|->\)’
“let g:neocomplete#sources#omni#input_patterns.cpp = ‘[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::’

” For perlomni.vim setting.
” https://github.com/c9s/perlomni.vim
let g:neocomplete#sources#omni#input_patterns.perl = ‘\h\w*->\h\w*\|\h\w*::’

“==========================================
” Other Settings
“==========================================
” The vimrc file is automatically loaded after modification, windows
“autocmd! bufwritepost _vimrc source %
” The vimrc file is automatically loaded after modification, linux
“autocmd! bufwritepost .vimrc source %

vim进阶

输入终端命令:!+命令

sudo保存:w !sudo tee %

显示当前路径::pwd

查看缓冲区::ls

打开缓冲区文件:buffer 2

命令补全:Tab键

:r!date读shell日期到vim

全文缩进:gg=G或G=gg

批量注释:CTRL+V,块选择模式,选择多行,I插入注释,esc。

删除注释:同上,d删除。

完全匹配查找:/\<word\>

所有目录下文件查找: vimgrep /\<encrypt\>/ **/*.*  

替换: %s/\<encrypt\>/alipayEncrypt/g 

设置文件类型:set filetype=html

文件状态

– (非活动的缓冲区)
a (当前被激活缓冲区)
+ (已经更改的缓冲区)
h (隐藏的缓冲区)
% (当前的缓冲区)
# (交换缓冲区)
= (只读缓冲区)

标签

:Hexplore  [dir] 执行 :Explore,用 |:belowright| 水平分割。缩写He
:Hexplore! [dir] 执行 :Explore,用 |:aboveleft|  水平分割。
:Vexplore  [dir] 执行 :Explore,用 |:leftabove|  垂直分割。缩写Ve
:Vexplore! [dir] 执行 :Explore,用 |:rightbelow| 垂直分割。
:Texplore  [dir] 执行 :Explore,在标签页中打开。              缩写Te
gt 下一标签页
gT 上一标签页
数字gt 到第几页
tabs 查看所有页
退出所有::qa

可视

可视选整行:V
可视跳转:数字+G /数字+gg
可视换头尾:o
上一次可视:gv
可视另存::write new.txt
可视排序::sort

替换

vi/vim 中可以使用 :s 命令来替换字符串
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky
:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky
可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/
:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/

NerdTree

插件安装:把所有文件复制到对应目录下。例如NerdTree

autoload doc lib plugin syntax 都复制到~/.vim下,不是只复制plugin

ctrl + w + h    光标 focus 左侧树形目录
ctrl + w + l    光标 focus 右侧文件显示窗口
ctrl + w + w    光标自动在左右侧窗口切换
ctrl + w + r    移动当前窗口的布局位置
o       在已有窗口中打开文件、目录或书签,并跳到该窗口
go      在已有窗口 中打开文件、目录或书签,但不跳到该窗口
t       在新 Tab 中打开选中文件/书签,并跳到新 Tab
T       在新 Tab 中打开选中文件/书签,但不跳到新 Tab
i       split 一个新窗口打开选中文件,并跳到该窗口
gi      split 一个新窗口打开选中文件,但不跳到该窗口
s       vsplit 一个新窗口打开选中文件,并跳到该窗口
gs      vsplit 一个新 窗口打开选中文件,但不跳到该窗口
ctrl+w x 窗口位置对调
!       执行当前文件
O       递归打开选中 结点下的所有目录
x       合拢选中结点的父目录
X       递归 合拢选中结点下的所有目录
e       Edit the current dif
双击    相当于 NERDTree-o
中键    对文件相当于 NERDTree-i,对目录相当于 NERDTree-e
D       删除当前书签
P       跳到根结点
p       跳到父结点
K       跳到当前目录下同级的第一个结点
J       跳到当前目录下同级的最后一个结点
k       跳到当前目录下同级的前一个结点
j       跳到当前目录下同级的后一个结点
C       将选中目录或选中文件的父目录设为根结点
u       将当前根结点的父目录设为根目录,并变成合拢原根结点
U       将当前根结点的父目录设为根目录,但保持展开原根结点
r       递归刷新选中目录
R       递归刷新根结点
m       显示文件系统菜单
cd      将 CWD 设为选中目录
I       切换是否显示隐藏文件
f       切换是否使用文件过滤器
F       切换是否显示文件
B       切换是否显示书签
q       关闭 NerdTree 窗口
?       切换是否显示 Quick Help

设置书签:Bookmark web  

vim基本命令

鼠标停留在命令上可以看到解释,解释摘自于vim帮助文档

#先将vi的兼容模式改为vim的方式
cp /usr/local/vim/share/vim/vim74/vimrc_example.vim /usr/local/vim/share/vim/vim74/vimrc

文件名 :f
文件路径 :pwd
放弃修改并退出:q!
写入:w
写入并退出:wq
上下左右:kjhl
插入:i
添加:a
删除:x
删除:d/c
删除一行:dd
删除个单词:daw
拷贝:y
拷贝一行:yy
粘贴到光标后:p
粘贴到光标前:P
合并两行:J
撤销:u
撤销行:U
重做:Ctrl+R
下插一行:o
上插一行:O
指定计数:数字+命令
重新装载原来的文件:e!
交换字符:xp
向后移动一个到词首:w
向前移动一个到词尾:ge
向前移动当前词词首:b
向后移动当前词词尾:e
行尾:$
行首:^
文件首:gg
文件尾:G
删除全部:ggdG
全选:ggvG
增加缩进:>
减少缩进:<
下移半屏:Ctrl+D
上移半屏:Ctrl+U
上滚一行:Ctrl+E
下滚一行:Ctrl+Y
下滚一页:Ctrl+F
上滚一页:Ctrl+B
查找文件:/
查找时忽略大小写:set ignorecase
查找时恢复大小写:set noignorecase
向下查找单词:*/n
向上查找单词:#
精确查找:/\<内容\>
关闭查找高亮:set nohlsearch
开启查找高亮:set nohlsearch
开启查找时边输便找:set incsearch
关闭查找时边输便找:set nowrapscan
标记:ma,mb,mc
查看所有标记:marks
重复命令:.
可视模式:v
替换大小写:~
设置文件编码 :set encoding=utf-8

vim的帮助文档写的很好,使用:help,Vim 的作者在帮助系统方面使用了一个很聪明的方案 (也许可以说是很懒惰的方案):他们用一个普通的编辑
窗口来显示帮助。你可以在帮助窗口中使用任何普通的 Vim 命令移动光标。所以,h,j,k 和 l 还是表示左,下,上和右。
要退出帮助窗口,用退出一个普通窗口的命令:”ZZ”。这只会退出帮助窗口,而不会退出 Vim。
当你阅读帮助的时候,你会发现有一些文字被一对竖线括起来了(例如 |help|)。这表示一个超级链接。如果你把光标移到这两个竖线之间并按 CTRL+](标签跳转命令),帮助系统会把你引向这个超级链接指向的主题。(Vim对超级链接的术语是 “标签”(tag),所以CTRL+]实际是跳转到光标所在单词为名的标签所在的位置。)
跳转几次以后,你可能想回到原来的地方。CTRL+t(标签退栈)把你送回前一个跳转点。CTRL+o(跳转到前一个位置)也能完成相同的功能。