Get name of the current file in Vim

后端 未结 6 1435
清歌不尽
清歌不尽 2020-12-14 00:52

I\'m trying to find the name of the file I\'m editing inside of Vim. So I can use it to map F5 to compile this file. Would of course be great if I could recognize

6条回答
  •  有刺的猬
    2020-12-14 01:32

    Use % as a substitute for your filename. But personally, I really think you can push :make to do exactly what you want.

    I used to do exactly what you want to avoid: just hack out a two-line Makefile for every single folder I was in. I enjoyed :make's quickfix support so much that whipping out a two-line Makefile just seemed like a small overhead in the big picture.

    ... I've since learned better. You can use an autocmd or ftplugin to set the makeprg option, configuring :make to use your command of choice based on the current filetype. In itself, that saves you a bit of work.

    The problem starts when we work a tool whose error messages don't look just like GCC's. To get around this, vim also provides the errorformat option. errorformat is very sophisticated. If you really want to learn about it, start with :h error-format. In the long term, the sophistication is really great. It means that, once you learn how to use it, you can parse virtually any compiler output and format it for viewing with quickfix (:cope or :cl).

    In the short term, it can be a bit of a bad thing, because it means that the first couple of times you hack an error format together yourself, you're going to be spending a fair bit of time puzzling over the vimdocs and re-loading and building files that will trigger the various error messages your compiler can produce. That's definitely not what you want if you're only briefly working outside your comfort zone, or your boss is over your shoulder urging you to fix this bug now.

    Hopefully (and likely), someone has already gone through this pain for you, and either configured errorformat appropriately for your default ftplugin, or released it as part of a vim script that they're just waiting for the community to install and adore.

    As a quick demonstration, here's a couple of lines I hacked together for my .vim/ftplugin/haskell.vim file:

    setl makeprg=ghc\ --make\ %
    setl errorformat=%E%f:%l:%c:,%C\ %.%m,%Z,%f:%l:%c:%m
    

    I use setl here so that these options are only configured for haskell source files; if I edit a different kind of source file simultaneously, it can use a different configuration instead.

    If you end up using :make, I also recommend configuring your switchbuf setting. I found it a bit annoying having to press ctrl-O after a build if quickfix gets excited and jumps you to the wrong file. I use:

    set switchbuf=useopen,usetab,newtab
    

提交回复
热议问题