注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

guoyoooping的博客

audio,picture, text and video

 
 
 

日志

 
 

Vim学习笔记9: 个性化你的Vim  

2010-01-31 19:27:51|  分类: Vim: 学习Vim的心 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
#Author: ypguo<guoyoooping@163.com>
#Date: 2010/01/31
#Version: 1.0

[目录] Created by TxtBrowser
Vim学习笔记9_个性化你的Vim.txt
  content
    1. 映射保存和退出命令
    2. 用系统粘贴板作为默认的粘贴板
    3. 映射实现滚屏功能
    4. 用逗号键做为<Leader>
    5. 用<ALT> + 数字切换Tab窗口
    6. 一套配置用在所有的操作系统下
    7. 关于Vim打印
    8. 让Vim记住上次关闭时的状态和光标位置
    9. 文本相关
    10. 编程相关

1. 映射保存和退出命令

Vim的带模式编辑引来无数好评, 也有批评声不断. 总的来说我是赞成的, 但是对的Vim快
捷键的设置却遭受了很多痛苦, 最难受的就是对于小拇指的使用太多了. 比如最常用的退
出命令 ":q<ENTER>", 需要敲4次键("SHIFT" - ";" - "q" - "ENTER"), 4次按键全是小拇
指. 另外一个最常用的命令保存命令"w<ENTER>"也好不到哪里去, 4次按键3次小拇指参与.
无耐之下只好把他们映射成:

Reference from My ".vimrc":
|
|"quit
|noremap qq <ESC>:q<CR>
|"save
|noremap t <ESC>:w<CR>

至于原来t命令的功能只好放弃.

2. 用系统粘贴板作为默认的粘贴板

初用Vim的人一定对如何把Vim里的东东拷贝出来很犯困. 成为老手以后倒不用犯困了, 但
会觉得很辛苦, 拷贝粘贴一个东东要按10次键, 其中有9次小拇指参与("+y"+p, 中间还要
按4次SHIFT键), 太累了. 用系统粘贴板作为默认的粘贴板使一次拷贝按键次数大为减少(
减少为2次), 自己的手指自己心疼^)^

这个貌似只有在Windows下适用, Linux有时灵有时不灵, 其它的系统没有试过.

Reference from My ".vimrc":
|
|set clipboard=unnamed "The * register is the default register.
|

3. 映射实现滚屏功能

用过web浏览器的人都知道用鼠标中键可以完成向上滚屏和向下滚屏, 滚屏的过程中光标的
位置是不会变的. 习惯了这个功能, 在浏览(或者编辑)文本的时候比较留恋那个功能, 就
映射空格向上滚屏, m(以是用;向上滚屏的, 后来小拇指负担太重, 改成m键了, m键原来的
功能我很少用)向下滚屏. 参考我的.vimrc:

Reference from My ".vimrc":
|
|noremap <C-j> 3<C-e>
|noremap <C-k> 3<C-y>
|nnoremap <SPACE> 2<C-e>
|nnoremap m 2<C-y>

4. 用逗号键做为<Leader>

系统默认的<Leader>是"\"键, 一个是太远, 不好找, 一个是位于小拇指区域, 每次执行命
令都要用到小拇指, 负担太重, 映射成","键. 如执行查单词的命令就变成",f"(插件
txtbrowser: ), 按起来还是比较舒服的.

Reference from My ".vimrc":
|
|let mapleader = ","
|

5. 用<ALT> + 数字切换Tab窗口

用过Gnome-terminal的人都知道, 在一个Terminal里打开多个TAB窗口, 用ALT+数字就可以
切换到相应的窗口. 很喜欢这个功能, 映射如下:

Reference from My ".vimrc":
|
|if has("gui_running")
|        noremap <M-1> 1gt
|        noremap <M-2> 2gt
|        noremap <M-3> 3gt
|        noremap <M-4> 4gt
|        noremap <M-5> 5gt
|        noremap <M-6> 6gt
|        noremap <M-7> 7gt
|        noremap <M-8> 8gt
|        noremap <M-9> 9gt
|        noremap <M-0> 10gt
|endif

由于终端窗口已经有这些命令了, 而且在非Gvim模式下, <ALT>键好像传不到Vim这里来,
所以加上了一个判断看是否Gvim.

6. 一套配置用在所有的操作系统下

我一般用Windows和Linux两个操作系统, 为了维护的方便, 只维护了一套.vimrc配置, 但
是Vim界面的设置都一样.

