我的Gvim配置

Verilog编辑器Gvim的配置 " 快捷键设置"自定义命令前缀,防止冲突"插入模式退出插入模式ii"正常模式下保存,w"正常模式下保存退出,q"正常模式下保存退出,wq"正常模式下打开关闭文件目录ctrl+t"正常模式下语法检查,ck"括号自动补全function!elseendif"配对自动补全,按空格自动补全:ab case;:ab begin;:ab reg;:ab output;:ab para;:ab if;:ab elif; 阅读详情

工作中,我大部分时间都是和VIM打交道的,甚至Windows下的编程也开始完全用GVIM替代Editplus。这两天对自己的vimrc文件做了一下整理。同时给每一行的配置增加了注释。整理完成之后,好用多了,因为借鉴了很多网友的经验,所以本着分享的精神公布出来,希望有朋友能用上。
  另外,我这份_vimrc配置使用的字体是:YaHei Mono,如果您没有此字体,可以到这里下载:(下载YaHei Mono字体)。下载后放到Windows文件夹下的fonts目录里即可。如果你不想用YaHei Mono字体,那么有一个替代方案就是用Courier_New字体,需要修改以下配置:

  1. " 设置显示字体
  2. if has("win32")
  3.     " set guifont=Courier_New:h11:cANSI
  4.     set guifont=YaHei/ Mono:h11
  5.     "set guifontwide=Microsoft/ Yahei/ Monotype:h11
  6.     "set guifont=YaHei/ Consolas/ Hybrid:h12
  7. endif

将“set guifont=YaHei/ Mono:h11”注掉,同时把“set guifont=Courier_New:h11:cANSI”项打开即可。

