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

无感健康监测的未来:毫米波雷达如何重新定义睡眠科技与居家养老

毫米波雷达技术正重新定义无感健康监测,特别是在睡眠科技与居家养老领域。通过精准监测呼吸、心率和体动,无需穿戴设备即可实现临床级精度。结合合宙Air700E开发板,构建了完整的远程看护解决方案,为老年人提供跌倒检测、异常报警等安全保障,同时保护用户隐私。

cake8的博客 570

008--我的GVim配置

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

559

速腾R128雷达+海康全景相机ROS数据采集避坑实录:从‘雷达不转’到MATLAB标定的完整流程

本文详细记录了速腾R128激光雷达与海康威视全景相机在ROS环境下的数据采集与MATLAB标定全流程。从硬件配置的常见陷阱(如雷达旋转参数设置)、驱动编译的依赖管理,到多传感器同步的实战技巧和MATLAB标定方法,提供了完整的避坑指南和技术方案。特别针对RoboSense R128雷达和海康相机的特殊需求给出了具体解决方案。

weixin_28717807的博客 1221

AppleAccount注册之生成sign

根据日志发现:签名来自于AuthKit的-[AKAppleIDServerResourceLoadDelegate signRequest:withCompletionHandler:]的一个block,这个库是放在共享缓存库里的,找到提前准备好的IDA文件,先去找主方法,根据分析IDA,最后找到了实际生成签名的方法:t1。,接受五个参数,context(之前讲的获取到的客户端证书),bytes(待加密的body字节),length(字节长度),以及两个接受结果的参数,直接进这个方法看,

2503_90751938的博客 1009

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

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

m0_63203686的博客 641

ThinkBook 16 2024 Ubuntu驱动全攻略:从无线网卡到触控板

本文详细介绍了ThinkBook 16 2024在Ubuntu系统下的驱动问题解决方案,涵盖无线网卡、蓝牙、显卡和触控板等关键硬件的驱动修复步骤。通过具体命令和配置指南,帮助用户快速解决兼容性问题,提升Ubuntu在ThinkBook上的使用体验。

weixin_29200741的博客 830

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

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

weixin_30776545的博客 1233

Jetson 平台编译安装 FFmpeg 7.1(支持 Nvmpi + SRT + x265)

摘要: 本文详细介绍了在NVIDIA Jetson平台上编译FFmpeg 7.1并集成关键功能的全过程。通过补丁方式加入Nvmpi实现硬件加速支持,同时编译集成x265编码器和SRT低延迟传输协议。步骤涵盖:1)安装x265编码器;2)配置SRT协议支持;3)编译jetson-ffmpeg的Nvmpi接口;4)定制化编译FFmpeg 7.1;5)验证模块集成情况。最终实现支持硬件编解码、高效HEVC压缩和可靠推流的增强版FFmpeg,为Jetson平台的音视频处理提供完整解决方案。

J。 345

智能筛选栏 SmartFilterBar 全面解析与实战指南

SmartFilterBar 把复杂的检索界面“模板化”,让开发者聚焦业务逻辑与后端数据质量,而非 UI 小细节。通过精准运用 CDS 注解与 OData 元数据,它能在几毫秒内拼装出专业级筛选体验;结合事件钩子与控制配置,又足以满足极端个性化需求。拥抱 SmartFilterBar,意味着在 Fiori 生态中以最少代码赢得最快价值交付——这正是现代企业应用开发追求的极致效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 404

Gvim的安装及配置

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

星辰大海 2万+

两点调制原理以及RF DAC和PLL SDM两条输入路径理解

特性数据本质原始数字比特流 (0/1)平滑后的预失真波形数据连接对象Σ-Δ调制器 (SDM)的小数输入RF DAC在系统中的角色主调制路径:通过改变PLL分频比产生频率偏移辅助补偿路径:通过RF DAC产生补偿电压,校正PLL失真可否加入延时可以且必须。用于数字时序对齐,对性能无影响。绝对不可以。会导致补偿失配,严重破坏信号频谱。功能目标实现数字域的频率调制确保模拟域的波形和频谱完美因此,在您所描述的这种先进发射机架构中,2-point数据是数字指令,送给SDM;

m0_49540263的博客 607

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

cefsharp139-H264-X86升级测试(MP4)-支持PDF预览-chromium7258定制浏览器

CEFSharp 139.x版本升级测试已完成,该版本支持64位系统(需选择x86架构)及WinForms.NETCore(.NET8)。升级内容包括H264文件编译支持Mp4播放,并覆盖WPF、WinForms等平台。文中提供了版本替换方法及不同系统的版本建议(如Win10/11推荐111/133/134/139版)。此外,文章还列举了CEFSharp的多种应用场景,包括浏览器开发、B/S系统封装、资源抓取等,同时指出当前版本均需自行编译以支持MP4播放。详细图文说明及旧版链接已附在正文中。

无线智能模块 可视DIY智能专家 1310

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

linux中gvim配置

linux系统gvim界面及使用配置

qq_45964597的博客 9940

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

VIM和GVIM 配置总结

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

我叫河蟹 4万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

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的博客 1284

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值