问题
I'm trying to get a command I can run within vim to get jscs auto correct formatting issues in my code. So far I've come up with :
:nmap <F5> :!jscs -x .<CR>
which is ok, but it runs it on the entire directory and I need to confirm to vim that I want to reload the buffer. Is there a way to get vim to fix the current file only and didsplay the changes without reloading?
回答1:
This will pipe the current file through jscs's fix mode whenever you save the file (your mileage may vary using this in practice!):
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
It also creates a command JscsFix
which you can run whenever you want with :JscsFix
.
To bind it to a key (in this case <leader>g
) use noremap <leader>g :JscsFix<cr>
.
回答2:
vim-autoformat supports JSCS out of the box. Invoke its :Autoformat
command to fix only the current file. Note it edits the file in the current buffer, so the changes will just appear; you will not be prompted to reload.
来源:https://stackoverflow.com/questions/29819168/how-can-i-integrate-jscs-autofix-feature-into-vim