以下是配置文件全部内容:

  1. " ***************Vimrc files for GVim *************
  2. " * CreateDate : Apr 20,2010
  3. " * LastModified : Apr 20,2010
  4.  
  5. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  6. "                                全局设定                                    "
  7. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  8. " 不要使用vi的键盘模式,而是vim自己的
  9. set nocompatible
  10.  
  11. " 加载配置。
  12. behave mswin
  13.  
  14. "设置快速编辑.vimrc文件 ,e 编辑.vimrc
  15. map <silent> <leader>e :call SwitchToBuf("~/_vimrc")<cr>
  16.  
  17. "保存.vimrc文件后会自动调用新的.vimrc
  18. autocmd! bufwritepost .vimrc source ~/_vimrc
  19.  
  20. " 设定解码
  21. if has("multi_byte")
  22.     " When 'fileencodings' starts with 'ucs-bom', don't do this manually
  23.     "set bomb
  24.     set fileencodings=ucs-bom,utf-8,chinese,taiwan,japan,korea,latin1
  25.     " CJK environment detection and corresponding setting
  26.     if v:lang =~ "^zh_CN"
  27.         " Simplified Chinese, on Unix euc-cn, on MS-Windows cp936
  28.         set encoding=utf-8
  29.         set termencoding=utf-8
  30.         if &fileencoding == ''
  31.             set fileencoding=utf-8
  32.         endif
  33.     elseif v:lang =~ "^zh_TW"
  34.         " Traditional Chinese, on Unix euc-tw, on MS-Windows cp950
  35.         set encoding=euc-tw
  36.         set termencoding=euc-tw
  37.         if &fileencoding == ''
  38.             set fileencoding=euc-tw
  39.         endif
  40.     elseif v:lang =~ "^ja_JP"
  41.         " Japanese, on Unix euc-jp, on MS-Windows cp932
  42.         set encoding=euc-jp
  43.         set termencoding=euc-jp
  44.         if &fileencoding == ''
  45.             set fileencoding=euc-jp
  46.         endif
  47.     elseif v:lang =~ "^ko"
  48.         " Korean on Unix euc-kr, on MS-Windows cp949
  49.         set encoding=euc-kr
  50.         set termencoding=euc-kr
  51.         if &fileencoding == ''
  52.             set fileencoding=ecu-kr
  53.         endif
  54.     endif
  55.     " Detect UTF-8 locale, and override CJK setting if needed
  56.     if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
  57.         set encoding=utf-8
  58.     endif
  59. else
  60.     echoerr 'Sorry, this version of (g)Vim was not compiled with "multi_byte"'
  61. endif
  62.  
  63.  
  64. " browsedir设置
  65. set browsedir=buffer
  66.  
  67. " 自动格式化设置
  68. filetype indent on
  69. set autoindent
  70. set smartindent
  71.  
  72. " 设置备份及备份目录。
  73. set backspace=indent,eol,start
  74. set backupdir=D:/vim_back_files
  75. set autochdir
  76.  
  77. " history文件中需要记录的行数,恢复必须用到。
  78. set history=1024
  79.  
  80. " 窗口最大化
  81. autocmd GUIEnter * simalt ~x
  82.  
  83. " 解决菜单乱码,先指定语言。
  84. set langmenu=zh_CN.UTF-8
  85. source $VIMRUNTIME/vimrc_example.vim
  86. source $VIMRUNTIME/mswin.vim
  87. language message zh_CN.UTF-8
  88. set fileencodings=utf-8,GB2312,cp936,gb18030,big5,euc-jp,euc-kr,latin1
  89.  
  90. " 在处理未保存或只读文件的时候,弹出确认
  91. set confirm
  92.  
  93. " 共享外部剪贴板
  94. set clipboard+=unnamed
  95.  
  96. " 显示未完成命令
  97. set showcmd
  98. " 侦测文件类型
  99. filetype on
  100.  
  101. " 载入文件类型插件
  102. filetype plugin on
  103.  
  104. " 为特定文件类型载入相关缩进文件
  105. filetype indent on
  106.  
  107. " 保存全局变量
  108. set viminfo+=!
  109.  
  110. " 带有如下符号的单词不要被换行分割
  111. set iskeyword+=_,$,@,%,#,-
  112.  
  113. " 语法高亮
  114. syntax on
  115.  
  116. " 设置不兼容模式
  117. set nocp
  118.  
  119. " 设置鼠标支持
  120. set mouse=a
  121.  
  122. " 不要生成swap文件
  123. setlocal noswapfile
  124.  
  125. " 当buffer被丢弃时隐藏
  126. set bufhidden=hide
  127.  
  128. " 保存窗口大小
  129. set sessionoptions+=resize
  130.  
  131. " C++头文件识别
  132. au BufEnter /usr/include/c++/* setf cpp
  133. au BufEnter /usr/include/g++-3/* setf cpp
  134.  
  135. " GNU标准
  136. au BufEnter /usr/* call GnuIndent()
  137.  
  138. " 显示行号
  139. set number
  140.  
  141. " tab宽度
  142. set tabstop=4
  143. set cindent shiftwidth=4
  144. set autoindent shiftwidth=4
  145.  
  146. " C/C++注释
  147. set comments=://
  148.  
  149. " 修正自动C式样注释功能 <2005/07/16>
  150. set comments=s1:/*,mb:*,ex0:/
  151.  
  152. " 增强检索功能
  153. set tags=./tags,./../tags,./**/tags
  154.  
  155. " 保存文件格式
  156. set fileformats=unix,dos
  157.  
  158. " 文件被其他程序修改时自动载入
  159. set autoread
  160.  
  161. " 高亮字符,让其不受100列限制
  162. :highlight OverLength ctermbg=red ctermfg=white guibg=red guifg=white
  163. :match OverLength '/%101v.*'
  164.  
  165. " 总是显示状态行
  166. set laststatus=2
  167.  
  168. " 状态行颜色
  169. " highlight StatusLine guifg=SlateBlue guibg=Yellow
  170. highlight StatusLine guifg=SlateBlue guibg=White
  171. highlight StatusLineNC guifg=Gray guibg=White
  172.  
  173. " 我的状态行显示的内容(包括文件类型和解码)
  174. set statusline=[%n]%<%f%y%h%m%r%=[%b/ 0x%B]/ %l/ of/ %L,%c%V/ Page/ %N/ %P
  175.  
  176. " 设置命令行高度为2行
  177. set cmdheight=1
  178.  
  179. " 命令行补全
  180. set wildmenu
  181. " 自动补全括号,包括大括号
  182. :inoremap ( ()<ESC>i
  183. :inoremap ) <c-r>=ClosePair(')')<CR>
  184. :inoremap { {}<ESC>i
  185. :inoremap } <c-r>=ClosePair('}')<CR>
  186. :inoremap [ []<ESC>i
  187. :inoremap ] <c-r>=ClosePair(']')<CR>
  188. :inoremap < <><ESC>i
  189. :inoremap > <c-r>=ClosePair('>')<CR>
  190.  
  191.  
  192. " 打开文件时,总是跳到退出之前的光标处
  193. autocmd BufReadPost *
  194. / if line("'/"") > 0 && line("'/"") <= line("$") |
  195. /   exe "normal! g`/"" |
  196. / endif
  197.  
  198. " 用浅色高亮当前行
  199. if has("gui_running")
  200.     autocmd InsertLeave * se nocul
  201.     autocmd InsertEnter * se cul
  202. endif
  203.  
  204. filetype plugin on      "允许使用ftplugin目录下的文件类型特定脚本
  205. filetype indent on      "允许使用indent目录下的文件类型缩进
  206.  
  207. " 设置自动粘贴功能。
  208. set pastetoggle=<F3>
  209.  
  210. " 设置以缩进的方式自动折叠和设置快捷方式
  211. set foldmethod=indent
  212.  
  213. " map <F3> zO " 打开折叠
  214. map <F4> zc " 关闭折叠
  215. map <F5> zR    " 打开所有折叠
  216. map <F6> zM    " 关闭所有折叠
  217.  
  218. " 保存代码文件前自动修改最后修改时间
  219. au BufWritePre *.sh           call TimeStamp('#')
  220. au BufWritePre .vimrc,*.vim   call TimeStamp('"')
  221. au BufWritePre *.c,*.h        call TimeStamp('//')
  222. au BufWritePre *.cpp,*.hpp    call TimeStamp('//')
  223. au BufWritePre *.cxx,*.hxx    call TimeStamp('//')
  224. au BufWritePre *.java         call TimeStamp('//')
  225. au BufWritePre *.rb           call TimeStamp('#')
  226. au BufWritePre *.py           call TimeStamp('#')
  227. au BufWritePre Makefile       call TimeStamp('#')
  228. au BufWritePre *.php
  229.     /call TimeStamp('<?php //', '?>')
  230. au BufWritePre *.html,*htm
  231.     /call TimeStamp('<!--', '-->')
  232.  
  233. " 更改Leader为","
  234. let g:C_MapLeader = ','
  235.  
  236. " 设置显示字体
  237. if has("win32")
  238.     " set guifont=Courier_New:h11:cANSI
  239.     set guifont=YaHei/ Mono:h11
  240.     "set guifontwide=Microsoft/ Yahei/ Monotype:h11
  241.     "set guifont=YaHei/ Consolas/ Hybrid:h12
  242. endif
  243.  
  244. ab xmain int main(int argc, char *argv[])<cr>{<cr>}<up><cr>return
  245.  
  246. " 使用 murphy 调色板
  247. colo murphy
  248.  
  249. " 不要闪烁
  250. set novisualbell
  251.  
  252. " 能够漂亮地显示.NFO文件
  253. set encoding=utf-8
  254. function! SetFileEncodings(encodings)
  255.     let b:myfileencodingsbak=&fileencodings
  256.     let &fileencodings=a:encodings
  257. endfunction
  258. function! RestoreFileEncodings()
  259.     let &fileencodings=b:myfileencodingsbak
  260.     unlet b:myfileencodingsbak
  261. endfunction
  262.  
  263. au BufReadPre *.nfo call SetFileEncodings('cp437')|set ambiwidth=single
  264. au BufReadPost *.nfo call RestoreFileEncodings()
  265.  
  266. " 用空格键来开关折叠
  267. set foldenable
  268. set foldmethod=manual
  269. nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>
  270.  
  271. " 隐藏掉菜单和工具条。
  272. set guioptions-=m
  273. set guioptions-=T
  274. map <silent> <F2> :if &guioptions =~# 'T' <Bar>
  275.         /set guioptions-=T <Bar>
  276.         /set guioptions-=m <bar>
  277.     /else <Bar>
  278.         /set guioptions+=T <Bar>
  279.         /set guioptions+=m <Bar>
  280.     /endif<CR>
  281.  
  282. " 标签页设置
  283. if has("gui_running")
  284.     set showtabline=2
  285.     map! tn tabnew
  286.     nmap <C-c> :tabclose<CR>
  287. endif
  288.  
  289. " 标签页只显示文件名
  290. function ShortTabLabel ()
  291.     let bufnrlist = tabpagebuflist (v:lnum)
  292.     let label = bufname (bufnrlist[tabpagewinnr (v:lnum) -1])
  293.     let filename = fnamemodify (label, ':t')
  294.     return filename
  295. endfunction
  296.  
  297. set guitablabel=%{ShortTabLabel()}
  298.  
  299. " 使回格键(backspace)正常处理indent, eol, start等
  300. set backspace=eol,start,indent
  301.  
  302. " 允许backspace和光标键跨越行边界
  303. " set whichwrap+=<,>,h,l
  304.  
  305. " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
  306. set mouse=a
  307. set selection=exclusive
  308. set selectmode=mouse,key
  309.  
  310. " 启动的时候不显示那个援助索马里儿童的提示
  311. set shortmess=atI
  312.  
  313. " 通过使用: commands命令,告诉我们文件的哪一行被改变过
  314. set report=0
  315.  
  316. " 不让vim发出讨厌的滴滴声
  317. set noerrorbells
  318.  
  319. " 在被分割的窗口间显示空白,便于阅读
  320. set fillchars=vert:/ ,stl:/ ,stlnc:/
  321.  
  322. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  323. "                              搜索和匹配                                      "
  324. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  325. " 高亮显示匹配的括号
  326. set showmatch
  327.  
  328. " 匹配括号高亮的时间(单位是十分之一秒)
  329. set matchtime=3
  330.  
  331. " 在搜索的时候忽略大小写
  332. set ignorecase
  333.  
  334. " 不要高亮被搜索的句子(phrases)
  335. " set nohlsearch
  336.  
  337. " 在搜索时,输入的词句的逐字符高亮(类似firefox的搜索)
  338. set incsearch
  339.  
  340. " 输入:set list命令是应该显示些啥?
  341. set listchars=tab:/|/ ,trail:.,extends:>,precedes:<,eol:$
  342. " Tab补全时忽略这些忽略这些
  343. set wildignore=*.o,*.obj,*.bak,*.exe
  344. " 光标移动到buffer的顶部和底部时保持3行距离
  345. set scrolloff=3
  346.  
  347. "搜索出之后高亮关键词
  348. set hlsearch
  349.  
  350. nmap <silent> <leader><cr> :noh<cr>
  351.  
  352. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  353. "                              CTags的设定                                     "
  354. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  355. set tags=tags;
  356. " 按照名称排序
  357. let Tlist_Sort_Type = "name"
  358.  
  359. " 在右侧显示窗口
  360. let Tlist_Use_Right_Window = 1
  361.  
  362. " 压缩方式
  363. let Tlist_Compart_Format = 1
  364.  
  365. " 如果只有一个buffer,kill窗口也kill掉buffer
  366. let Tlist_Exist_OnlyWindow = 1
  367.  
  368. " 不要关闭其他文件的tags
  369. let Tlist_File_Fold_Auto_Close = 0
  370.  
  371. " 不要显示折叠树
  372. let Tlist_Enable_Fold_Column = 0
  373.  
  374. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  375. "                               快捷键映射                                     "
  376. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  377. "设置其他快捷键
  378. map <F7> :vsplit<ENTER>:edit `pwd`<ENTER>i
  379. "F7 打开左侧垂直窗口选择待编辑的文件
  380.  
  381. " 自动完成的缩进。
  382. if has("autocmd")
  383.     if has("gui")
  384.         autocmd WinLeave * set nocursorline nocursorcolumn
  385.         autocmd WinEnter * set cursorline cursorcolumn
  386.     else
  387.         autocmd WinLeave * set nocursorline nocursorcolumn
  388.         autocmd WinEnter * set cursorline nocursorcolumn
  389.     endif
  390.  
  391.     " Enable file type detection.
  392.  
  393.     " load view saved by the mkview command
  394.     autocmd FileType * loadview
  395.     autocmd FileType * set noexpandtab
  396.     autocmd BufWinEnter * loadview
  397.  
  398.     " Use the default filetype settings, so that mail gets 'tw' set to 72,
  399.     " 'cindent' is on in C files, etc.
  400.     " Also load indent files, to automatically do language-dependent indenting.
  401.     filetype plugin indent on
  402.  
  403.     " In text files, always limit the width of text to 78 characters
  404.     autocmd FileType text set textwidth=78 expandtab softtabstop=4
  405.     autocmd FileType sh set shiftwidth=4 expandtab softtabstop=4
  406.     autocmd FileType php set shiftwidth=4 expandtab softtabstop=4
  407.     autocmd FileType html set shiftwidth=4 expandtab softtabstop=4
  408.     autocmd FileType javascript set shiftwidth=4 expandtab softtabstop=4
  409.     autocmd FileType python set shiftwidth=4 expandtab softtabstop=4
  410.     autocmd FileType ruby set shiftwidth=4 expandtab softtabstop=4
  411.     autocmd FileType eruby set shiftwidth=4 expandtab softtabstop=4
  412.     autocmd FileType sql set shiftwidth=4 expandtab softtabstop=4
  413.  
  414.     " When editing a file, always jump to the last known cursor position.
  415.     " Don't do it when the position is invalid or when inside an event handler
  416.     " (happens when dropping a file on gvim).
  417.     autocmd BufReadPost *
  418.           / if line("'/"") > 0 && line("'/"") <= line("$") |
  419.           /   execute "normal g`/"" |
  420.           / endif
  421.  
  422.     augroup prog
  423.         " Remove all cprog autocommands
  424.         autocmd!
  425.  
  426.         " When starting to edit a file:
  427.         "   For C and C++ files set formatting of comments and set C-indenting on.
  428.         "   For other files switch it off.
  429.         "   Don't change the order, it's important that the line with * comes first.
  430.         autocmd FileType *      set formatoptions=tcoql nocindent comments&
  431.  
  432.         autocmd BufWinLeave *.sh,*.c,*.cpp,*.perl,*.py mkview
  433.         autocmd BufWinEnter *.sh,*.c,*.cpp,*.perl,*.py silent loadview
  434.  
  435.         function! CleverTab()
  436.             if strpart( getline('.'), 0, col('.')-1 ) =~ '^/s*$'
  437.             return "/<Tab>"
  438.         else
  439.             return "/<C-N>"
  440.         endfunction
  441.  
  442.         autocmd FileType c,cpp  noremap! <S-Tab> <C-R>=CleverTab()<CR>
  443.         autocmd FileType c,cpp  noremap! <C-]> <C-X><C-]>
  444.         autocmd FileType c,cpp  noremap! <C-F> <C-X><C-F>
  445.         autocmd FileType c,cpp  noremap! <C-D> <C-X><C-D>
  446.         autocmd FileType c,cpp  noremap! <C-L> <C-X><C-L>
  447.  
  448.         autocmd FileType c,cpp,sh,perl,python set fileformat=unix
  449.         autocmd FileType sh     set formatoptions=croql cindent comments=b:#
  450.         autocmd FileType c,cpp  set expandtab shiftwidth=4 softtabstop=4
  451.     augroup END
  452. endif " has("autocmd")
  453.  
  454. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  455. "                            PYTHON 相关的设置                                 "
  456. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  457. "Python 文件的一般设置,比如不要 tab 等
  458. "设置自动缩进为4,插入模式里: 插入 <Tab> 时使用合适数量的空格。
  459. "要插入实际的制表,可用 CTRL-V<Tab> 
  460. autocmd FileType python setlocal expandtab | setlocal shiftwidth=4 |
  461.     /setlocal softtabstop=4 | setlocal textwidth=76 |
  462.     /tabstop=4
  463.  
  464. "pydiction插件设置(需要安装pydiction插件)
  465.  
  466. "设置python的字典路径
  467. let g:pydiction_location = '~/.vim/skeleton/pydict/complete-dict'
  468.  
  469. "设置pydict的菜单高度
  470. let g:pydiction_menu_height = 10  
  471.  
  472. "Python Unittest 的一些设置
  473. "在编写 Python 代码及 unittest 测试时不需要离开 vim
  474. "键入 :make 或者点击 gvim 工具条上的 make 按钮就自动执行测试用例
  475. autocmd FileType python compiler pyunit
  476. autocmd FileType python setlocal makeprg=python/ ~/.vim/skeleton/alltests.py
  477. autocmd BufNewFile,BufRead test*.py setlocal makeprg=python/ %
  478.  
  479. "自动使用新文件模板(需要提前准备skeleton相关文件)
  480. autocmd BufNewFile test*.py 0r ~/.vim/skeleton/test.py
  481. autocmd BufNewFile alltests.py 0r ~/.vim/skeleton/alltests.py
  482. autocmd BufNewFile wx*.py 0r ~/.vim/skeleton/wxskeleton.py
  483. autocmd BufNewFile *.py 0r ~/.vim/skeleton/skeleton.py
  484.  
  485. "设置= + - * 前后自动空格
  486. "设置,后面自动添加空格
  487. au FileType python inoremap <buffer>= <c-r>=EqualSign('=')<CR>
  488. au FileType python inoremap <buffer>+ <c-r>=EqualSign('+')<CR>
  489. au FileType python inoremap <buffer>- <c-r>=EqualSign('-')<CR>
  490. au FileType python inoremap <buffer>* <c-r>=EqualSign('*')<CR>
  491. au FileType python inoremap <buffer>/ <c-r>=EqualSign('/')<CR>
  492. au FileType python inoremap <buffer>> <c-r>=EqualSign('>')<CR>
  493. au FileType python inoremap <buffer>< <c-r>=EqualSign('<')<CR>
  494. au FileType python inoremap <buffer>: <c-r>=Swap()<CR>
  495. au FileType python inoremap <buffer>, ,<space>
  496.  
  497.  
  498. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  499. "                        脚本内部用到的自定义函数                              "
  500. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  501. "
  502. "函数后面加上!是防止vimrc文件重新载入时报错
  503. "实现光标位置自动交换:) -->  ):
  504. function! Swap()
  505.     if getline('.')[col('.') - 1] =~ ")"
  506.         return "/<ESC>la:"
  507.     else
  508.         return ":"
  509.     endif
  510. endf
  511.  
  512. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  513. "
  514. "实现+-*/前后自动添加空格,逗号后面自动添加空格,适用python
  515. "支持+= -+ *= /+格式
  516.  
  517. function! EqualSign(char)
  518.     if a:char  =~ '='  && getline('.') =~ ".*("
  519.         return a:char
  520.     endif
  521.     let ex1 = getline('.')[col('.') - 3]
  522.     let ex2 = getline('.')[col('.') - 2]
  523.  
  524.     if ex1 =~ "[-=+><>///*]"
  525.         if ex2 !~ "/s"
  526.             return "/<ESC>i".a:char."/<SPACE>"
  527.         else
  528.             return "/<ESC>xa".a:char."/<SPACE>"
  529.         endif
  530.     else
  531.         if ex2 !~ "/s"
  532.             return "/<SPACE>".a:char."/<SPACE>/<ESC>a"
  533.         else
  534.             return a:char."/<SPACE>/<ESC>a"
  535.         endif
  536.     endif
  537. endf
  538.  
  539. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  540. "
  541. "实现括号的自动配对后防止重复输入),适用python
  542. function! ClosePair(char)
  543.     if getline('.')[col('.') - 1] == a:char
  544.         return "/<Right>"
  545.     else
  546.         return a:char
  547.     endif
  548. endf
  549.  
  550. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  551. "
  552. "SwitchToBuf()实现它在所有标签页的窗口中查找指定的文件名,如果找到这样一个窗口,
  553. "就跳到此窗口中;否则,它新建一个标签页来打开vimrc文件
  554. "上面自动编辑.vimrc文件用到的函数
  555. function! SwitchToBuf(filename)
  556.     let bufwinnr = bufwinnr(a:filename)
  557.     if bufwinnr != -1
  558.     exec bufwinnr . "wincmd w"
  559.         return
  560.     else
  561.         " find in each tab
  562.         tabfirst
  563.         let tab = 1
  564.         while tab <= tabpagenr("$")
  565.             let bufwinnr = bufwinnr(a:filename)
  566.             if bufwinnr != -1
  567.                 exec "normal " . tab . "gt"
  568.                 exec bufwinnr . "wincmd w"
  569.                 return
  570.             endif
  571.             tabnext
  572.             let tab = tab + 1
  573.         endwhile
  574.         " not exist, new tab
  575.         exec "tabnew " . a:filename
  576.     endif
  577. endfunction
  578.  
  579. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  580. "
  581. "Last change用到的函数,返回时间,能够自动调整位置
  582. function! TimeStamp(...)
  583.     let sbegin = ''
  584.     let send = ''
  585.     if a:0 >= 1
  586.         let sbegin = a:1.'/s*'
  587.     endif
  588.     if a:0 >= 2
  589.         let send = ' '.a:2
  590.     endif
  591.     let pattern =  'Last Change: ./+'
  592.         /. send
  593.     let pattern = '^/s*' . sbegin . pattern . '/s*$'
  594.     let now = strftime('%Y-%m-%d %H:%M:%S',
  595.         /localtime())
  596.     let row = search(pattern, 'n')
  597.     if row  == 0
  598.         let now = a:1 .  ' Last Change:  '
  599.             /. now . send
  600.         call append(2, now)
  601.     else
  602.         let curstr = getline(row)
  603.         let col = match( curstr , 'Last')
  604.         let spacestr = repeat(' ',col - 1)
  605.         let now = a:1 . spacestr . 'Last Change:  '
  606.             /. now . send
  607.         call setline(row, now)
  608.     endif
  609. endfunction

