【问题标题】:How can I permanently display the path of the current file in Vim?如何在 Vim 中永久显示当前文件的路径?
【发布时间】:2012-05-16 08:27:45
【问题描述】:

我知道 CTRLg 显示您正在处理的当前文件。有没有办法修改我的.vimrc 以便始终显示文件名/路径?

【问题讨论】:

    标签: vim vi


    【解决方案1】:

    在您的状态栏中,添加 %F 以显示完整路径:

    :help statusline
    
    " Add full file path to your existing statusline
    set statusline+=%F
    

    注意,%F 将是完整路径。要获取相对于工作目录的路径,请使用%f

    如果您的状态栏尚不可见,您可能首先需要通过laststatus=2将其配置为始终可见

    set laststatus=2
    

    请参阅:help laststatus 了解选项的含义。通常情况下,状态行可能会被隐藏,或者除非打开多个缓冲区,否则状态行会被隐藏,但我发现一直使用这样的自定义非常有用,非常值得为它放弃一个屏幕行保留。

    【讨论】:

    • 我当然更喜欢你的回答,但将set statusline+=%F 添加到我的~/.vimrc 似乎并没有按照你的说法。虽然文档似乎当然同意你的观点......
    • 这没有效果。抱歉,如果我遗漏了一些简单的东西,你对此有什么想法吗?
    • @TimPote 什么vim版本?为我工作。也许您的状态栏已经将其推开或限制了宽度。试试:set statusline=%F 不带+
    • @zallarak 查看我对 Tim 的评论。如果你只是做:set statusline=%F,你的状态栏会改变吗?向右或向左看,看看文件名是否隐藏在状态行中
    • @TimPote 也许set laststatus=2 保持状态栏始终可见。我忘了我有那个。
    【解决方案2】:

    设置 ls=2

    在 vimrc 中添加这个, 并且您将始终在底部看到文件名。

    【讨论】:

    • set modeline 没有为我做任何事情,它应该做什么? (虽然 set ls=2 确实做了一些事情)。下次我该如何自己解决这个问题?谢谢! :)
    • set modeline 有点危险,与问题无关。它允许在文件的 5 个开始/结束行中执行 Vim 命令。只有知道为什么并且真正想要它的人才能打开它。 (这就是为什么我 -1 这个答案)
    【解决方案3】:

    我发现了两种在使用 Vim 编辑文件时在 gnome 终端的标题栏中显示文件路径的方法。

    更简单(更好)的方法:将以下行添加到您的~/.vimrc

    set title
    

    哪个会显示在顶部:

    filename.ext (~/path_to_directory_where_your_file_is/) - VIM
    

    更复杂的方法会显示绝对文件路径。这是我最近写的documented in a bit more detail in this blog post

    【讨论】:

    • “设置标题”将在终端选项卡上显示文件名。有趣的功能。
    • 虽然很有趣,但没有回答所提出的问题。你也断言它更好 - 但它可能不是。例如,如果您的 vim 在处于全屏模式的终端中打开,则标题不可见。因此投反对票。
    【解决方案4】:

    如果您使用vim-airline,请输入.vimrc

    let g:airline_section_c = '%<%F%m %#__accent_red#%{airline#util#wrap(airline#parts#readonly(),0)}%#__restore__#'
    

    这是对航空公司默认设置的修改,将%f 更改为%F

    【讨论】:

      【解决方案5】:

      我发现获取我正在使用的文件的完整路径的唯一方法是::echo expand('%:p')。您可以根据需要重新映射 ctrl+g,但我个人不喜欢过多地偏离标准。我已经像这样映射了 F7:

      map  <F7> <Esc>:echo expand('%:p')<Return>
      

      【讨论】:

      • :help CTRL-G,然后向下看两段 CTRL-G 计数。
      • 谢谢,@StefanMajewsky。 1 CTRL-G 显示完整的文件名。我正在寻找这个选项。
      • 我爱你 Tim,这是绝对显示绝对路径的唯一方法,即使没有 ~
      【解决方案6】:

      我一直使用:f,但@MichaelBerkowski 的答案和链接太棒了!

      :f 显示路径、行数、修改状态、当前光标位置等...

      我不知道 CTRLG 但它似乎差不多。

      【讨论】:

        【解决方案7】:

        我认为状态栏非常强大和方便。开箱即用,它将显示文件名、光标位置和一些标志。但是您想和我一样,将 filename-部分替换为文件的 完整路径

        因此,在编辑我的.vimrc 时,我的状态行默认看起来像这样:

        .vimrc                                                        26,16           7%
        

        您可以通过以下方式查看状态行的设置:

        :set statusline?
        

        但是,如果您没有进行任何更改并且没有模块更改,那么它将是空的。但是通过帮助部分 (:help statusline) 中的示例,您会发现默认设置为:

        :set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P
        

        因此,请将其包含在您的 .vimrc 中,并将 %f 更改为 %F。我还添加了文件类型标志 (%y) 到我的状态行,因为我觉得它很方便。所以我得到的配置如下所示:

        :set statusline=%<%F\ %h%m%r%y%=%-14.(%l,%c%V%)\ %P
        

        结果看起来像这样:

        ~/.vimrc [vim]                                                26,16           7%
        

        好书:

        PS。我运行 vim 7.3

        【讨论】:

          【解决方案8】:

          如果您希望路径包含已解析的符号链接,请使用以下内容:

          set statusline +=%{resolve(expand('%:p'))}\ %*
          

          要保留主目录的“~”缩写,请包含 fnamemodify

          set statusline +=%{fnamemodify(resolve(expand('%:p')),':~')}\ %*
          

          【讨论】:

          • 在 VIM 7.4 中使用 iTerm2 SSH 进入 Ubuntu 16.04 LTS 对我来说这两种方法都有效
          猜你喜欢
          • 2022-09-24
          • 1970-01-01
          • 1970-01-01
          • 2011-05-05
          • 1970-01-01
          • 2018-04-14
          • 2013-06-24
          • 1970-01-01
          • 2012-08-28
          相关资源
          最近更新 更多