だから、私はいくつかのvimのスクリプトを学ばなければならなかったと私はそれを作りました!
私は~/.vim/plugin/jsbeautify_replace.vim
から~/.vim/plugin/jsbeautify.vim
をコピーして、それを修正しています。ここでdiff jsbeautify.vim jsbeautify_replace.vim
です:
1c1
< if &cp || exists("loaded_jsbeautify")
---
> if &cp || exists("loaded_jsbeautify_replace")
4c4
< let loaded_jsbeautify = 3
---
> let loaded_jsbeautify_replace = 3
286,291c286
< "function! g:Jsbeautify(js_source_text)
< function! g:Jsbeautify()
< if !s:is_js()
< echo "Not a JS file."
< return
< endif
---
> function! Jsbeautify_replace(js_source_text, indent)
310c305
< let lines = getline(1, "$")
---
> "let lines = getline(1, "$")
312,313c307,308
< let s:input = join(lines, "\n")
< "let s:input = a:js_source_text
---
> "let s:input = join(lines, "\n")
> let s:input = a:js_source_text
617c612
<
---
>
619,622c614,615
< :g/.*/d
< let @0 = ret
< :put!0
< endfunction
---
> let lines = split(ret, '\n')
> let result = ""
624c617,624
< nnoremap <silent> <leader>ff :call g:Jsbeautify()<cr>
---
> for line in lines
> let result .= a:indent." ".line."\n"
> endfor
> ":g/.*/d
> "let @0 = ret
> ":put!0
> return a:indent."<script type=\"text/javascript\">\n".result.a:indent."</script>"
> endfunction
そして~/.vim/plugin/tidy_jsbeautify.vim
にいくつかのスクリプトを書かれている:
function! g:tidy_js()
%!tidy -i -xml --char-encoding utf8 --wrap 0 --show-errors 0 2>/dev/null
%s#\(\s*\)<script\_\s*type="text/[jJ]ava[sS]cript"\_\s*>\(\_.\{-1,}\)</script>#\= Jsbeautify_replace(submatch(2),submatch(1))#g
endfunction
これは私のバッファにきちんと呼び出して、すべてのスクリプトタグの内容にjsbeautify +スクリプトタグのインデントがします追加される。そして~/.vim/ftplugin/html.vim
に:今
:map <buffer> <C-f> :call g:tidy_js()
そして、私の全体のhtmlファイルがうまくCTRL+F ENTER
:)
制御シフトはおそらくvimのに認識されないショートカットにだけフォーマットされています。 – Benoit
他のファイルタイプの ''には、他のフォーマッティングツールがあり、動作します。 –
microo8
@ microo8 ''が ''と同じ結果をもたらすかどうかチェックしましたか? 1.入力キューの内部表現はこのシーケンスを保持できません。 2.端末エミュレータはこのシーケンスを ''(rxvt-unicode)として送信したり、まったく送信しない(konsole)可能性があります。 '解析時に3.私は' を実行したときに、 'nmapの smth'を行った後、私のvimは' smth'を立ち上げているという事実は、 ''は、\ x06'( '^ F')'に変換される 'ことを意味しますmap'引数を。 –
ZyX