微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

vim – NERDTree实时预览(如崇高的侧边栏)

Sublime的侧边栏一个很酷的功能,我可以按箭头键快速浏览一下编辑器窗格中每个文件的样子.它实际上并没有打开文件 – 只是在编辑器窗格中显示它.

我想在Vim中使用NERDTree做同样的事情(或者醋/ netrw,并不重要).我知道NERDTree让我使用go打开光标下的文件,同时保持树的焦点,但(a)需要两次击键,(b)它为每个文件创建一个新的缓冲区我“预览”这样,所以……真的没什么预览.

有没有办法让NERDTree或Vim模仿这个Sublime功能

解决方法

在这里. Vim有一个名为“预览窗口”的功能.您可以在预览窗口中使用以下命令打开文件:pedit< filename>.如果要将其插入NERDTree,可以在〜/ . vim / nerdtree_plugin /目录中创建一个文件,例如“live_preview_mapping.vim”,其中包含以下内容

if exists("g:loaded_nerdree_live_preview_mapping")
  finish
endif
let g:loaded_nerdree_live_preview_mapping = 1

call NERDTreeAddKeyMap({
      \ 'key':           '<up>',\ 'callback':      'NERDTreeLivePreview',\ 'quickhelpText': 'preview',\ })

function! NERDTreeLivePreview()
  " Get the path of the item under the cursor if possible:
  let current_file = g:NERDTreeFileNode.GetSelected()

  if current_file == {}
    return
  else
    exe 'pedit '.current_file.path.str()
  endif
endfunction

第一部分只是一个加载保护,所以文件只提供一次,只是样板.第二部分使用NERDTree API为< up>添加一个键映射.调用给定回调函数的键.

回调函数代码的核心,但它应该相当容易理解 – 它接受光标下的节点,如果有的话,并执行:带文件名的pedit.

您甚至可以使用简单的特定于文件类型的映射来更轻松地执行此操作,如下所示:

autocmd FileType nerdtree nnoremap <buffer> <up> :call NERDTreeLivePreview()<cr>

但前者是插件推荐的方法(参见:help NERDTreeAPI).如果没有别的,这会增加一个帮助条目?它的关键,它在一个地方保持nerdtree扩展.

有关使用预览窗口可以执行的操作的更多信息,请尝试:help preview-window.例如,您可以使用< c-w> z关闭它,但是您可以将其映射到您想要的任何内容,这与NERDTree不再真正相关.如果您对窗口出现的位置不满意,请考虑将“pedit”更改为“botright pedit”或“leftabove pedit”或任何您想要的内容.检查以下帮助:leftabove并查看下面的相关命令.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