Reference from My ".vimrc":
|
|if (has("win32") || has("win32unix"))
|        set encoding=cp936"utf8
|        set fileformats=dos,unix,mac " EOL formats(\r\n or \n or \r) in order
|else
|        set encoding=utf8
|        set fileformats=unix,dos,mac " EOL formats(\r\n or \n or \r) in order
|endif
|set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
|

7. 关于Vim打印

Vim有非常漂亮的语法高亮, 在别的软件里很少能真正重现Vim原有的高亮(颜色可能有偏差
, 行距), 在Windows下打印直接用":ha"命令即可, Linux下的打印可能稍显复杂点, 下面
的设置在我的系统(OS: Fedora11, 打印机: 佳能ip1880)测试通过.

Reference from My ".vimrc":
|
|if (!has("win32"))
       "encoding of printing. use encoding if not set.
|        set printencoding=utf-8
|        "charset of print. should be compatible with printencoding.
|        set printmbcharset=ISO10646
|        "打印所用字体, 在linux下, 要用ghostscript里已有的字体, 不然会打印乱码.
|        set printmbfont=r:STSong-Light,c:yes
|        "打印可选项, formfeed: 是否处理换页符, header: 页眉大小, paper: 用何种
|        "纸, duplex: 是否双面打印, syntax: 是否支持语法高
|        set printoptions=formfeed:y,paper:A4,duplex:on,syntax:y",header:3
|        "打印时页眉的格式
|        "set printheader=%<%f%h%m%=Page\ %N
|endif

8. 让Vim记住上次关闭时的状态和光标位置

有时候, 尤其是在编辑大型工程的时候, 我喜欢保留上次退出Vim时的状态和光标位置, 打
开 Vim就可以继续上次的工作, 不用为上次工作到哪一步犯愁. 在.vimrc里添加下面的函
数, 然后用不带参数的vim命令即可打开上次的工程状态.

因为需要生成一个额外的文件"Session.vim"来记住这一切, 尤其对于小一点的文档没有必
要, 所以这项功能默认是关闭的, 需要在Vim里手动执行一下":mksession"启动该功能(实
际上是生成了一个Session.vim文件, 所以也可以手动生成一个Session.vim文件, 效果是
一样的. 不需要该功能时手动删掉这个文件即可).

Reference from My ".vimrc":
|
|set sessionoptions+=resize,winpos "setting options of mksession.
|autocmd VimEnter * call LoadSession()
|autocmd VimLeave * call SaveSession()
|function! SaveSession()
|        if (filereadable("Session.vim"))
|                execute 'mksession!'
|        endif
|endfunction
|function! LoadSession()
|        if argc() == 0
|                silent! execute 'source Session.vim'
|        endif
|endfunction

9. 文本相关

我喜欢用Vim作为我的文本编辑器, 编辑文本, 格式上要有要求, 一般情况下都设置每行最
长79个字符, 这是为了适应几乎所有的屏幕和终端都不至于引起换行.

另外就是纯的Vim, 运行速度快, 但是Vim在不加载任何插件的情况下看起来挺丑的, 功能
也比较简单. 下面的命令调用"TxtBrowser"(vimscript #2899)插件, 可以显示文档的目录
树(标题标签)和语法高亮, 还可以在Vim查单词和打开网页, 相当有用.

Reference from My ".vimrc":
|
|let tlist_txt_settings = 'txt;c:content;f:figures;t:tables'
|au BufRead,BufNewFile *.txt setlocal ft=txt nu formatoptions=t2crmB textwidth=79 bg&
|au BufRead,BufNewFile *.txt colo default "desert
|au BufRead,BufNewFile *.log setlocal ft=txt nu bg&
|au BufRead,BufNewFile *.log colo default "desert

10. 编程相关

作为一个程序员, 有时候写程序老板有格式要求, 比如缩进几个空格, switch和case要不
要对齐等. 下面是根据我们公司关于代码格式要求的配置, 仅供参考^)^

Reference from My ".vimrc":
|
|autocmd FileType c,cpp :set cindent cinoptions=:0,g0,t0,(0 textwidth=79
|autocmd FileType c,cpp :set number shiftwidth=4 expandtab softtabstop=4
|autocmd FileType c,cpp :set  background=dark formatoptions=tcroqmB
|"highlight characters after column 80.
|autocmd FileType c,cpp :match ErrorMsg /\%>80v.\+/

更多的个性化参见我的.vimrc配置.
  评论这张
 
阅读(2510)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017