命令模式:
<C-R>
CTRL-U 表示光标到首行,U=UP,向上滚动N行,默认是半个屏幕
CTRL-D 表示光标到尾行,D=DOWN,向下滚动N行,默认是半个屏幕
CTRL-E 表示向下滚动一行
CTRL-F 表示向下滚动一个屏幕
CTRL-G 表示显示当前文件名称,和行数,以及浏览百分几
CTRL-L 重绘屏幕
CTRL-M CTRL-N等于光标插入到下一行的行首
CTRL-P 等于光标插入到上一行的行首
CTRL-R 重做u撤销的改变(恢复)
CTRL-^ 数字切换第几个文件编辑
'(按两下单冒号) 自动跳转上次光标所在的行首
'{ 光标移动到当前段落的首部所在行的第一个 CHAR
'} 光标移动到当前段落的尾部所在行的第一个 CHAR
( 光标回退 N 个句子
) 光标前进 N 个句子
* 高亮当前光标所在单词,重复按下会向下查找下一个匹配的词,与#对应
+ 等于回车
- 当前行的光标移动到上一行的行首
/内容 搜索内容
/回车 根据上次的搜索进行下一次的搜索
数字: 数字+冒号会在命令行显示当前行,当前行+数字-1的一个命令前缀,比如3:就会显示.,.+2,.(点)表示显示当前行
<数字 左移多少个TAB
>数字 右移多少个TAB
W 向前移动一个单词,移动到单词的起始位置
E 向前移动一个单词,移动到单词的结束位置
gg 移动到行首
# 会高亮当前光标的单词的操作!重复操作,会循环自动向上查找下一个匹配的词!
fa 先按下f键盘,然后再按下需要查找的内容,fa表示查找与光标最近的内容a,查找到光标自动跳转到a的字符上
dt+字符 删除光标与字符串之间的内容
g_ 按下g然后再shift-(+号旁边的键盘)可以将光标移动到当前行的末尾,末尾的空字符不包含上,移动到末尾非空字符串!
cw 当前单词光标后的所有字符都会给删除,并且进入INSERT模式
y $输入y之后再输入美元符号$,复制当前行起始的单词到当前行的最后一个单词,包含了行末的所有空格
y g_ 输入y之后再输入g和_ 复制当前行起始的单词到当前行的最后一个单词,行末的空格
ye 拷贝当前光标后的一个单词
gU 将当前的行所有字符都变大写,亲身试用的时候需要重复按两次才生效!
gu 将当前的行所有字符都变小写,亲身试用的时候需要重复按两次才生效!
t字符 按下t然后按别的字符,把光标移动到该字符前,比如ta,表示移动到a的字符前,T向后移动到该字符前
gd 高亮所有当前光标下的单词
输入:(冒号)这类型的命令
% 在当前行查找下一行的{ 或者 }
nohl 取消高亮显示
?搜索内容 进行反向搜索,搜索的顺序从后面搜到的显示
?立刻 回车表示搜索继续搜索上一次反向搜索的内容
@:执行上一次的命令
``(TAB 键盘上的~)移动到光标上一次执行的位置
`{移动到段落的起始处
`}移动到段落的结束处
b反向移动一个单词和E对应
q{0-9a-zA-Z"}记录输入的字符到寄存器0-9a-zA-Z"中
(大写Q用于添加)
q: 查询:(冒号)输入过的命令和执行
q/ 查询/(反斜杠)输入过的命令和执行
q? 查询?(问好)输入过的命令和执行
r 替换字符
s 删除字符并且进入插入模式
v 进入可视模式
w 光标递进到下一个单词
x 删除字符
yy 复制一行
{ 光标移动到段落起始
} 光标移动到段落的结束
~ 光标递增移动,并且遇到的字符都转换为大写
G 大写G按键,直接到文档末尾
gg 直接到文档头部
!! 执行上一次的命令
6,9 co 12 表示复制6到9行的数据到第12的下面也就是13行
ma mbmc表示光标移动到mark点a,mark点b,mark点c,然后再命令行'a,'b m 'c就可以多行复制了
go+数字 光标会移动多少个数字,起始点从第一个字符开始算!
编辑模式(INSERT):
CTRL-E 插入当前光标下方的字符
CTRL-H 等于退格键的作用
CTRL-J 等于回车换行的作用
CTRL-M 等于回车换行的作用
CTRL-W 删除当前光标的单词
CTRL-[ 等同Esc
CTRL-D 删除当前缩进行(在行首按了TAB键,此时你按住CTRL-D就会把TAB键盘的内容删了)
CTRL-X CTRL-E 按下CTRL-X 后然后接着按 CTRL-E 会进行向上滚动一行的操作
CTRL-X CTRL-Y 按下CTRL-X 后然后接着按CTRL-Y会进行向下滚动一行的操作
CTRL-X CTRL-F 按下CTRL-X 后然后接着按CTRL-F 会以一个下拉框列出当前的文件列表
CTRL-X CTRL-P 按下CTRL-X 后然后接着按CTRL-P会自动补全字符(上一个,P=Prefore),例如:你的文本内容包含了hello,你敲h之后CTRL-X 接着CTRL-P就会在h变hello!
如果存在多个补全的,会以下啦列表显示,让你选择!
CTRL-X CTRL-P 按下CTRL-X 后然后接着按CTRL-N会自动补全字符(下一个,N=Next),例如:你的文本内容包含了hello,你敲h之后CTRL-X 接着CTRL-P就会在h变hello!
如果存在多个补全的,会以下啦列表显示,让你选择!
CTRL-X CTRL-V 按下CTRL-X后然后接着CTRL-V 会列出常规需要的字符,会以一个下拉列表显示!
窗口命令
To define a mapping which uses the "mapleader" variable, the special string"<Leader>" can be used. It is replaced with the string value of "mapleader".If "mapleader" is not set or empty, a backslash is used instead.
:map <Leader>A oanother line<Esc>
:map \A oanother line<Esc> 按下\A 则会出现新的一行
But after:
:let mapleader = ","
It works like:
:map ,A oanother line<Esc>
" #####vundle Configure
au VimEnter * NERDTree
set nu
set nocompatible
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
Bundle 'Valloric/YouCompleteMe'
Bundle 'scrooloose/syntastic'
Bundle 'The-NERD-tree'
Bundle 'The-NERD-Commenter'
Bundle 'jistr/vim-nerdtree-tabs'
Bundle 'tpope/vim-abolish'
Bundle 'SirVer/ultisnips'
Bundle 'honza/vim-snippets'
Bundle 'vim-scripts/taglist.vim'
Bundle 'kien/ctrlp.vim'
"Bundle 'tpope/vim-surround'
Bundle 'Raimondi/delimitMate'
" #####vundle COnfigure
" #####vim Configure
filetype plugin indent on
syntax on
set tabstop=3
set softtabstop=3
set shiftwidth=3
set autoindent
set cindent
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
"colorscheme solarized
"colorscheme asmanian2
set guifont=Courier_New:h10:cANSI
autocmd InsertLeave * se cul
autocmd InsertEnter * se cul
set showcmd
set laststatus=2
set foldenable
if version >= 603
<span style="white-space:pre"> </span>set helplang=cn
endif
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
set fileencodings=ucs-bom,utf-8,cp936
set fileencoding=utf-8
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java,*.js,*.php,*.html,*.htm exec ":call SetTitle()"
func SetTitle()
<span style="white-space:pre"> </span>if &filetype == 'sh'
<span style="white-space:pre"> </span>call setline(1,"\############################################")
<span style="white-space:pre"> </span>call append(line("."),"\# File Name:".expand("%"))
<span style="white-space:pre"> </span>call append(line(".")+1,"\# Author:YourName")
<span style="white-space:pre"> </span>call append(line(".")+2,"\# Email:YourEmail")
<span style="white-space:pre"> </span>call append(line(".")+3,"\# Create Time:".strftime("%Y-%m-%d",localtime()))
<span style="white-space:pre"> </span>call append(line(".")+4,"\###################################")
<span style="white-space:pre"> </span>call append(line(".")+5,"\#!/bin/bash")
<span style="white-space:pre"> </span>call append(line(".")+6,"")
<span style="white-space:pre"> </span>else
<span style="white-space:pre"> </span>call setline(1,"/********************************************")
<span style="white-space:pre"> </span>call append(line("."),"<span style="white-space:pre"> </span>> File Name:".expand("%"))
<span style="white-space:pre"> </span>call append(line(".")+1,"<span style="white-space:pre"> </span>> Author:YourName")
<span style="white-space:pre"> </span>call append(line(".")+2,"<span style="white-space:pre"> </span>> Email:YourEmail")
<span style="white-space:pre"> </span>call append(line(".")+3,"<span style="white-space:pre"> </span>> Created Time:".strftime("%Y-%m-%d",localtime()))
<span style="white-space:pre"> </span>call append(line(".")+4,"**************************************/")
<span style="white-space:pre"> </span>call append(line(".")+5,"")
<span style="white-space:pre"> </span>endif
<span style="white-space:pre"> </span>if &filetype == 'cpp'
<span style="white-space:pre"> </span>call append(line(".")+6,"#include <iostream>")
<span style="white-space:pre"> </span>call append(line(".")+7,"using namespace std;")
<span style="white-space:pre"> </span>call append(line(".")+8,"")
<span style="white-space:pre"> </span>endif
<span style="white-space:pre"> </span>if &filetype == 'c'
<span style="white-space:pre"> </span>call append(line(".")+6,"#include <stdio.h>")
<span style="white-space:pre"> </span>call append(line(".")+7,"")
<span style="white-space:pre"> </span>endif
<span style="white-space:pre"> </span>autocmd BufNewFile * normal G
<span style="white-space:pre"> </span>endfunc<span style="white-space:pre"> </span>
map <C-c> y
map <C-x> d
map <C-A> <Esc>ggVG
"map <C-w> :w!<CR>
nmap <tab> V>
nmap <s-tab> V<
vmap <tab> V>
vmap <s-tab> V>
set cursorline
set noexpandtab
set mouse=a
set selection=exclusive
set selectmode=mouse,key
set smartindent
au BufRead,BufNewFile * setfiletyp txt
:inoremap ( ()<ESC>i
:inoremap { {}<ESC>i
:inoremap [ []<ESC>i
:inoremap ' ''<ESC>i
:inoremap " ""<ESC>i
:inoremap < <><ESC>i
":inoremap > <c-r>=ClosePair( '> ')<CR>
"function! ClosePair(char)
"<span style="white-space:pre"> </span>if getline('. ')[col('. ')-1] == a:char
"<span style="white-space:pre"> </span>return "\<Right>"
"<span style="white-space:pre"> </span>else
"<span style="white-space:pre"> </span>return a:char
"<span style="white-space:pre"> </span>endif
"endfunction
" #####vim Configure
" #####YouCompleteMe Configure
let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'
" 自动补全配置
set completeopt=longest,menu<span style="white-space:pre"> </span>"让Vim的补全菜单行为与一般IDE一致(参考VimTip1228)
autocmd InsertLeave * if pumvisible() == 0|pclose|endif<span style="white-space:pre"> </span>"离开插入模式后自动关闭预览窗口
inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>"<span style="white-space:pre"> </span>"回车即选中当前项
"上下左右键的行为 会显示其他信息
inoremap <expr> <Down> pumvisible() ? "\<C-n>" : "\<Down>"
inoremap <expr> <Up> pumvisible() ? "\<C-p>" : "\<Up>"
inoremap <expr> <PageDown> pumvisible() ? "\<PageDown>\<C-p>\<C-n>" : "\<PageDown>"
inoremap <expr> <PageUp> pumvisible() ? "\<PageUp>\<C-p>\<C-n>" : "\<PageUp>"
"youcompleteme 默认tab s-tab 和自动补全冲突
"let g:ycm_key_list_select_completion=['<c-n>']
let g:ycm_key_list_select_completion = ['<Down>']
"let g:ycm_key_list_previous_completion=['<c-p>']
let g:ycm_key_list_previous_completion = ['<Up>']
let g:ycm_confirm_extra_conf=0 "关闭加载.ycm_extra_conf.py提示
let g:ycm_collect_identifiers_from_tags_files=1<span style="white-space:pre"> </span>" 开启 YCM 基于标签引擎
let g:ycm_min_num_of_chars_for_completion=1<span style="white-space:pre"> </span>" 从第2个键入字符就开始罗列匹配项
let g:ycm_cache_omnifunc=0<span style="white-space:pre"> </span>" 禁止缓存匹配项,每次都重新生成匹配项
let g:ycm_seed_identifiers_with_syntax=1<span style="white-space:pre"> </span>" 语法关键字补全
nnoremap <F5> :YcmForceCompileAndDiagnostics<CR><span style="white-space:pre"> </span>"force recomile with syntastic
"nnoremap <leader>lo :lopen<CR><span style="white-space:pre"> </span>"open locationlist
"nnoremap <leader>lc :lclose<CR><span style="white-space:pre"> </span>"close locationlist
inoremap <leader><leader> <C-x><C-o>
"在注释输入中也能补全
let g:ycm_complete_in_comments = 1
"在字符串输入中也能补全
let g:ycm_complete_in_strings = 1
"注释和字符串中的文字也会被收入补全
let g:ycm_collect_identifiers_from_comments_and_strings = 0
let g:clang_user_options='|| exit 0'
nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR> " 跳转到定义处
let g:ycm_semantic_triggers={}
let g:ycm_semantic_triggers.c=['->','.',' ','(','[','&']
" #####YouCompleteMe Configure
" ####syntastic
let g:syntastic_error_symbol='✗'
let g:syntastic_warning_symbol='⚠'
let g:syntastic_check_on_open=1
let g:syntastic_check_on_wq=0
let g:syntastic_enable_highlighting=1
let g:syntastic_python_checkers=['pyflakes'] " 使用pyflakes,速度比pylint快
let g:syntastic_javascript_checkers = ['jsl', 'jshint']
let g:syntastic_html_checkers=['tidy', 'jshint']
let g:syntastic_cpp_include_dirs=['/usr/include/']
let g:syntastic_cpp_remove_include_errors=1
let g:syntastic_cpp_check_header=1
let g:syntastic_cpp_compiler='clang++'
let g:syntastic_cpp_compiler_options='-std=c++11 -stdlib=libstdc++'
let g:syntastic_enable_ballons=1
" 修改高亮的背景色, 适应主题
highlight SyntasticErrorSign guifg=white guibg=black
" to see error location list
let g:syntastic_always_populate_loc_list = 0
let g:syntastic_auto_loc_list = 0
let g:syntastic_loc_list_height = 5
function! ToggleErrors()
let old_last_winnr = winnr('$')
lclose
if old_last_winnr == winnr('$')
" Nothing was closed, open syntastic error location
panel
Errors
endif
endfunction
" ####syntastic
" ####NERDTree
"let g:NERDTreeShowLineNumbers=1
let g:NERDTreeQuitOnOpen = 0
" ####NERDTree
" " ####NERDTree tabs
" "let g:nerdtree_tabs_smart_startup_focus =2
let g:nerdtree_tabs_open_on_console_startup =1
" ####NERDTree tabs
" ####neocomplcache"
"source neocomplcache.conf
" ####neocomplcache"
" #####ultisnips"
let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsJumpForwardTrigger="<c-b>"
let g:UltiSnipsJumpBackwardTrigger="<c-z>"
" If you want :UltiSnipsEdit to split your window.
let g:UltiSnipsEditSplit="vertical"
" #####ultisnips"
" #####ctag list "
let Tlist_Ctags_Cmd='/usr/bin/ctags'
let Tlist_ShowOne_File=1
let Tlist_Exit_OnlyWIndow=1
let Tlist_Use_Right_Window=1
let Tlist_GainFocus_On_ToggleOpen=1
let Tlist_Auto_Open=1
let Tlist_Process_File_Always=1
map <silent> <F9> :TlistToggle<cr>
" #####ctag list "
" #####ctrlP
"
" #####ctrlP
filetype plugin indent on