Open a file under cursor with a line break in vim

I want to set up a key mapping to open an absolute path filename highlighted in visual mode that may have a line break in the middle.

Most files I have are formatted in the following way, and I would like to highlight the path between the single quotes and open that file (formatted for MSC NASTRAN for those curious):

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

What's difficult is yanking that whole section results in a ^M newline character in the middle of the path. My approach was the following (walking through the :map command below):

  • Yank the path from selection (stored to @0)
  • Create new register @f where empty string was substituted for the newline char from @0
  • Open file path in @f

    map <F8> y | :let @f=substitute(strtrans(@0),'^@','','g') | :e <C-R>f<CR>
    
  • The problem is that if it's run a second time on a new file path, vim uses the previous path stored in the @f register before updating @f

    Any ideas to fix it or another approach? Clearing the register with :let @f='' at the end didn't seem to work either.

    I also don't have admin rights, since this is a work computer, so I don't think I can install plugins, but I'm still new to vim, any thoughts appreciated. Thanks!


    An auxiliary register is unnecessary; use :exec in order to evaluate an expression and use the result as an argument to a command. I'm not sure whether strtrans() is somehow advantageous, but replacing n directly seems to work. Either way, make sure to use fnameescape() . Also, use noremap in order to avoid recursive mappings unless you need them. If this particular mapping is intended only for visual mode, vnoremap is even better.

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

    上一篇: LINQ“。在子查询中包含”orderby“

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