GVIM在今天早上算是做好了最基本的配置,可以拿来写代码做算法题了。上次说到不知道配色文件在哪里配置=,=, 其实这是个小白问题,就在 /usr/share/vim/vim71/colors下面(vim71需要对你安装的gvim版本)。
Netbeans的中文显示问题,也算解决了,具体见下帖 : 安装日文支持以后NetBeans界面的字符乱码。当然,实际上跟日文支持是没有关系的。Netbeans的中文显示问题有很多解决方案,而且并非全部都很有效,所以碰到的话,还是需要都尝试一下。
尽管搞定了中文显示问题,但是netbeans下面的字体显示仍然非常难看,google了下ubuntu中文社区,据说可以通过修改配置文件完成。目前对linux的文件配置机制还不是很熟悉,而且主要还是用gvim来编码,因此把这个问题先暂且搁下。留下一个链接,方便以后解决:[问题][Netbeans] JRE[英文]字体配置问题
继续转强帖:
makefile编写;
两篇很牛的vim使用技巧(1);
两篇很牛的vim使用技巧(2)。
最后分享一下我的gvim配置文件和配色文件代码。
Update at 2010.Apr.13: 这两个文件因为会经常修改,我自己使用的最新版本将会放在DropBox上,随时供需要的人下载。也请路过的大牛多多指教。Download via .vimrcctw.vim
ps. 如果下载后的配置文件中有^M字符,可以在gvim的命令模式下用下面这个命令来清除
- :%s/[Ctrl-v][Enter]//g
- " $HOME/.vimrc
- " Collected and modified by CTW
- " Basics {
- " 关闭兼容模式
- set nocompatible
- " 设定文件浏览器目录为当前目录
- set bsdir=buffer
- set autochdir
- " 设置编码
- set enc=utf-8
- " 设置文件编码检测类型及支持格式
- set fencs=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
- " 指定菜单语言
- set langmenu=zh_CN.UTF-8
- source $VIMRUNTIME/delmenu.vim
- source $VIMRUNTIME/menu.vim
- " 与windows共享剪切板
- set clipboard+=unnamed
- " 键盘操作
- map <up> gk
- map <down> gj
- " 开放光标移动
- set whichwrap=b,s,< ,>,[,]
- " 命令行高度
- set cmdheight=1
- " 中文帮助
- if version > 603
- set helplang=cn
- endif
- " 增强检索功能
- set tags=./tags,./../tags,./**/tags
- " 保存文件格式
- set fileformats=unix
- " }
- " Visual {
- " 设置配色文件
- colo ctw
- " 设置开启语法高亮
- syntax on
- " 设置初始窗体行数列数
- set lines=36
- set columns=124
- " font
- set guifont=Monaco
- " 查找结果高亮度显示
- set hlsearch
- " tab宽度
- set tabstop=4
- set cindent shiftwidth=4
- set autoindent shiftwidth=4
- " }
- " Autocommands {
- " Enable load plugin files
- filetype plugin on
- " 自动补全
- filetype plugin indent on
- " 只在下列文件类型被侦测到的时候显示行号,普通文本文件不显示
- if has("autocmd")
- autocmd FileTypexml,html,c,cs,java,perl,shell,sh,bash,cpp,python,vim,php,ruby set number
- autocmd FileType xml,html vmap <c -o> <esc>'<i <!--<ESC>o<esc>'>o-->
- autocmd FileType java,c,cpp,cs vmap <c -o> <esc>'<o /*<ESC>'>o*/
- autocmd FileType html,text,php,vim,c,java,xml,bash,shell,perl,pythonsetlocal textwidth=100
- autocmd Filetype html,xml,xsl source $VIMRUNTIME/plugin/closetag.vim
- " Error happend, repair needed
- " autocmd BufReadPost *
- " / if line("'/"") > 0 && line("'/"") < = line("$") |
- " / exe "normal g`/"" |
- " / endif
- endif " has("autocmd")
- " 自动完成
- autocmd FileType python set omnifunc=pythoncomplete#Complete
- autocmd FileType javascrīpt set omnifunc=javascrīptcomplete#CompleteJS
- autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
- autocmd FileType css set omnifunc=csscomplete#CompleteCSS
- autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
- autocmd FileType php set omnifunc=phpcomplete#CompletePHP
- autocmd FileType c set omnifunc=ccomplete#Complete
- autocmd FileType java set omnifunc=javacomplete#Complete
- " auto complete
- " inoremap } }<esc>: <cr>O
- " }
- " C/C++ Programming {
- " C/C++注释
- set comments=://
- " Enable OmniCppComplete
- set nocp
- set completeopt=menu
- " Config OmniCppComplete
- " autocomplete with .
- let OmniCpp_MayCompleteDot = 1
- " autocomplete with ->
- let OmniCpp_MayCompleteArrow = 1
- " autocomplete with ::
- let OmniCpp_MayCompleteScope = 1
- " select first item (but don't insert)
- let OmniCpp_SelectFirstItem = 2
- " search namespaces in this and included files
- let OmniCpp_NamespaceSearch = 2
- " show function prototype (i.e. parameters) in popup window
- let OmniCpp_ShowPrototypeInAbbr = 1
- " Add STL tags
- set tags+=~/.myTags/stl.tags
- " 修正自动C式样注释功能 <2005/07/16>
- set comments=s1:/*,mb:*,ex0:/
- " 临时:使用pthread的C源代码的编译
- map <f4> :call PTHCompileRunGPP()<cr>
- func! PTHCompileRunGPP()
- exec "w"
- exec "!gcc -D_REENTRANT % -o %< -g -lpthread"
- endfunc
- " C的编译和运行
- map <f5> :call CCompileRunGpp()</cr><cr>
- func! CCompileRunGpp()
- exec "w"
- exec "!gcc % -o %< -ansi -g -Wall "
- endfunc
- " C++的编译和运行
- map <f6> :call CPPCompileRunGpp()</cr><cr>
- func! CPPCompileRunGpp()
- exec "w"
- exec "!g++ % -o %< -ansi -g -Wall "
- endfunc
- " CTags
- set completeopt=longest,menu
- " TagList
- " 按照名称排序
- let Tlist_Sort_type = "name"
- " 如果只有一个Buffer,kill窗口时也kill掉buffer
- let Tlist_Exit_OnlyWindow = 1
- " 只显示一个文件的Tag
- let Tlist_Show_One_File=1
- " Tlist Auto Open
- let Tlist_Auto_Open=1
- " }
vim括号自动完成
Posted by CD in Geek Stuff on March 21, 2009
今天早上脑子很乱,从8点钟起床到10:30都不知道自己干了什么事情……
想起下午还有比赛,于是想找点水题做做,练练手感。
在写2120的时候突然想给Gvim弄个map auto complete的功能,于是去网上搜了下代码,发现有好几个版本。其中有一个是传说中的最强vim配置,已经久仰大名了,于是知道相关的那段代码,“拿来主义”了一下,再稍微修改了点,用用还是比较满意。
贴下代码,具体的机制我不是很清楚,好像就是如果输入字符匹配了的话,自动执行inoremap后的命令吧,跟宏有点像。熟悉vim命令的coder应该都大致能看明白什么意思。
- " map auto complete
- inoremap ( ()<esc>:let leavechar=")"<cr>i
- inoremap [ []<esc>:let leavechar="]"<cr>i
- inoremap { {<esc>o}<esc>:let leavechar="}"<cr>O
- "inoremap { {}<esc>:let leavechar="}"<cr>i
- inoremap ' ''<esc>:let leavechar="'"<cr>i
- inoremap " ""<esc>:let leavechar='"'<cr>i
- au BufNewFile,BufRead *./(vim/)/@! inoremap " ""<esc>:let leavechar='"'<cr>i
- au BufNewFile,BufRead *./(txt/)/@! inoremap ' ''<esc>:let leavechar="'"<cr>i
- imap <m-l> <esc>:exec "normal f" . leavechar<cr>a
- imap <d-l> <esc>:exec "normal f" . leavechar<cr>
弄好后,我还想再实现这样的宏,就是一对中间没有内容的括号,删除左边的那个括号时,自动删除右边那个,不过我还没找到可以参考的代码。就先这样用着吧,有空上社区问问。