【发布时间】:2017-11-24 14:38:55
【问题描述】:
我有带有彩色日志条目的日志文件(比如说扩展名为 *.smt2),其中颜色由 ansi 转义码定义。我安装了基于AnsiEsc.vim的vim插件。
现在,当我打开我的 vim 编辑器时,我需要输入 :AnsiEsc。 如何将 :AnsiEsc 添加到我的 .vimrc 以显示在我的默认视图中?
【问题讨论】:
标签: vim ansi-escape
我有带有彩色日志条目的日志文件(比如说扩展名为 *.smt2),其中颜色由 ansi 转义码定义。我安装了基于AnsiEsc.vim的vim插件。
现在,当我打开我的 vim 编辑器时,我需要输入 :AnsiEsc。 如何将 :AnsiEsc 添加到我的 .vimrc 以显示在我的默认视图中?
【问题讨论】:
标签: vim ansi-escape
您的 autocmd 仅适用于作为命令行参数传递的第一个文件,因为 :AnsiEsc 命令仅适用于当前缓冲区。它将丢失通过:edit 或:split 打开的文件。最好使用BufRead 事件:
autocmd BufRead * AnsiEsc
另外,我想知道您是否只使用 Vim 来查看日志文件(那会很遗憾)? :AnsiEsc 命令可能会干扰编辑其他类型的文件。
通常的解决方案是定义一个自定义文件类型,例如log。然后,您可以通过~/.vim/ftplugin/log.vim 中的以下脚本为这些文件启用插件:
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
finish
endif
AnsiEsc
(您还需要在.vimrc 中包含:filetype plugin on。)
要打开一个日志文件,你必须指定文件类型:vim "+setf log" logfile,或者稍后在 Vim 中通过:setf log。当然,如果日志文件名有规律或者里面有一定的通用字符串,你可以花点心思写一个文件类型检测;见:help new-filetype。或者你写一个 shell 别名,例如alias vimlog='vim +setf\ log'
【讨论】:
log 类型(您可以调整它),请将au BufRead,BufNewFile *.smt2 set filetype=log 放入~/.vim/ftdetect/log.vim。 CP。 :help new-filetype了解详情。