用vim中的换行符在光标下打开一个文件

我想设置一个键映射来打开一个绝对路径文件名,在可视模式下突出显示,中间可能有换行符。

大多数文件的格式如下,我想突出显示单引号之间的路径并打开该文件(对于那些好奇的MSC NASTRAN进行格式化):

INCLUDE '/directory/directory/directory/directory/
directory/filename'

困难的是整个部分在路径中间产生一个^ M换行符。 我的方法如下(遍历下面的map命令):

  • 从选择(存储到@ 0)
  • 创建新的寄存器@f,其中空字符串替换@ 0中的换行符
  • 在@f中打开文件路径

    map <F8> y | :let @f=substitute(strtrans(@0),'^@','','g') | :e <C-R>f<CR>
    
  • 问题是,如果它在新的文件路径上第二次运行,vim会在更新@f之前使用存储在@f寄存器中的前一个路径

    任何想法来解决它或另一种方法? 清除寄存器:let @ f =''最后似乎也不起作用。

    我也没有管理员权限,因为这是一台工作计算机,所以我不认为我可以安装插件,但我仍然对vim很陌生,任何想法都会感激。 谢谢!


    辅助寄存器是不必要的; 请使用:exec以评估表达式并将结果用作命令的参数。 我不确定strtrans()是否具有某种优势,但直接替换n似乎有效。 无论哪种方式,请确保使用fnameescape() 。 此外,使用noremap以避免递归映射,除非您需要它们。 如果此特定映射仅用于可视模式,则vnoremap会更好。

    vnoremap <F8> y | :exec "e" fnameescape(substitute(getreg('"'),'n','','g'))<CR>
    
    链接地址: http://www.djcxy.com/p/37639.html

    上一篇: Open a file under cursor with a line break in vim

    下一篇: Vim insert mode file path completion