gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:10:11 35 4
gpt4 key购买 nike

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

我拥有的大多数文件都按以下方式格式化,我想突出显示单引号之间的路径并打开该文件(为那些好奇的人格式化为 MSC NASTRAN):

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

困难的是拉动整个部分会导致路径中间出现 ^M 换行符。我的方法如下(遍历下面的 :map 命令):

  1. 从选择中提取路径(存储到@0)
  2. 创建新寄存器@f,其中用空字符串替换来自@0 的换行符
  3. 打开@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 以避免递归映射。如果此特定映射仅用于可视模式,则 xnoremap 甚至更好。

xnoremap <F8> y \| :exec "e" fnameescape(substitute(getreg('"'),'\n','','g'))<CR>

关于vim - 在 vim 中用换行符打开光标下的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20413534/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com