用vim中的换行符在光标下打开一个文件
我想设置一个键映射来打开一个绝对路径文件名,在可视模式下突出显示,中间可能有换行符。
大多数文件的格式如下,我想突出显示单引号之间的路径并打开该文件(对于那些好奇的MSC NASTRAN进行格式化):
INCLUDE '/directory/directory/directory/directory/
directory/filename'
困难的是整个部分在路径中间产生一个^ M换行符。 我的方法如下(遍历下面的map命令):
在@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