Gvim ctags配置 1. 下载安装gvim,并将gvim的安装目录的路径加到系统/用户的path里面。 并编辑_vimrc文件,添加以下内容: set tags=tags; set autochdir 2. 下载ctags,并将其中的ctags.exe提取到gvim的安装目录。(也放在C:\window\system32\目录下) 3.  配置_vimrc,本文最后将贴一个个人觉得比较好用的配置 阅读详情

相关推荐

GVIM语法自动匹配设置文件

如果你是个uvm验证人员,或者design,你肯定用过%来自动匹配从Begin到end的跳转,写perl的时候想知道哪个括号和哪个括号是匹配对应的,或者复制的时候用y%来复制一段,或者输入begin敲回车会自动联想出end等等。 把这个文件放入.vim/indent/ 下面,.vimrc里加上这句话autocmd BufRead,BufNewFile *.v,*.vh,*.sv,*.svh, so ~/.vim/indent/verilog_systemverilog.vim

GVIM 配置 for begin/end class/endclass 等配对

有时候我们的代码很长,或者结构比较复杂,多个if/else 或者begin/end 快嵌套,为了阅读方便,利用gvim插件实现块跳转还是很有实用性的,下面的.vimrc的配置,简单方便。

分享记录一下工作中遇到的相关知识 2160

