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?
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>
.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With