VIM autocmd损坏默认寄存器

VIM autocmd损坏默认寄存器,vim,autocmd,Vim,Autocmd,我正在尝试更新Vim中特定文件中包含文件名的一些文本行。为此,我在.vimrc中添加了以下内容: let logs_pat = "/ARCHIVE/logs/db_agent.log*" au! BufEnter *_search.txt execute "/\\[DBA_LOGS\\]/,$d | $put = '[DBA_LOGS]' | $r!ls -t " . logs_pat . " | head " 除了一些人工制品外,它工作正常。问题是如何消除这些伪影 每次我带着文件*_sear

我正在尝试更新Vim中特定文件中包含文件名的一些文本行。为此,我在.vimrc中添加了以下内容:

let logs_pat = "/ARCHIVE/logs/db_agent.log*"
au! BufEnter *_search.txt execute "/\\[DBA_LOGS\\]/,$d | $put = '[DBA_LOGS]' | $r!ls -t " . logs_pat . " | head "
除了一些人工制品外,它工作正常。问题是如何消除这些伪影

每次我带着文件*_search.txt进入缓冲区时, 1)寄存器“”的内容被autocmd添加到文件*\u search.txt的文本替换。vim状态行上出现一条消息:“再搜索10行”或“搜索点击底部,从顶部继续”


感谢

使用
/\\[DBA\u LOGS\\]/,$d
命令删除默认寄存器中的行范围。为了避免这种情况,请附加黑洞寄存器(
\uu
)。要抑制该消息,请在
:silent
前加上前缀

au! BufEnter *_search.txt execute "silent /\\[DBA_LOGS\\]/,$delete _ | $put = '[DBA_LOGS]' | silent $r!ls -t " . logs_pat . " | head "

若要保持原始光标位置,可以使用以下任一方法将其换行:

:mark z
...
:normal! g`z


/\\[DBA\u LOGS\\]/,$d
命令将行范围删除到默认寄存器中。为了避免这种情况,请附加黑洞寄存器(
\uu
)。要抑制该消息,请在
:silent
前加上前缀

au! BufEnter *_search.txt execute "silent /\\[DBA_LOGS\\]/,$delete _ | $put = '[DBA_LOGS]' | silent $r!ls -t " . logs_pat . " | head "

若要保持原始光标位置,可以使用以下任一方法将其换行:

:mark z
...
:normal! g`z


谢谢这很有效。但我注意到了另一个bug:游标将其位置更改为文件*\u search.txt的最后一行。谢谢!这很有效。但我注意到了另一个bug:游标将其位置更改为文件*\u search.txt的最后一行。