鱼眼相机矫正实战:除了棋盘格,试试横向展开和经纬度法(OpenCV4/C++实现对比)

本文对比了鱼眼相机矫正的三种主流方法:棋盘格标定法、横向展开法和经纬度法,通过OpenCV4/C++实战代码解析,帮助开发者在自动驾驶、VR全景拼接和安防监控等场景中选择最适合的技术方案。重点分析了各方法的精度、处理速度和适用场景,为工程实践提供实用指导。

weixin_29032489的博客 284

008--我的GVim配置

<br />我的GVim配置<br />  工作中,我大部分时间都是和VIM打交道的,甚至Windows下的编程也开始完全用GVIM替代Editplus。这两天对自己的vimrc文件做了一下整理。同时给每一行的配置增加了注释。整理完成之后,好用多了,因为借鉴了很多网友的经验,所以本着分享的精神公布出来,希望有朋友能用上。<br />  另外,我这份_vimrc配置使用的字体是:YaHei Mono,如果您没有此字体,可以到这里下载:(下载YaHei Mono字体)。下载后放到Windows文件夹下的font

559

CTF---Web---文件包含---01

文章目录前言一、题目描述二、解题步骤1.查看源代码2.文件包含(/etc/passwd)3.解码总结 前言 题目分类: CTF—Web—文件包含 一、题目描述 题目:提示寻找passwd文件 二、解题步骤 1.查看源代码 提示所有图片存储路径是download.php?name=img, 此时name参数的存在就提示此题可能为“文件包含”。 2.文件包含(/etc/passwd) 两种查看方式: 2.1、访问view-source:http://192.168.87.180/download.php

