打造自己的vim环境

公司是基于linux下面的开发,编辑器那么多,很烦人,个人想精通一个编辑器,以不变应万变,于是开始了vim之旅。

先学习简单的vim操作,后来firefox也装上vim的插件了,但觉得还是不够,大部分的工作还是在win下其他编辑器下完成。

 

vim的路还长得很,这篇文章,我坚信坚持vim,是正确的,而且中将给带来更大的好处。

 

1、公司的linux上,vim是统一有的,但各个用户自己登陆,于是乎第一个要解决的,要不然自己装个vim,要不然通过一些特殊的选项,个性化自己的配置。需要的有两个,一个是配置,第二个是很多的插件。

a:个人的配置在 :~/.vimrc 上添加就可以了

b:插件,这个还没有解决,应该是 runtimepath=~/.vim,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/

~下创建.vim目录即可。明天到公司去试试。

 

2、vim的路径,可以在vim中执行 :echo $VIMRUNTIME 来获得。

一般是:/usr/share/vim/  或者 /usr/local/share/vim/ 下,你也可以自己安装一个,通过编译的时候  ./conf~  prefix 来指定。

 

3、bin目录:echo $PATH,可以用whereis vim来查看,还可以启动一个vim进程,然后获得其进程号,之后lsof下。

/bin/vim

/usr/bin/vim

/usr/local/bin/vim

$home/bin/vim

 

4、插件:

a、NERDTree:文件列表

:NERDTree 或在vimrc里面做映射:map <F1> :NERDTreeToggle<CR>

b、MiniBufExplorer:把buffer列出来

修改下映射快捷键

noremap <silent> <leader>m   :call <SID>CycleBuffer(1)<CR>:<BS>
noremap <silent> <leader>n  :call <SID>CycleBuffer(0)<CR>:<BS>

,这样  /m,/n,(我用的是,m   ,    ,n)就有切换buffer的功能了

在结合原始的  :b $number  基本够用。

个人觉得这个除了显示出来,其他还是有点鸡肋。

c、taglist

<CR>          跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样
o             在一个新打开的窗口中显示光标下tag
<Space>       显示光标下tag的原型定义
u             更新taglist窗口中的tag
s             更改排序方式,在按名字排序和按出现顺序排序间切换
x             taglist窗口放大和缩小,方便查看较长的tag
+             打开一个折叠,同zo
-             将tag折叠起来,同zc
*             打开所有的折叠,同zR
=             将所有tag折叠起来,同zM
[[            跳到前一个文件
]]            跳到后一个文件
q             关闭taglist窗口
<F1>          显示帮助

快捷键


——————————————————————————————————————————————————————————————————————

gvim,也是一种选择,注意了

1、vim下载安装&中文help文档,略。

2、vim的环境问题:

- :set runtimepath?  ::可以查看vim的插件生效位置,有五个,这个地方 http://edyfox.codecarver.org/html/vimpluginspath.html这个地方介绍得比较详细

-:echo $VIM        ::vim运行的路径,安装路径

-:echo $VIMRUNTIME :: vim运行插件路径,系统级的

-gvim 用户自定义插件路径文件夹: %HOME%/vimfiles/

-gvim用户自定义配置文件位置:%HOME%/_vimrc

-session:

  • 会话信息中保存了所有窗口的视图,外加全局设置。 
  • :mksession [file]  ::创建,缺省 Session.vim
  • :source session-file :: 载入保存的session信息

-viminfo:

  • viminfo信息中保存了命令行历史(history)、搜索字符串历史(search)、输入行历史、非空的寄存器内容(register)、文件的位置标记(mark)、最近搜索/替换的模式、缓冲区列表、全局变量等信息。  
  • :wviminfo [file] ::创建,其实每次vim退出的时候都会在~/目录里面写如一个.viminfo(_viminfo)的文件
  • :rviminfo [file]::读入
//session和viminfo在 http://easwy.com/blog/archives/advanced-vim-skills-session-file-and-viminfo/ 说得很详细
-:pwd:查看当前运行的文件目录
-:f       :查看当前编辑的文件的信息
-:set path 设置工作路径

3、编码相关的问题:这里说得很详细: http://www.pythonclub.org/vim/encoding & http://edyfox.codecarver.org/html/vim_fileencodings_detection.html

-encoding(enc):encoding是Vim的内部使用编码,encoding的设置会影响Vim内部的 Buffer、消息文字等。在Unix环境下,encoding的默认设置等于locale;Windows环境下会和当前代码页相同。在中文 Windows环境下encoding的默认设置是cp936(GBK)。
-fileencodings(fenc):Vim在打开文件时会根据fileencodings选项来识别文件编码,fileencodings可以同时设置多个编码,Vim会根据设置的顺序来猜测所打开文件的编码。
-fileencoding(fencs) :Vim在保存新建文件时会根据fileencoding的设置编码来保存。如果是打开已有文件,Vim会根据打开文件时所识别的编码来保存,除非在保存时重新设置fileencoding。
-termencodings(tenc):在终端环境下使用Vim时,通过termencoding项来告诉Vim终端所使用的编码。

