我想设置一个键映射来打开一个在可视模式下突出显示的绝对路径文件名,中间可能有一个换行符。
我拥有的大多数文件都是按照以下方式格式化的,我想强调单引号和打开该文件之间的路径(为那些好奇的人为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寄存器中的先前路径
任何解决方法或其他方法的想法?清除寄存器:最后让@ f =''似乎也不起作用。
我也没有管理员权限,因为这是一台工作计算机,所以我认为我不能安装插件,但我仍然是vim的新手,任何想法都赞赏。谢谢!
答案 0 :(得分:3)
不需要辅助寄存器;使用:exec
来计算表达式并将结果用作命令的参数。我不确定strtrans()
是否有某种优势,但直接替换\n
似乎有效。无论哪种方式,请务必使用fnameescape()
。此外,使用noremap
以避免递归映射,除非您需要它们。如果此特定映射仅适用于可视模式,则xnoremap
甚至更好。
xnoremap <F8> y \| :exec "e" fnameescape(substitute(getreg('"'),'\n','','g'))<CR>