Vim引线快捷方式在<;之后停止执行;CR>;

Vim引线快捷方式在<;之后停止执行;CR>;,vim,Vim,我有一个文件~/.vim剪贴板,其中我配置了其他应用程序来回显文件的完整路径,因此让我们假设~/.vim剪贴板的内容是: /home/user/example.txt 在vim中,我希望执行一个引线快捷方式,以便: 在新的vim选项卡中打开~/.vim剪贴板文件 对剪贴板文件中的文件名执行vim命令gf,并且 然后,该文件在此vim选项卡中打开 我的.vimrc中有此映射: nnoremap <F8> gf nnoremap <leader>y :tabnew ~/.v

我有一个文件
~/.vim剪贴板
,其中我配置了其他应用程序来回显文件的完整路径,因此让我们假设
~/.vim剪贴板
的内容是:

/home/user/example.txt
在vim中,我希望执行一个引线快捷方式,以便:

  • 在新的vim选项卡中打开
    ~/.vim剪贴板
    文件
  • 对剪贴板文件中的文件名执行vim命令
    gf
    ,并且
  • 然后,该文件在此vim选项卡中打开
  • 我的
    .vimrc
    中有此映射:

    nnoremap <F8> gf
    nnoremap <leader>y :tabnew ~/.vim-clipboard<CR><F8>
    
    nnoremap gf
    nnoremap y:tabnew~/.vim剪贴板
    
    不幸的是,
    y
    映射在该行上的
    之后停止执行。我尝试了各种方法来让它工作,包括直接使用
    gf
    而不是
    映射,但我似乎无法让它工作,而且我似乎在SO或interwebs上找不到任何有用的东西

    我是一个中级vim用户,所以如果在vimscript或其他东西中有一个简单的解决方案,请原谅我。感谢您的帮助,谢谢

    如果需要
    映射中的
    映射,则需要使用递归映射。将
    nnoremap
    (表示非递归映射)更改为
    nmap

    nmap <leader>y :tabnew ~/.vim-clipboard<CR><F8>
    
    nmap y:tabnew~/.vim剪贴板
    

    递归映射记录在
    :help Recursive_mapping

    中,作为建议,为避免.vim剪贴板文件出现在缓冲区列表中,您还可以尝试:

    nnoremap <leader>y :execute 'tabnew ' . system('cat ~/vim-clipboard')
    
    nnoremap y:执行'tabnew'。系统(“cat~/vim剪贴板”)