我有以下问题,或者说有想法,与vim。当我写乳胶文档时,我想自动打开一个文件~/.vim/latex_hints
,我在右侧的 vsplit 中收集了一些提示,快捷方式,解决方法......提示文件应该只读加载,并在关闭乳胶文档时自动关闭。
经过几次实验后,我将以下命令添加到我的vimrc中:
function Handletexfile()
setlocal cc=80
setlocal wrap
setlocal textwidth=80
belowright vsplit +setl\ ro\ nomodifiable ~/.vim/latex_hints
endfunction
autocmd BufRead,BufNewFile *.tex call Handletexfile()
和
function Handletexfileexit()
let tablist = []
call extend(tablist, tabpagebuflist(tabpagenr()))
for b in tablist
echo b . " ". bufname(b)
if bufname(b) =~ "vim/.*_hints"
echo "Close buffer..". b
execute "bdelete! ".b
endif
endfor
endfunction
autocmd BufWinLeave *.* call Handletexfileexit()
当我打开tex文件时,我的提示文件在右侧显示为只读且不可修改。但是当我使用:q
或:wq
关闭时,会列出当前选项卡中打开的缓冲区,并且if
语句会选择与提示文件匹配的缓冲区。但我得到以下输出
1 abstract.tex
2 ~/.vim/latex_hints
Close buffer..2
我的vim因为段错而崩溃了。
答案 0 :(得分:1)
您的要求的第一部分非常简单地转换为Vimscript:
autocmd BufWinEnter <buffer> belowright vsplit +setl\ ro ~/.vim/latex_hints
将其放入~/.vim/after/ftplugin/tex.vim
,或将:autocmd FileType tex
添加到上述命令中。
后一部分更复杂;在BufWinLeave
上,您必须使用bufwinnr()
检查已打开的作弊文件的所有其他窗口,转到它(:wincmd w
)和:close
。< / p>
答案 1 :(得分:0)
作为替代方法,请使用预览窗口和提示文件。预览窗口为您提供了一些优势:
<c-w>z
从任何其他窗口轻松关闭它<c-w>P
轻松从任意窗口跳转到预览窗口(通过<c-w>p
跳回来)您可以通过:pedit
命令执行此操作。例如:
autocmd BufWinEnter <buffer> pedit +setl\ ro ~/.vim/latex_hints
就个人而言,我觉得创建命令或映射以打开提示文件会更好,因为随着时间的推移,最终可能会增加文件。我还要将'bufhidden'
设置为wipe
并使用'nobuflisted'
取消列出缓冲区。
您可能还希望了解一个不错的snippet plugin。