这个vim脚本保存当前文件并通过js-beautify运行,每次离开insert
模式并返回normal
模式。通过js-beautify运行vim缓冲区内容而不必保存文件
我想通过js-beautify直接运行缓冲区内容而不必先保存文件,使写入事件明显滞后,从而提高效率。
function! TidyAndResetCursor()
let cursor_pos = getpos('.')
:w
%!js-beautify %
:w
call setpos('.', cursor_pos)
endfunction
augroup JSTidy
autocmd!
autocmd InsertLeave *.js :call TidyAndResetCursor()
augroup END
的第二个问题是,有时(例如期间undo
)的cursor_pos
复位到文档中的第一行中,也许是因为保存光标位置不再存在。它应该跳回到最接近的现有值,而不是默认第一行。
非常感谢!
我想你只是想''!js-beautify -'这将取代你当前的缓冲区。在您明确写入之前不会保存到磁盘。短划线文件名仅仅意味着stdin对js-beautify。 –
真棒,谢谢! – overflower
见下文,我的js-beautify不喜欢'-'输入,它从字面上搜索名为'-'的文件,不知道如何解决这个问题.. – overflower