将文件保存在 NERDTree 中
Save file in NERDTree
如果我想将文件保存在子文件夹中,这是我当前在 Vim 中保存文件的方式:
:w /home/username/notes/file.txt
有没有办法使用 NERDTree 到 select 文件夹并保存当前文档?如果没有,避免像我上面那样输入路径的最佳方法是什么?
我会使用 NERDTree 的 cd
命令将目录更改为目标目录;然后,您可以简单地将文件 :w file.txt
保存在该目录中。
或者,您可以使用自定义映射扩展插件,将当前文件规范/路径提取到寄存器中。然后,您可以通过 <C-R>{register}
将内容插入 :write
命令行。将以下内容放入文件 ~/.vim/nerdtree_plugin/yank_mapping.vim
:
function! NERDTreeYankCurrentNode( modifiers )
let l:node = g:NERDTreeFileNode.GetSelected()
if l:node != {}
let l:contents = fnamemodify(l:node.path.str(), a:modifiers)
call setreg(v:register, l:contents, 'v')
" It's helpful to print the contents, too.
echomsg l:contents
endif
endfunction
function! NERDTreeYankCurrentNodeFilename()
return NERDTreeYankCurrentNode(':t')
endfunction
function! NERDTreeYankCurrentNodeAbsoluteFilespec()
return NERDTreeYankCurrentNode(':p')
endfunction
function! NERDTreeYankCurrentNodePathspec()
return NERDTreeYankCurrentNode(':p:h')
endfunction
function! NERDTreeYankCurrentNodeRelativeFilespec()
return NERDTreeYankCurrentNode(':~:.')
endfunction
call NERDTreeAddKeyMap({
\ 'key': 'yr^',
\ 'callback': 'NERDTreeYankCurrentNodeFilename',
\ 'quickhelpText': 'yank file name of current node in the passed register'
\})
call NERDTreeAddKeyMap({
\ 'key': 'yr>',
\ 'callback': 'NERDTreeYankCurrentNodeAbsoluteFilespec',
\ 'quickhelpText': 'yank full absolute filespec of current node in the passed register'
\})
call NERDTreeAddKeyMap({
\ 'key': 'yr<',
\ 'callback': 'NERDTreeYankCurrentNodePathspec',
\ 'quickhelpText': 'yank full absolute pathspec of current node in the passed register'
\})
call NERDTreeAddKeyMap({
\ 'key': 'yy',
\ 'callback': 'NERDTreeYankCurrentNodeRelativeFilespec',
\ 'quickhelpText': 'yank filespec relative to CWD of current node in the passed register'
\})
如果我想将文件保存在子文件夹中,这是我当前在 Vim 中保存文件的方式:
:w /home/username/notes/file.txt
有没有办法使用 NERDTree 到 select 文件夹并保存当前文档?如果没有,避免像我上面那样输入路径的最佳方法是什么?
我会使用 NERDTree 的 cd
命令将目录更改为目标目录;然后,您可以简单地将文件 :w file.txt
保存在该目录中。
或者,您可以使用自定义映射扩展插件,将当前文件规范/路径提取到寄存器中。然后,您可以通过 <C-R>{register}
将内容插入 :write
命令行。将以下内容放入文件 ~/.vim/nerdtree_plugin/yank_mapping.vim
:
function! NERDTreeYankCurrentNode( modifiers )
let l:node = g:NERDTreeFileNode.GetSelected()
if l:node != {}
let l:contents = fnamemodify(l:node.path.str(), a:modifiers)
call setreg(v:register, l:contents, 'v')
" It's helpful to print the contents, too.
echomsg l:contents
endif
endfunction
function! NERDTreeYankCurrentNodeFilename()
return NERDTreeYankCurrentNode(':t')
endfunction
function! NERDTreeYankCurrentNodeAbsoluteFilespec()
return NERDTreeYankCurrentNode(':p')
endfunction
function! NERDTreeYankCurrentNodePathspec()
return NERDTreeYankCurrentNode(':p:h')
endfunction
function! NERDTreeYankCurrentNodeRelativeFilespec()
return NERDTreeYankCurrentNode(':~:.')
endfunction
call NERDTreeAddKeyMap({
\ 'key': 'yr^',
\ 'callback': 'NERDTreeYankCurrentNodeFilename',
\ 'quickhelpText': 'yank file name of current node in the passed register'
\})
call NERDTreeAddKeyMap({
\ 'key': 'yr>',
\ 'callback': 'NERDTreeYankCurrentNodeAbsoluteFilespec',
\ 'quickhelpText': 'yank full absolute filespec of current node in the passed register'
\})
call NERDTreeAddKeyMap({
\ 'key': 'yr<',
\ 'callback': 'NERDTreeYankCurrentNodePathspec',
\ 'quickhelpText': 'yank full absolute pathspec of current node in the passed register'
\})
call NERDTreeAddKeyMap({
\ 'key': 'yy',
\ 'callback': 'NERDTreeYankCurrentNodeRelativeFilespec',
\ 'quickhelpText': 'yank filespec relative to CWD of current node in the passed register'
\})