7

是否有类似于 Bash 的 HISTIGNORE 的选项可以从命令历史记录中转储一些无用的行(比如说:wqor :help.*)?

如果没有,我认为一个简单的 DIY 方法是使用正则表达式谓词手动解析.viminfo文件。是否有特定的 VIM 链接可以将解析与.viminfo文件中的更改同步?

4

2 回答 2

2

不幸的是,答案是否定的。但如果你允许H输入你的打字命令,它也许是可能的。这个怎么样?

https://gist.github.com/5864587

let g:histignore = '^buf:^history'
function! s:h(commandline)
  call histdel(':', '^H\s')
  let oldhist=&history
  try
    if len(filter(split(g:histignore, ':'), 'a:commandline =~ v:val')) == 0
      call histadd(':', a:commandline)
    endif
    set history=0
    exe a:commandline
  catch
    echohl ErrorMsg | echomsg v:exception | echohl None
  finally
    let &history=oldhist
    unlet oldhist
  endtry
endfunction
command! -nargs=+ H call s:h(<q-args>)

放入这个文件作为你的 ~/.vim/plugin/h.vim

:H buffers

这不存储在:history, 但是

:H ls

这将被存储。

于 2013-06-26T03:54:27.847 回答
0

它会导致一点点延迟,但这会起作用:( 如果只有一个HISTIGNOREfor vim))

augroup StripHistoryOfQAndW
  autocmd!
  autocmd 
  \ CmdLineLeave
  \ * 
  \ echom histdel(":", '^[wq]')
augroup END
于 2021-07-25T00:11:41.523 回答