2015-04-23 14 views
9

Próbuję uzyskać polecenie, które można uruchomić w ramach vim, aby uzyskać problemy formatowania jscs auto correct w moim kodzie. Do tej pory mam wymyślić:Jak mogę zintegrować funkcję jscs autofix z vimem?

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

która jest OK, ale działa to na całego katalogu i muszę potwierdzić vim, że chcę odświeżyć bufor. Czy istnieje sposób na uzyskanie vima, aby naprawić tylko bieżący plik i zrobiłeś zmiany bez ponownego ładowania?

Odpowiedz

8

Ta rura będzie obecny plik poprzez tryb fix spółkach akcyjnych męska ilekroć zapisaniu pliku (może się wahać przy użyciu tego w praktyce!):

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 

Tworzy również polecenie JscsFix który można uruchomić Kiedykolwiek chcę z :JscsFix. Aby powiązać go z kluczem (w tym przypadku <leader>g) użyj noremap <leader>g :JscsFix<cr>.

+0

Kiedy dodaję te linie do mojego vimrc, wszystko jest ok po raz pierwszy i mogę użyć jscs, naciskając klawisz F3, aby zmienić mój plik. Ale następnym razem chcę ponownie pobrać mój vimrc (używając: tak%) Otrzymuję te błędy: Błąd wykryty podczas przetwarzania/home/rom/.vimrc: wiersz 197: E174: Polecenie już istnieje: dodaj! aby go zastąpić Naciśnij klawisz ENTER lub wpisz polecenie, aby kontynuować. Oto mój pełny opis: https://jsfiddle.net/2pLoczws/ – Omid

+0

Zmiana polecenia 'JscsFix: wywołanie JscsFix()' w celu dodania wykrzyknika po poleceniu, np. 'polecenie! JscsFix: wywołanie JscsFix() 'może zrobić, co chcesz? – actionshrimp

+0

o tak, dzięki! – Omid

4

vim-autoformat obsługuje JSCS po wyjęciu z pudełka. Wywołaj komendę :Autoformat, aby naprawić tylko bieżący plik. Zauważ, że edytuje plik w bieżącym buforze, więc zmiany pojawią się; nie pojawi się prośba o ponowne załadowanie.

+0

Świetna rada! Dodatkowo uruchom auto-format przy zapisie z 'autocmd BufWritePre * .js Autoformat'. –

Powiązane problemy