【问题标题】:reload .vimrc after any :edit command在任何 :edit 命令之后重新加载 .vimrc
【发布时间】:2017-04-18 11:18:11
【问题描述】:

我的 .vimrc 文件中有一个部分将终端的标题设置为使用 vim 打开的文件的名称。但是,当使用 :edit 从 vim 中从一个文件转到下一个文件时,这种情况会发生故障,因为它保持不变。我认为这是因为默认情况下,.vimrc 文件仅在启动 vim 时运行。

有没有办法让 vim “监视” :edit、:e 和任何其他命令,然后运行 ​​:so $MYVIMRC,这会重新加载 .vimrc?

或者,是否有一些内置功能可以将终端标题设置为我以某种方式忽略的文件名?


.vimrc 中提到的部分

  " Apply filename to terminal session title
  "" Doesn't work when changing file using :edit

  let path_list = reverse(split(expand("%:p"),"/"))

  if len(path_list) > 0
     let &titlestring = path_list[0]
      if &term == "screen"
          set t_ts=^[k
          set t_fs=^[\
      endif
      if &term == "screen" || &term == "xterm"
        set title
      endif
 endif

【问题讨论】:

    标签: vim editor


    【解决方案1】:

    这可以完成这项工作

    autocmd BufEnter * :so $MYVIMRC
    

    更新

    按照 Doktor 的建议,最好在函数中执行此操作,然后在 BufEnter 上调用它。这是它的工作原理。


    function SetTitle()
        let path_list = reverse(split(expand("%:p"),"/"))
    
        if len(path_list) > 0
            let &titlestring = path_list[1] . "/" . path_list[0]
            if &term == "screen"
                set t_ts=^[k
                set t_fs=^[\
            endif
            if &term == "screen" || &term == "xterm"
              set title
            endif
        endif
    endfunction
    
    autocmd BufEnter * :call SetTitle()
    

    【讨论】:

    • 您应该将逻辑放在一个函数中,并在 autocmd 中调用该函数,而不是重新加载整个 vimrc
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 2012-09-04
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多