【问题标题】:vimrc code to insert path of current file at top of file?vimrc 代码在文件顶部插入当前文件的路径?
【发布时间】:2019-08-26 14:26:26
【问题描述】:

我想在该文件的顶部添加(或更新,如果存在)我正在处理的当前文件的路径。

例如,如果我将 File: 放在我正在 vim (neovim) 中编辑的文件的顶部附近,我想用我正在编辑的文件的路径和文件名自动更新该行;例如

File: /mnt/Vancouver/this_file.sh

如果有帮助,我的.vimrc 文件中有以下内容,它会在我保存该缓冲区时自动在文件顶部附近的Last modified: 行(如果存在)之后添加日期。 (光标位置也会自动恢复,通过keepjumps。)

" http://vim.wikia.com/wiki/Insert_current_date_or_time 
" If buffer modified, update any 'Last modified: ' in the first 30 lines.
" 'Last modified: ' can have up to 10 characters before (they are retained).
" Restores cursor and window position using save_cursor variable.

function! LastModified()
  if &modified
    let save_cursor = getpos(".")
    let n = min([30, line("$")])
    keepjumps exe '1,' . n . 's/^\(^Last modified: \).*/\1' .
          \ strftime('%Y-%m-%d') . '/e'
    call histdel('search', -1)
    call setpos('.', save_cursor)
  endif
endfun
autocmd BufWritePre * call LastModified()

" TEST:
" Last updated: 
" (indented line below: should not update)
"  Last modified: 
" Last modified: 2018-11-21

【问题讨论】:

  • 你好,这个问题和你的很相似,unix.stackexchange.com/questions/57555/…。也许提供的答案足以满足您的工作。
  • @PatrickBacon:谢谢你的链接,谢谢@Sergio 的回答。这是一个手动解决方案。 % 寄存器代表文件路径/名称,所以我将其添加到我的 ~/.vimrc 中:nmap <leader>p "%p

标签: vim neovim


【解决方案1】:

如果文件的第一行以File:开头,则以下函数添加完整的文件路径(%:p

autocmd! insertleave * call PutPath()                                     
function! PutPath()                                                      
    let file=expand("%:p")                                               
    silent! execute '1s@^File:$@& '.file                                 
endfunction         

退出插入模式 (autocmd insertleave) 时会自动执行替换,File: 后面不能有尾随空格。

【讨论】:

    猜你喜欢
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多