我的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

VS2022如何兼容老项目?.NET Framework 4.0/4.5安装避坑指南

本文提供了在Visual Studio 2022中兼容和维护.NET Framework 4.0/4.5等老旧项目的完整解决方案。针对VS2022无法直接识别旧框架的核心问题,文章详细剖析了原因,并重点推荐通过官方NuGet包安全获取引用程序集的方法,给出了从下载、解压到部署至标准目录的详细步骤。同时,文章还深入探讨了项目文件格式过旧、NuGet包还原失败等进阶问题的排查与解决策略,旨在帮助开发者高效、稳定地在现代开发环境中维护历史代码库。

weixin_27734811的博客 515

008--我的GVim配置

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

559

从零开始:用Neo4j构建你的第一个知识图谱(附完整代码示例)

本文提供了一份从零开始的Neo4j知识图谱构建实战指南。通过一个“经典科幻电影宇宙”的具体案例,手把手教你安装环境、设计图谱模式,并使用Cypher查询语言完成节点与关系的创建、数据查询及可视化,帮助你快速掌握自下而上构建知识图谱的核心技能。

weixin_29053073的博客 474

FortiClient EMS实战:从安装到配置的全流程优化指南

本文详细解析了FortiClient EMS 7.0版本的部署与优化全流程,帮助企业构建零信任终端安全体系。从环境规划、高效安装、终端纳管到高级运维,提供实战指南和优化技巧,特别适用于Windows Server环境,助力企业提升终端安全管理效率。

weixin_29325007的博客 549

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

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

m0_63203686的博客 641

Type-C快充移动电源芯片避坑指南:IP5356配置全流程(支持PD3.0)

本文详细解析了英集芯IP5356芯片在Type-C快充移动电源中的应用,提供了从芯片选型、原理图设计、PCB布局到PD协议调试的全流程实战指南。文章重点剖析了如何避免散热、EMI及协议握手等常见设计陷阱,并分享了量产前的关键测试验证方法,旨在帮助硬件开发者高效打造稳定可靠的快充产品。

weixin_29235525的博客 856

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

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

weixin_30776545的博客 1233

深信服aCloud虚拟存储VS3.0实战:从数据分片到仲裁机制的全流程解析

本文深度解析了深信服aCloud虚拟存储VS3.0的核心架构与生产级实践。从数据分片、条带化写入、多副本机制到智能缓存分层,详细阐述了其如何实现高性能与高可靠性的平衡。同时,深入剖析了动态均衡、平滑扩容以及故障恢复与仲裁机制,为运维人员和技术决策者提供了在超融合基础架构(HCI)中部署和管理虚拟存储的实战指南。

net55的博客 588

基于STM32、HAL库的TPL0501数字电位器驱动程序设计

@param value 输出值(0-255)* @param hdev TPL0501句柄。* @param hdev TPL0501句柄。* @brief 获取TPL0501当前设置值。* @param hdev TPL0501句柄。* @brief 获取TPL0501当前设置值。* @brief 设置TPL0501输出值。* @brief 设置TPL0501输出值。* @return 当前值(0-255)* @brief 初始化TPL0501。* @brief 初始化TPL0501。

corlin6688的博客 1027

Gvim的安装及配置

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

星辰大海 2万+

基于物联网的门禁与考勤系统(阿里云)_81

本课题设计的基于物联网的门禁与考勤管理系统,结合现代信息技术,利用指纹识别、射频卡、密码输入和远程控制等多种开锁方式,提升门禁系统的安全性和灵活性;同时,通过物联网平台进行数据上传和远程管理,极大提高了管理效率。通过智能化的考勤功能,系统可以实时记录员工的出入情况,并通过云平台进行远程查询和管理,推动门禁与考勤管理的数字化、智能化和高效化。

1万+

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万+

Unity Shader之路(一)什么是Unity Shader?

Unity Shader前言什么是UnityShaderUnity Shader和材质的关系 前言 众所周知,要想当游戏开发工程师,Unity中的Shader编写不得不摸,这一系列文章我将描写我的Shader学习之路,致敬冯乐乐的书Unity Shader入门精要,此篇什么是Unity Shader?希望能给后人一点方向 我们刚开始接触Unity的时候,总是会遇到材质,但是不了解材质都是什么,为什么可以在很多材质中选择,为什么有时候选择了其他材质后就不能达到我们想要的结果,为什么资源商店有那么多的材质,山.

TurboQ珞珈 2241

IDEA的使用指南

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

linux中gvim配置

linux系统gvim界面及使用配置

qq_45964597的博客 9938

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

VIM和GVIM 配置总结

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

我叫河蟹 4万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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
上一篇: 不能不会的东西-------- VI/VIM
下一篇: 我的Gvim配置
study16
博客等级 码龄18年 18粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值