老实讲,这个问题,这是让我头疼死了,好在终于忍不了,也找到了。
没解决之前是这个样子:
就是在第一行出现了“>”符
原因在vimrc中的这一句
就是最后多了一个最后一行autocmd末尾的\< cr>
去掉就好
最后是使用gvim -D调试模式找到了
附上自己的_vimrc,备忘
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1 set nocompatible " be iMproved,required filetype plugin indent on "打开文件类型检测,加了这句才可以用智能补全 filetype off " required ""D:\软件\系统类\win-vim set rtp+=$VIM/vimfiles/bundle/vundle.vim/ ""D:\软件\系统类\win-vim call vundle#begin('$VIM/vimfiles/bundle') Plugin 'VundleVim/Vundle.vim' "Plugin 'tpope/vim-fugitive' "syntastic" ""Plugin 'scrooloose/syntastic' "nerdtree comment" Plugin 'scrooloose/nerdcommenter' "YouCompeteMe "Plugin 'Valloric/YouCompleteMe' "vim-indent-guides Plugin 'nathanaelkane/vim-indent-guides' ""supertab" Plugin 'SuperTab' "tomorrow night Plugin 'squarefrog/tomorrow-night.vim' "show whitespace Plugin 'ShowTrailingWhitespace' "NERDTree" Plugin 'scrooloose/nerdtree' "snipmate" "Plugin 'garbas/vim-snipmate' "TAGBAR Plugin 'majutsushi/tagbar' "Winmanager ""Plugin 'winmanager' "airline" Plugin 'bling/vim-airline' "neocomlete" Plugin 'shougo/neocomplete.vim' "ale"代码异步检查 Plugin 'w0rp/ale' call vundle#end() " required filetype plugin indent on " required """"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 """"syntastic "SuperTab" let g:SupertabRetainCompletionTypee=2 "0 - 不记录上次的补全方式 "1 - 记住上次的补全方式,直到用其他的补全命令改变它 "2 - 记住上次的补全方式,直到按ESC退出插入模式为止 "supertabu "tagbar" "nmap <Leader>tb :TagbarToggle<CR> "快捷键设置 let g:tagbar_ctags_bin='D:\软件\系统类\win-vim\ctags.exe' "ctags程序的路径 let g:tagbar_width=30 "窗口宽度的设置 map <F2> :Tagbar<CR> autocmd BufReadPost *.cpp,*.c,*.h,*.hpp,*.cc,*.cxx call tagbar#autoopen() "如果是c语言的程序的话,tagbar自动开启 "tagbar" "NERDTree" nnoremap <silent> <F3> :NERDTree<CR> "NERDTree" """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " CTags的设定 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let Tlist_Sort_Type = "name" " 按照名称排序 let Tlist_Use_Right_Window = 1 " 在右侧显示窗口 let Tlist_Compart_Format = 1 " 压缩方式 let Tlist_Exist_OnlyWindow = 1 " 如果只有一个buffer,kill窗口也kill掉buffer let Tlist_File_Fold_Auto_Close = 0 " 不要关闭其他文件的tags let Tlist_Enable_Fold_Column = 0 " 不要显示折叠树 "ctags的设定" map <F12> :!ctags -R<cr> set tag=D:\软件\工具类\codeblock\MinGW\lib\gcc\mingw32\4.9.2\tags "ctags的设定" "设置 indent-guides" let g:indent_guides_auto_colors = 1 let g:indent_guides_guide_size = 1 let g:indent_guides_color_change_percent = 10 let g:indentLine_char = '|' let g:indentLine_color_term = 239 "当let g:indent_guides_auto_colors = 0时下面的设置才有效 "autocmd VimEnter,Colorscheme * :hi IndentGuidesOdd guibg=red ctermbg=3 "autocmd VimEnter,Colorscheme * :hi IndentGuidesEven guibg=green ctermbg=4 "hi IndentGuidesOdd guibg=red ctermbg=3 "hi IndentGuidesEven guibg=green ctermbg=4 "设置 intend-guides" "makeprg的准备" "set makeprg=D:\软件\系统类\PC-lint\lint-nt.exe/ -u/ D:\软件\系统类\PC-lint\std.lnt/ D:\软件\系统类\PC-lin\tenv-vc6.lnt/ /"%/" "set errorformat=%f(%l):/ %t%*[^0-9]%n:/ %m "pc-lint" "ale "始终开启标志列 let g:ale_sign_column_always = 1 let g:ale_set_highlights = 0 "自定义error和warning图标 let g:ale_sign_error = '?' let g:ale_sign_warning = '?' "在vim自带的状态栏中整合ale let g:ale_statusline_format = ['? %d','? %d','? OK'] "显示Linter名称,出错或警告等相关信息 let g:ale_echo_msg_error_str = 'E' let g:ale_echo_msg_warning_str = 'W' let g:ale_echo_msg_format = '[%linter%] %s [%severity%]' "普通模式下,sp前往上一个错误或警告,sn前往下一个错误或警告 nmap sp <Plug>(ale_prevIoUs_wrap) nmap sn <Plug>(ale_next_wrap) "<Leader>s触发/关闭语法检查 nmap <Leader>s :ALEToggle<CR> "<Leader>d查看错误或警告的详细信息 nmap <Leader>d :ALEDetail<CR> "ale" Syntax on set autoindent " 自动缩进 set cindent " 自动缩进 set tabstop=4 " Tab键的宽度 set softtabstop=4 " 统一缩进为4 set shiftwidth=4 " 统一缩进为4 set noexpandtab " 不要用空格代替制表符 set smarttab " 在行和段开始处使用制表符 "set autoread " 设置当文件被改动时自动载入 "set autowrite "自动保存 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 显示相关 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set shortmess=atI " 启动的时候不显示那个援助乌干达儿童的提示 "设置竖直对齐线" "set list lcs=tab:\|\ "winpos 5 5 " 设定窗口位置 ""set lines=30 columns=80 " 设定窗口大小 ""set go= " 不要图形按钮 "color asmanian2 " 设置背景主题 colorscheme murphy"设置配色方案 "set guifont=Source\ Code\ Pro\ Regular:h20 " 设置字体 "set guifont=h20 " 设置字体 set guifont =黑体:h14:cGB2312:qDRAFT autocmd InsertLeave * se nocul " 用浅色高亮当前行 autocmd InsertEnter * se cul " 用浅色高亮当前行 "set ruler " 显示标尺 set showcmd " 输入的命令显示出来,看的清楚些 "set cmdheight=1 " 命令行(在状态行下)的高度,设置为1 "set whichwrap+=<,>,h,l " 允许backspace和光标键跨越行边界(不建议) "set scrolloff=3 " 光标移动到buffer的顶部和底部时保持3行距离 set novisualbell " 不要闪烁(不明白) set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} "状态行显示的内容 set laststatus=1 " 启动显示状态行(1),总是显示状态行(2) ""set foldenable " 允许折叠 set foldmethod=manual " 手动折叠 "set background=dark "背景使用黑色 " 设置配色方案 "字体 "if (has("gui_running")) " set guifont=Bitstream\ Vera\ Sans\ Mono\ 10 "endif """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """""新文件标题"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "新建.c,.h,.sh,.java文件,自动插入文件头 autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()" ""定义函数SetTitle,自动插入文件头 func SetTitle() "如果文件类型为.sh文件 if &filetype == 'sh' call setline(1,"\#########################################################################") call append(line("."),"\# File Name: ".expand("%")) call append(line(".")+1,"\# Author :miaogen miaogen") call append(line(".")+4,"\#########################################################################") call append(line(".")+5,"\#!/bin/bash") call append(line(".")+6,"") else call setline(1,"/*************************************************************************") call append(line(".")," > File Name: ".expand("%")) call append(line(".")+1," > Author :miaogen") call append(line(".")+2," > Mail: miaogen156@outlook.com ") call append(line(".")+3," > Created Time: ".strftime("%c")) call append(line(".")+4," ************************************************************************/") call append(line(".")+5,"") endif if &filetype == 'cpp' call append(line(".")+6,"#include<iostream>") call append(line(".")+7,"using namespace std;") call append(line(".")+8,"") endif if &filetype == 'c' call append(line(".")+6,"#include<stdio.h>") call append(line(".")+7,"#include<stdlib.h>") call append(line(".")+8,"#include<sys/ipc.h>") call append(line(".")+9,"#include<sys/types.h>") endif "新建文件后,自动定位到文件末尾 autocmd BufNewFile * normal G endfunc """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "键盘命令 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "把ctrl+<F4>映射成关闭当前标签页" map <C-F4> :tabclose <cr> nmap <leader>w :w!<cr> nmap <leader>f :find<cr> "把tap映射成<C-p>" ""imap <Tab> <C-P> " 映射全选+复制 ctrl+a "map <C-A> ggVGY "map! <C-A> <Esc>ggVGY "全文缩进,有什么用列 "map <F11> gg=G "<F11>全屏显示" map <F11> :simalt ~x<CR> autocmd GUIEnter * simalt ~x<cr> "在normal模式下 用ctrl+i表示上一个标签 用ctrl+k表示下一个标签" nmap <leader>e <C-PageUp> nmap <leader>d <C-PageDown> " 选中状态下 Ctrl+c 复制 vmap <C-c> "+y "去空行 ""nnoremap <F2> :g/^\s*$/d<CR> "比较文件 nnoremap <C-F2> :vert diffsplit "新建标签 map <M-F2> :tabnew<CR> "列出当前目录文件 "map <F3> :tabnew .<CR> "打开树状文件目录 ""map <C-F3> \be "<F4>编译不运行" map <F4> :!g++ % -o %<.exe -std=c++11<cr> map<F5> :exec "! %<.exe"<cr> "C,C++ 按F5编译运行 map <F6> :call CompileRunGcc()<CR> func! CompileRunGcc() exec "w" if &filetype == 'c' exec "!g++ % -o %<.exe" exec "! %<.exe" elseif &filetype == 'cpp' exec "!g++ % -o %<.exe -std=c++11" exec "! %<.exe" elseif &filetype == 'java' exec "!javac %" exec "!java %<" elseif &filetype == 'sh' :!./% endif endfunc "C,C++的调试 map <F8> :call Rungdb()<CR> func! Rungdb() exec "w" exec "!g++ % -g -o %<" exec "!gdb ./%<" endfunc """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ""实用设置 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 设置当文件被改动时自动载入 set autoread " quickfix模式 autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr> "代码补全 ""set completeopt=preview,menu "允许插件 filetype plugin on "共享剪贴板 set clipboard+=unnamed "从不备份 set nobackup "make 运行 :set makeprg=g++\ -Wall\ \ % "自动保存 set autowrite set ruler " 打开状态栏标尺 ""set cursorline " 突出显示当前行 set magic " 设置魔术 set guioptions-=T " 隐藏工具栏 set guioptions-=m " 隐藏菜单栏 "set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\ """""""" " 设置在状态行显示的信息 set foldcolumn=2 ""set foldmethod=indent set foldlevel=3 set foldenable " 开始折叠 " 语法高亮 set Syntax=on " 去掉输入错误的提示声音 set noeb " 在处理未保存或只读文件的时候,弹出确认 set confirm " 自动缩进 set autoindent set cindent " Tab键的宽度 set tabstop=4 " 统一缩进为4 set softtabstop=4 set shiftwidth=4 " 不要用空格代替制表符 set noexpandtab " 在行和段开始处使用制表符 set smarttab " 显示行号 set number "设置相对行号" set relativenumber " 历史记录数 "set history=1000 "禁止生成临时文件 set nobackup set noswapfile "搜索忽略大小写 "set ignorecase "搜索逐字符高亮 set hlsearch set incsearch "行内替换 set gdefault """" "编码设置 "" set enc=utf-8 "set fencs=utf-8,ucs-bom,shift-jis,gbk,gb2312,cp936 "语言设置 "set langmenu=zh_CN.UTF-8 "set helplang=cn " 我的状态行显示的内容(包括文件类型和解码) set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} "set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%] " 总是显示状态行 set laststatus=2 " 命令行(在状态行下)的高度,默认为1,这里是2 set cmdheight=2 " 侦测文件类型 filetype on " 载入文件类型插件 filetype plugin on " 为特定文件类型载入相关缩进文件 filetype indent on " 保存全局变量 set viminfo+=! " 带有如下符号的单词不要被换行分割 set iskeyword+=_,$,@,%,#,- " 字符间插入的像素行数目 set linespace=0 " 增强模式中的命令行自动完成操作 set wildmenu " 使回格键(backspace)正常处理indent,eol,start等 set backspace=2 " 允许backspace和光标键跨越行边界 set whichwrap+=<,l " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位) set mouse=a set selection=exclusive set selectmode=mouse,key " 通过使用: commands命令,告诉我们文件的哪一行被改变过 set report=0 " 在被分割的窗口间显示空白,便于阅读 set fillchars=vert:\,stl:\,stlnc:\ " 高亮显示匹配的括号 set showmatch " 匹配括号高亮的时间(单位是十分之一秒) set matchtime=1 " 光标移动到buffer的顶部和底部时保持3行距离 set scrolloff=3 " 为C程序提供自动缩进 set smartindent " 高亮显示普通txt文件(需要txt.vim脚本) au BufRead,BufNewFile * setfiletype txt "自动补全 :inoremap jf <ESC> :inoremap ( ()<ESC>i :inoremap ) <c-r>=ClosePair(')')<CR> :inoremap ={ ={}<ESC>i :inoremap { {<CR>}<ESC>O :inoremap } <c-r>=ClosePair('}')<CR> :inoremap [ []<ESC>i :inoremap ] <c-r>=ClosePair(']')<CR> :inoremap " ""<ESC>i :inoremap ' ''<ESC>i ":inoremap ude< ude<><ESC>i function! ClosePair(char) if getline('.')[col('.') - 1] == a:char return "\<Right>" else return a:char endif endfunction ""set completeopt=longest,menu """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " CTags的设定 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let Tlist_Sort_Type = "name" " 按照名称排序 let Tlist_Use_Right_Window = 1 " 在右侧显示窗口 let Tlist_Compart_Format = 1 " 压缩方式 let Tlist_Exist_OnlyWindow = 1 " 如果只有一个buffer,kill窗口也kill掉buffer let Tlist_File_Fold_Auto_Close = 0 " 不要关闭其他文件的tags let Tlist_Enable_Fold_Column = 0 " 不要显示折叠树 "autocmd FileType java set tags+=D:\tools\java\tags "autocmd FileType h,cpp,cc,c set tags+=D:\tools\cpp\tags "let Tlist_Show_One_File=1 "不同时显示多个文件的tag,只显示当前文件的 "设置tags ""set tags=tags "set autochdir """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "其他东东 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "默认打开Taglist let Tlist_Auto_Open=1 """""""""""""""""""""""""""""" " Tag list (ctags) """""""""""""""""""""""""""""""" "let Tlist_Ctags_Cmd = '/usr/bin/ctags' let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的 let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口 "let g:ycm_global_ycm_extra_conf='~/home/miaogen/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py' "let g:ycm_global_ycm_extra_conf='~/home/miaogen/.vim/.ycm_extra_conf.py' let g:ycm_global_ycm_extra_conf='$VIM/.ycm_extra_conf.py' " YouCompleteMe set runtimepath+=D:\软件\系统类\win-vim\vimfiles\bundle\YouCompleteMe let g:ycm_collect_identifiers_from_tags_files = 1 " 开启 YCM 基于标签引擎 let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释与字符串中的内容也用于补全 let g:syntastic_ignore_files=[".*\.py$"] let g:ycm_seed_identifiers_with_Syntax = 1 " 语法关键字补全 let g:ycm_complete_in_comments = 1 let g:ycm_confirm_extra_conf = 0 let g:ycm_key_list_select_completion = ['<c-n>','<Down>'] " 映射按键,没有这个会拦截掉tab,导致其他插件的tab不能用. "let g:ycm_key_list_prevIoUs_completion = ['<c-p>','<Up>'] let g:ycm_complete_in_comments = 1 " 在注释输入中也能补全 let g:ycm_complete_in_strings = 1 " 在字符串输入中也能补全 let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释和字符串中的文字也会被收入补全 let g:ycm_show_diagnostics_ui = 0 " 禁用语法检查 inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>" | " 回车即选中当前项 nnoremap <c-j> :YcmCompleter GoToDefinitionElseDeclaration<CR> " 跳转到定义处 let g:ycm_min_num_of_chars_for_completion=2 " 从第2个键入字符就开始罗列匹配项 "stop use h j k "noremap h <NOP> "noremap j <NOP> "noremap k <NOP> "noremap l <NOP> "set guifont=Monacao:h30 "set guifont=MOnospace:h20 inoremap <c-h> <left> inoremap <c-l> <right> inoremap <c-j> <c-o>gj inoremap <c-k> <c-o>gk