qq_22160557的博客 1391

新手必看:如何用R/qtl快速完成QTL定位分析(附实战代码)

本文为新手提供了使用R/qtl进行QTL定位分析的完整实战指南。内容涵盖从环境搭建、数据准备与清洗,到核心分析流程(包括遗传图谱计算、单QTL扫描、置换检验确定阈值)以及进阶结果可视化的全步骤。通过清晰的代码示例,帮助读者快速掌握这一数量遗传学关键分析技术,实现从数据到QTL峰值的完整分析闭环。

y7z8a的博客 502

vim 命令状态下,使用%实现begin,end匹配

如果有多个配对字符层层递进包起来,此插件是从最里层开始逐对配对的,若出现缺少情况,最外层的不会跳,即没有与其配对的字符。问题记录:输入%不跳,debug后发现是.vimrc中将filetype设置成了verilog,我打开的是systemverilog文件,改为 set filetype=systemverilog后就可以了。copy两个文件: matchit.vim matchit.txt 到路径:~/.vim/plugin/.可自行添加/删除 配对字符。

m0_63203686的博客 641

Python海康相机api---超简单入坑学习必看

海康官网下载相机驱动​安装好以后找到Python的开发文件目录参考:D:\MVS\MVS\Development\Samples\Python\MvImport这几个文件很重要,想调用海康相机取图会用到.​为了写代码方便可以把这几个文件拷贝一下,跟你的api主文件放在同一个文件夹下可以减少80%的烦恼.​。

