首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不保存文件的情况下通过js-beautify运行vim buffer内容

在不保存文件的情况下通过js-beautify运行vim buffer内容
EN

Stack Overflow用户
提问于 2015-12-13 10:21:51
回答 1查看 190关注 0票数 1

这个vim脚本保存当前文件,并在我每次离开insert模式并返回到normal模式时通过js-beautify运行它。

我想让它更有效率,通过js-beautify直接运行缓冲区内容,而不必首先保存文件,写入事件会有明显的滞后。

代码语言:javascript
复制
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重置为文档中的第一行,可能是因为保存光标位置不再存在。它应该跳回到最接近的现有行,而不是缺省到第一行。

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2015-12-13 18:01:06

此命令from my own config将使用js-beautify格式化给定行(默认情况下是整个缓冲区),并使用当前shiftwidth,并恢复光标位置:

代码语言:javascript
复制
" reformat selection
command! -buffer -range=% Format let b:winview = winsaveview() |
  \ execute <line1> . "," . <line2> . "!js-beautify -f - -j -B -s " . &shiftwidth |
  \ call winrestview(b:winview)

用法:

代码语言:javascript
复制
:Format        " format entire buffer
:3,15Format    " format given lines

有关命令行选项,请参见$ js-beautify --help

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34247339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档