【问题标题】:How can I integrate jscs autofix feature into vim?如何将 jscs 自动修复功能集成到 vim 中?
【发布时间】:2016-06-06 22:21:11
【问题描述】:

我正在尝试获取一个可以在 vim 中运行的命令,以在我的代码中获取 jscs auto correct 格式问题。到目前为止,我想出了:

:nmap <F5> :!jscs -x .<CR>

没关系,但它在整个目录上运行它,我需要向 vim 确认我要重新加载缓冲区。有没有办法让 vim 只修复当前文件并在不重新加载的情况下显示更改?

【问题讨论】:

    标签: javascript vim jscs


    【解决方案1】:

    每当您保存文件时,这将通过 jscs 的修复模式通过管道传输当前文件(在实践中,您的里程可能会有所不同!):

    function! JscsFix()
        "Save current cursor position"
        let l:winview = winsaveview()
        "Pipe the current buffer (%) through the jscs -x command"
        % ! jscs -x
        "Restore cursor position - this is needed as piping the file"
        "through jscs jumps the cursor to the top"
        call winrestview(l:winview)
    endfunction
    command! JscsFix :call JscsFix()
    
    "Run the JscsFix command just before the buffer is written for *.js files"
    autocmd BufWritePre *.js JscsFix
    

    它还创建了一个命令JscsFix,您可以随时使用:JscsFix 运行该命令。 要将其绑定到密钥(在本例中为 <leader>g),请使用 noremap <leader>g :JscsFix<cr>

    【讨论】:

    • 当我将这些行添加到我的 vimrc 时,第一次没问题,我可以通过按 F3 来使用 jscs 来重新设置我的文件的样式。但是下次我想再次获取我的 vimrc 时(使用 :so %)我得到了这些错误: 处理 /home/omid/.vimrc 时检测到错误:第 197 行:E174:命令已经存在:添加!替换它按 ENTER 或键入命令继续这是我的完整 sn-p:jsfiddle.net/2pLoczws
    • 更改command JscsFix :call JscsFix() 行以在命令后添加感叹号,例如command! JscsFix :call JscsFix() 可能会做你想做的事?
    【解决方案2】:

    vim-autoformat 支持开箱即用的 JSCS。调用其:Autoformat 命令仅修复当前文件。请注意,它会编辑当前缓冲区中的文件,因此更改只会出现;不会提示您重新加载。

    【讨论】:

    • 很棒的提示!此外,使用 autocmd BufWritePre *.js Autoformat 在保存时运行自动格式化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 2010-12-17
    相关资源
    最近更新 更多