linux vim窗口界面,打造自己的vim界面 合并显示

192dcdfc7858d58aba45a17c2f789384.png

需要用到的插件:

taglist需要ctags支持

ctags.exe:

taglist显示tag列表

taglist:

显示buf列表:

bufexplorer:

Nerd_Tree文件浏览

Nerd_tree:

界面管理插件:

winmanager:

一、ctags:

下载解压后是源码,感觉就那个exe文件有点用。直接放到一个目录里,D:\ctags58。

设置一下环境变量。path=D:\ctags58。这样可以直接运行目录下面的ctags.exe文件。或者直接把ctags.exe放入windows的目录里。

vimrc中的设置:

1"生成一个tags文件

2nmap :!ctags -R *

二、taglist设置:

下载解压到相应的vim文件夹中。

vimrc中设置:

01""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

02

03"设置Taglist

04

05""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

06

07" 这项必须设定,否则出错,配置taglist的ctags路径

08

09let Tlist_Ctags_Cmd = 'D:\ctags58\ctags.exe'

10

11

12

13" 不同时显示多个文件的 tag ,只显示当前文件的

14

15let Tlist_Show_One_File=1

16

17

18

19" 如果 taglist 窗口是最后一个窗口,则退出 vim

20

21let Tlist_Exit_OnlyWindow=1

22

23

24

25"让当前不被编辑的文件的方法列表自动折叠起来

26

27let Tlist_File_Fold_Auto_Close=1

28

29

30

31"把taglist窗口放在屏幕的右侧,缺省在左侧

32

33let Tlist_Use_Right_Window=1

34

35

36

37"显示taglist菜单

38

39let Tlist_Show_Menu=1

40

41

42

43"启动vim自动打开taglist

44

45"let Tlist_Auto_Open=1

启动自动打开这个选项暂时不设置。后面要让winmanager调用taglist。

三、bufexplorer:

下载解压,没啥说的。

四、winmanager:

下载解压,vimrc中的设置:

01"""""""""""""""""""""""""""""""

02

03"" winManager setting

04

05"""""""""""""""""""""""""""""""

06

07"设置界面分割

08

09"let g:winManagerWindowLayout = "BufExplorer,FileExplorer|TagList"

10

11let g:winManagerWindowLayout = "TagList|FileExplorer,BufExplorer"

12

13

14

15"设置winmanager的宽度,默认为25

16

17let g:winManagerWidth = 30

18

19

20

21"定义打开关闭winmanager按键

22

23nmap :WMToggle

以上3个插件安装设置完毕后,基本的界面功能就可以实现了。按F8可以打开/关闭界面。同时显示taglist和fileexplorer。在fileexplorer窗口中按可以切换到bufexplorer窗口。

上述设置好后,有3个问题:

1 我想让插件显示在右侧,但是winmanager里面没有此选项

2 进入vim时候不能自动打开winmanager,winmanager不像taglist支持该功能

3 退出时不会像只有taglist时候那样,退出当前文件就会退出vim了

经过多次修改代码终于实在了上述3个功能。

五、将插件显示在右侧

打开winmanager.vim,在function! StartWindowsManager()函数中修改:

将:wincmd H 修改为wincmd L:

1" for now assume that the explorer windows always stay on the left.

2

3" TODO: make this optional later

4

5" make the explorers window always stay on the right ---by chenyong

6

7"        wincmd H

8

9wincmd L

六、进入vim自动打开winmanager

这个功能作为可选功能,我们可以在vimrc中设置:

1"在进入vim时自动打开winmanager

2

3let g:AutoOpenWinManager = 1

就可以让winmanager自动打开。

在winmanager.vim中修改:

1"set auto open Winmanager

2

3if g:AutoOpenWinManager

4

5autocmd VimEnter * nested call s:StartWindowsManager()|1wincmd w

6

7endif

七、退出缓冲区时,自动退出vim

这个功能是参考了taglist的自动退出功能,在taglist.vim中修改的。

