vim - 单击时从 Nerd 树复制路径

标签 vim macvim nerdtree

如何才能做到这一点?

我想要使用 CTRL-R 在命令模式下粘贴它的路径。

最佳答案

您可以使用插件自己的扩展系统进行自定义映射;甚至在 :help NERDTreeAddKeyMap() 中给出的示例几乎可以满足您的要求。

只需将以下片段放入 ~/.vim/nerdtree_plugin/yank_mapping.vim 中:

call NERDTreeAddKeyMap({
        \ 'key': '<LeftMouse>',
        \ 'callback': 'NERDTreeYankCurrentNode',
        \ 'quickhelpText': 'put full path of current node into the default register' })

function! NERDTreeYankCurrentNode()
    execute "normal! \<LeftMouse>"
    let n = g:NERDTreeFileNode.GetSelected()
    if n != {}
        call setreg('"', n.path.str())
    endif
endfunction

上一个答案(没有 NERDTree Keymap API)

您可以在 plugin/NERD_tree.vim 末尾注入(inject)一个小函数来访问脚本的内部:

function! GetSelected()
    return s:TreeFileNode.GetSelected()
endfunction

然后,修改(可以将它们放在同一个地方)将是:

:autocmd FileType nerdtree
\    nnoremap <silent> <buffer> <LeftMouse>
\    <LeftMouse>:silent! call setreg('"', GetSelected().path.str())<CR>

关于vim - 单击时从 Nerd 树复制路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14483579/

相关文章:

regex - VIM:选择一个正则表达式,然后应用一个命令

macos - vim ctrlp 插件加载我电脑中的所有文件而不是当前目录

vim - 如何在 MacVim 的 'file changed' 弹出窗口中的按钮之间切换焦点

vim - 如何使用 NERDTree 在 Vim 中复制(或复制)整个文件夹?

python - VIM + netrw : open multiple files/buffers in the same window

visual-studio - 有人知道 Visual Studio 的任何(免费/开源)VI 集成吗?

vim - NERDTree:加星标/粗体文件表示什么?

vim - 为什么我的 Nerd 树有这些奇怪的字符

bash - 如何使用 vim 打开目录下的每个 .txt 文件(使用 Bash)

homebrew - 在 Sierra 中安装 MacVim