weixin_59360687的博客 3480

vim 实现begin end 配对 使用matchit插件

matchit这个插件,是vim自带的,但是默认不安装。在vim中默认可以用%来实现括号之间的跳转,但是有了这个插件可以设置任意想跳转的标记。在linux中敲vi打开一个空白的文件 :help matchit-install可以看到安装matchit的步骤就是在cd.vim文件夹下mkdir ~/.vim/plugincp $VIMRUNTIME/mac...

weixin_30776545的博客 1233

(10)Proteus 8.9上的STM32仿真系列(HAL)---freertos

实验设计:通过cubemxide生成freertos工程,然后创建一个 pc13 led灯间隔200ms闪烁的任务。非常遗憾的是proteus8.9仿真失败,实物上没有问题,但还是把流程过一遍。 一、原理图 实物是淘宝上stm32f103 c8t6的核心板,proteus上没有这个芯片,这里图上大概表示一下,用的是核心板自带的pc13引脚的led灯。 二、cubemxide配置 1.RCC如之前工程一样配置 2、配置SYS timebase Source不要使用systick,自己选择一个定时器,我这

qq_35442550的博客 7344

(第78天)DB RU 补丁升级:19C 升级到 19.22

目前 Oracle 19C 是最新的稳定支持的版本,生产环境中使用的越来越多。当然,随着客户使用量的增多,自然无可避免的产生了很多 BUG,Oracle 每季度都会发布一个 RU 补丁来修复当前季度所产生的一些重要 BUG 补丁。作为 DBA,DB 补丁修复必然是需要掌握的一项技能。本文将介绍如何将数据库升级到最新的 RU 版本。