4、工作路径:这个方法还不错 http://blog.chongtang.me/index.php/1053

cd :                              改变vim的当前工作路径 

lcd:                            改变当前窗口的工作路径 

pwd:                            查看当前的工作路径 

set autochdir:              自动设当前编辑的文件所在目录为当前工作路径 



lsat、插件:终于到我待解决的问题了。

- 继续编辑,最困扰我的还是buffer在窗口展示的问题,今天看到IDE编辑环境,一般由两大类。

-- 一个是winmanager 相关的解决方案   映射到 F9-F12

--另一个是trinity 的相关解决方案             映射到F5-F8

最好的办法是:都尝试下,反正不差这些时间。

+winmanager 好像比较简陋

    map <c-w><c-f> :FirstExplorerWindow<cr> 
    map <c-w><c-b> :BottomExplorerWindow<cr> 
    map <c-w><c-t> :WMToggle<cr> 

默认功能是左边文件夹list和bufferlist

+trinity插件,目标是把vim改造成一个si一样的编辑器,si确实好像这方面舒服很多。

-srcexpl.vim http://www.vim.org/scripts/script.php?script_id=2179 如果有tags,通过tags查看光标所在变量/函数的定义,这边用php代码做实验,好像不那么准确,而且,到了那个位置后,如果找到有定义,光标会移动到第一行,不爽。

这里是摘录的配置:

" // The switch of the Source Explorer 
nmap <F8> :SrcExplToggle<CR> 
" // Set the height of Source Explorer window 
let g:SrcExpl_winHeight = 8 
" // Set 100 ms for refreshing the Source Explorer 
let g:SrcExpl_refreshTime = 100 
" // Set "Enter" key to jump into the exact definition context 
" let g:SrcExpl_jumpKey = "<ENTER>" 
" // Set "Space" key for back from the definition context 
let g:SrcExpl_gobackKey = "<SPACE>" 
" // In order to Avoid conflicts, the Source Explorer should know what plugins 
" // are using buffers. And you need add their bufname into the list below 
" // according to the command ":buffers!" 
let g:SrcExpl_pluginList = [ 
        \ "__Tag_List__", 
        \ "_NERD_tree_", 
        \ "Source_Explorer" 
    \ ] 

-taglist.vim就是生成taglist的插件了

cmd:TlistToggle

-trinity最后的插件

" Open and close all the three plugins on the same time
nmap <F8> :TrinityToggleAll<CR>
" Open and close the srcexpl.vim separately
nmap <F9> :TrinityToggleSourceExplorer<CR>
" Open and close the taglist.vim separately
nmap <F10> :TrinityToggleTagList<CR>
" Open and close the NERD_tree.vim separately
nmap <F11> :TrinityToggleNERDTree<CR>

这插件单独似乎没有什么问题,但是,但和minibufer插件一起用时,经常卡死在那个地方,很奔溃,还不知道怎么调试。


-minibufexplorer  

let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget = 1


-Vimball  管理插件的插件,如果下载是vba格式的插件的话,用vim打开,:so %,就安装好了,比较方便。

-visualmark.vim 

已经绑定 mm 设定标识,F2下一个标识,shift+F2上一个标识,ctrl+F2删除标识,还是有一定作用。但插件内绑定按键,还是不太好的。

简单,才是最好的。

目前的设置,比较简单

F5 - 目录 - 屏幕左边

F6 - 查看代码定义 - 屏幕下方

F7 - 文件buffertablist - 屏幕上方

F8 - taglis - 屏幕右边

和vim的方向键一致。需要用什么单独调什么。也避免相互之间引起的窗口错乱的情况。

之前,我比较纠结窗口相互牵涉,导致vim窗口错乱,甚至挂死的情况,总想找到一种非常ok的彻底的解决方法。也经常在寻觅,忽略了起本身优秀的地方。问题总是有的,看到它好的并不断加以放大,避免其不好的,日子照样过,情况还好很多。所谓扬长补短,多朴实的道理啊。但真要做起来,要克服自己追求完美的心态。

-The NERD Commenter 注释 http://vim-script-cn.googlecode.com/svn-history/r16/trunk/script_1218.html

不知道说什么好,确实很好用。

这两天试着坚持在vim写php,小项目,一边调试一边学习使用vim

从注释到缩进,到文件之间跳转,到宏的使用,不得不说,很爽。两只手开始不知道放在哪里好,后来则非常高效的投入到编码工作中。避免鼠标东点点,西点点。集中注意力。good feel。

vim 是一种习惯,也是一种思想。





 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值