加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

vim – 如何自定义NERDTree行为

发布时间:2020-12-15 21:07:53 所属栏目:安全 来源:网络整理
导读:我最近在我的 vim配置中添加了NERDTree和NERDTreeTabs,我对此非常满意. 但是,我想进一步配置它并具有以下行为: 按Ctrl键: 如果在NERDTree内,什么也不做. 如果在编辑后的文件中,请转到打开的NERDTree,如果没有,则先打开一个NERDTree.我想应该使用NERDTreeTa
我最近在我的 vim配置中添加了NERDTree和NERDTreeTabs,我对此非常满意.

但是,我想进一步配置它并具有以下行为:

按Ctrl键:

>如果在NERDTree内,什么也不做.
>如果在编辑后的文件中,请转到打开的NERDTree,如果没有,则先打开一个NERDTree.我想应该使用NERDTreeTabsToggle,但要使用它,我必须能够检测NERDTree是否已经打开,而不是通过“切换”它来关闭它.

Ctrl右:

>如果在NERDTree内部,请返回已编辑的文件而不关闭NERDTree. (就像Ctrl-w一样,Right也会这么做.)
>如果在编辑的文件中,隐藏/关闭NERDTree.

但是,我的Vim脚本技能对我来说是很低的,以获得任何令人满意的结果.例如,我无法弄清楚如何检查当前活动窗口是什么或如何编写适当的条件语句.

有人可以帮助我吗?

谢谢.

解决方法

如果终于找到了办法.

我编辑了nerdtree_plugin / vim-nerdtree-tabs.vim文件,添加了以下功能:

" === Stepped Open/Close functions ===
" focus the NERDTree view,creating one first if none is present
fun! s:NERDTreeSteppedOpen()
  if !s:IsCurrentWindowNERDTree()
    if s:IsNERDTreeOpenInCurrentTab()
      call s:NERDTreeFocus()
    else
      call s:NERDTreeMirrorOrCreate()
    endif
  endif
endfun

" unfocus the NERDTree view or closes it if it hadn't had focus at the time of
" the call
fun! s:NERDTreeSteppedClose()
  if s:IsCurrentWindowNERDTree()
    call s:NERDTreeUnfocus()
  else
    let l:nerdtree_open = s:IsNERDTreeOpenInCurrentTab()

    if l:nerdtree_open
      silent NERDTreeClose
    endif
  endif
endfun

我还向作者提出了一个pull-request问他是否想在上游添加这些功能.

作者将我的pull请求添加到主存储库,因此在下一个版本中,您可以直接调用这些函数.

希望它能帮到人们.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读