LuciferLiu_DBA 846

Gvim的安装及配置

同步发布在个人博客:https://www.zhyong.cn/posts/876e/ Gvim是vim下的Windows版本,是一个GUI程序。Vim是从vi发展出来的一个文本编辑器,具有代码补完、编译及错误跳转等方便编程的功能,在程序员中被广泛使用。Vim的学习曲线陡峭,但是真正熟悉之后,会极大提高我们查看、编辑文本的效率。vim有丰富的插件,其自定义程度极高,可通过修改配置文件实现我们想...

星辰大海 2万+

地球引擎初级教程:Python API 的安装和介绍

地球引擎的 Python API 提供了许多功能和工具,用于访问和处理地理空间数据。连接到地球引擎在编写地球引擎的 Python 脚本时,首先需要连接到地球引擎服务器。import ee # 初始化地球引擎 ee . Initialize()这将初始化地球引擎并建立与服务器的连接。加载和显示图像使用地球引擎的 Python API,您可以加载和显示卫星图像。import ee# 初始化地球引擎# 加载 Landsat 8 影像# 显示影像print('影像 URL:', url)

UePostscript的博客 1008

GVIM技巧系列-GVIM安装与配置

前言 本文主要介绍Windows版GVIM的安装以及配置。 一、GVIM的安装 1.访问官方网址下载安装包 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarnings('ignore') import ssl ssl._create..

HeHeHe 1万+

数据分析必问:Pandas面试题及参考答案

DataFrame是Pandas库中的一个核心数据结构,它类似于Excel中的表格,可以存储不同类型的数据。在Pandas中,抽样操作通常很简单,但是需要根据数据的特点和分析的需求来选择合适的抽样方法。数据标准化和归一化是数据预处理中常用的技术,目的是将数据调整到一个合适的范围内,以消除不同特征量纲和数值范围的差异,从而保证模型训练的有效性。CSV文件是一种文本文件,其中的数据以逗号分隔。不平衡数据集指的是数据集中各类别样本的数量差异较大的情况,这可能导致模型训练出现偏差,影响模型的泛化能力。