函数:function! s:Tlist_Window_Exit_Only_Window()中的winbunr(2)改为winbunr(3),即只剩2个窗口时关闭,考虑到2个窗口肯定是同时存在,所以这样还是可行的:

01function! s:Tlist_Window_Exit_Only_Window()

02

03" Before quitting Vim, delete the taglist buffer so that

04

05" the '0 mark is correctly set to the previous buffer.

06

07if v:version < 700

08

09if winbufnr(3) == -1

10

11bdelete

12

13quit

14

15endif

16

17else

18

19if winbufnr(3) == -1

20

21if tabpagenr('$') == 1

22

23" Only one tag page is present

24

25bdelete

26

27quit

28

29else

30

31" More than one tab page is present. Close only the current

32

33" tab page

34

35close

36

37endif

38

39endif

40

41endif

42

43endfunction

同时在vimrc中需要设置:

1let Tlist_Exit_OnlyWindow=1

winmanager自带的fileexplorer这个插件实在是比较差。最重要的一点是fileexplorer不能自动更新,如果通过其他的途径修改了文件夹中的内容,fileexplorer是不会显示的。相对而言Nerd_Tree功能就比较强大了。下面要把Nerd_Tree加入winmanager。

四、Nerd_tree:

下载解压,打开NERD_tree.vim,按照winmanager的说明,在最后加入下面代码:

01"Used by winmanager {{{1

02

03let g:NERDTree_title = "[NERDTree]"

04

05function! NERDTree_Start()

06

07exe 'NERDTree'

08

09endfunction

10

11

12

13function! NERDTree_IsValid()

14

15return 1

16

17endfunction

同时把在vimrc中:

1let g:winManagerWindowLayout='NERDTree|TagList,BufExplorer'

原来的设置注释掉。加好后,发现每次打开winmanager都会出现一个空白的buffer。试验了好多次,但是Nerd_tree调用的函数就是会打开一个新窗口。因为如此,将bufExplorer和NERD_Tree放在一起会显示不正常。NERD_Tree放在下面的窗口也会出错,实在比较郁闷。。。。看了下NERD_Tree的代码,没看懂,只好再次改winmanager的代码了。

打开winmanager.vim,找到函数function! ToggleWindowsManager(),加入两行,修改后整个函数如下:

01" toggle showing the explorer plugins.

02function! ToggleWindowsManager()

03if IsWinManagerVisible()

04call s:CloseWindowsManager()

05else

06call s:StartWindowsManager()

07"        NERD_tree need this. 打开时会有一个空白窗口,要把他关闭。

08exe '1wincmd w'

09exe 'q'

10end

11endfunction

加个注释,以免以后忘掉了,如果不想用nerd_Tree了,这2句话还得删掉。

另外打开时的命令和关闭时的命令也得同时修改了,试验了很多次:

taglist.vim中,找到下面的代码:

1" Exit Vim itself if only the taglist window is present (optional)

2"        if g:Tlist_Exit_OnlyWindow

3"        autocmd BufEnter __Tag_List__ nested

4"            \ call s:Tlist_Window_Exit_Only_Window()

5"        endif

将这段代码修改为:

01" Exit Vim itself if only the taglist window is present (optional)

02let s:NERDTreeBufName = 'NERD_tree_'

03if g:Tlist_Exit_OnlyWindow

04augroup Exit_onlywindow

05"当进入Nerd_Tree的buffer时也检测是否需要退出

06exec "autocmd BufEnter ". s:NERDTreeBufName .

07\"* call s:Tlist_Window_Exit_Only_Window()"

08autocmd BufEnter __Tag_List__ nested

09\ call s:Tlist_Window_Exit_Only_Window()

10augroup end

11endif

winmanager中:刚才添加的自动执行命令要改为:

1"set auto open Winmanager

2if g:AutoOpenWinManager

3"    autocmd VimEnter * nested call s:StartWindowsManager()|1wincmd w

4autocmd VimEnter * nested call s:StartWindowsManager()|1wincmd w|q

5endif

这样所有的功能就实现了。在taglist窗口使用ctrl+n可以转换到bufexplorer窗口。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值