gpt4 book ai didi

vim - 遍历NERDTree时是否可以只查看文件内容?

转载 作者:行者123 更新时间:2023-12-03 23:56:00 25 4
gpt4 key购买 nike

我可以遍历 NERDTree,但要查看文件内容,我按 go,一旦打开文件的缓冲区将保持打开状态,直到我明确关闭它。这使得查看文件太不舒服。

当我遍历 NERDTree 节点时,我想在临时查看器缓冲区中查看突出显示的文件内容,并且我想明确地选择一些已遍历的文件进行编辑,例如按 e。

当我关闭 NERDTree 缓冲区时,临时查看器缓冲区也将关闭,并且应该只为那些明确选择的文件打开缓冲区,而不是为所有查看的文件打开缓冲区。

这可能吗?

最佳答案

看起来这可能是对 NERDTree 的一个不错的功能请求:)

同时,你可以在你的 ~/.vimrc 中输入如下内容:

let g:nerd_preview_enabled = 0
let g:preview_last_buffer = 0

function! NerdTreePreview()
" Only on nerdtree window
if (&ft ==# 'nerdtree')
" Get filename
let l:filename = substitute(getline("."), "^\\s\\+\\|\\s\\+$","","g")

" Preview if it is not a folder
let l:lastchar = strpart(l:filename, strlen(l:filename) - 1, 1)
if (l:lastchar != "/" && strpart(l:filename, 0 ,2) != "..")

let l:store_buffer_to_close = 1
if (bufnr(l:filename) > 0)
" Don't close if the buffer is already open
let l:store_buffer_to_close = 0
endif

" Do preview
execute "normal go"

" Close previews buffer
if (g:preview_last_buffer > 0)
execute "bwipeout " . g:preview_last_buffer
let g:preview_last_buffer = 0
endif

" Set last buffer to close it later
if (l:store_buffer_to_close)
let g:preview_last_buffer = bufnr(l:filename)
endif
endif
elseif (g:preview_last_buffer > 0)
" Close last previewed buffer
let g:preview_last_buffer = 0
endif
endfunction

function! NerdPreviewToggle()
if (g:nerd_preview_enabled)
let g:nerd_preview_enabled = 0
augroup nerdpreview
autocmd!
augroup END
else
let g:nerd_preview_enabled = 1
augroup nerdpreview
autocmd!
autocmd CursorMoved * nested call NerdTreePreview()
augroup END
endif
endfunction

这可能是非常幼稚和讨厌的代码,但是通过一些调整可以做你打算做的事情。

已编辑,版本 2 中的更改:
  • 添加嵌套在自动命令上,因此语法突出显示有效
  • 默认不启用,执行 :call NerdPreviewToggle() 来启用/禁用
  • 关于vim - 遍历NERDTree时是否可以只查看文件内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13119754/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com