大模型大数据攻城狮的专栏 3009

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

linux中gvim配置

linux系统gvim界面及使用配置

qq_45964597的博客 9938

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

VIM和GVIM 配置总结

1.前言 关于如何VIM的配置,网上已经有很多相关教程,详细的教程只会是重复,本文仅介绍本人的配置心得和觉得需要注意的地方。详细可以教程可以参考http://blog.youkuaiyun.com/wooin 2.VI、VIM与GVIM的区别 VIM是VI的升级版,且完全兼容VI指令,GVIM跟VIM的区别是VIM要求全部键盘操作,而GVIM可以使用鼠标进行可视化操作。关于GVIM与VIM,

我叫河蟹 4万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Windows Gvim工程配置

1. 安装gvim 下在安装gvim后,默认路径为C:\Program Files\Vim,即$VIM变量保存的值 其中: vim72为gvim 系统默认目录, vimfiles 为gvim 用户设定目录 2. 安装插件 下载插件放在C:\ProgramFiles\Vim\vimfiles\plugin目录下 可以下载自己喜欢的vim配色放在C:\Program Files\

永久指针 5753

gvim配置

导语 Linux才刚刚使用得上瘾,但各种客观原因,现在被迫要换回Windows了,我相信是暂时的。在Linux下习惯了使用Vim文本编辑器,回到Windows后虽然也有我很喜欢的Notepad++,但是也不想放弃Vim,所以找空将Vim配置好了。或许是喜欢前端的缘故,我容不了我工作的工具是丑陋的,不管他有多么强大,不然会影响我工作的心情。 Vim是Linux上的著名的文本编辑器,他是早

qinshang007的专栏 1083

gvim 配置_在Windows平台使用GVim

Vim是什么?在Linux系统中,如果想要编辑一个文件,那么就要使用vi或者vim。通俗来讲,vi/vim就类似于windows系统中的记事本,属于最基本的文本编辑器。不过,和记事本不同,Vim可以通过一系列命令或者命令组合来提高用户的编辑效率。对于大多数人来说,记忆这些命令是一件比较困难的事情,但是,高成本也会带来高收益。Vim是值得投资的!GVim是什么?GVim是vim的一个图...

weixin_39708502的博客 1283

gvim for verilog简易配置

文章目录 前言 一、gvim的主题和字体资源 二、gvim编辑器基本配置 三、gvim针对verilog配置 总结 前言 分别介绍了gvim的主题和字体资源推荐,gvim编辑器基本配置和针对verilog的配置。 以下为正文 一、gvim的主题和字体资源 1、主题(color scheme)资源 在gvim官网中,提供了较多的主题资源可供选择,主题资源,以lucius为例,在下载资源(*.vim)后,将其放入vim安装路径下color文件夹中,并在gvim的配置......

mingke_1的博客 9562

gvim【三】【_vimrc配置】

GVIM可以通过修改vimrc来灵活配置你的编辑器。 这里先给出我的vimrc: "设置背景主题 "colo Candy set nocompatible " Vim with all enhancements source $VIMRUNTIME/vimrc_example.vim " Remap a few keys for Windows behavior source $VIMRUNTIME/mswin.vim set expandtab "set tabstop=4 set guifont

凳子花❀的博客 5934

新手配置GVIM

1.中文乱码问题 打开VIM安装根目录下_vimrc,在最后加入如下代码: set encoding=utf-8 set termencoding=utf-8 set fileencoding=chinese set fileencodings=ucs-bom,utf-8,chinese set langmenu=zh_CN.utf-8 source $VIMRUNTIME

1138

Gvim的详细配置

今天一时兴起想要装个Gvim来打代码,但是发现网上的配置教程几乎都是一字不差的复制粘贴而且又是年代久远,里面那些www.vim.org的文件都下不了(好像因为现在要翻墙了的缘故,几年前貌似不用),所以找齐所需的文件还是比较麻烦的,而且里面有一些地方讲得并不是十分的清楚,就发这篇博文来详细介绍一下怎么配置Gvim跟大家分享一下。

acelove40的博客 4932

GVIM配置

<br />说明:本文是作者在完全按照著名的《手把手教你把Vim改装成一个IDE编程环境》一文,在Windows XP上用gvim建立IDE环境时所作的备忘。<br /> 原作地址:http://blog.youkuaiyun.com/wooin/archive/2007/10/31/1858917.aspx 。<br /><br />0.准备软件及插件。<br /> (a)gvim72.exe 地址ftp://ftp.vim.org/pub/vim/pc/gvim72.exe 。<br /> (b)vi

rainmarker的专栏 1854
上一篇: 我的Gvim配置
下一篇: 一个perl 引用的资料
study16
博客等级 码龄18年 18粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值