VIMおよびJSLint

私はほとんどHabrahabrで書いていないことが判明しました-これには理由があります。 しかし、vimでJavaScriptを使用するすべての人に確実に役立つ1つのことを共有したいだけでなく、Habrahabrにはそのような資料が見つかりませんでした。





これは奇妙に思えるかもしれませんが、vimでの作業は本当に便利です (特にコンソールで-guiから解けているので、sshを静かに操作できますが、guiでも同じことができます)。 この点で、素晴らしいvimスクリーンキャストの作者であるDerek Wyattに完全に同意します。 確かに、vimは少し慣れている必要があるため(多少慣れる必要があるため)、vimが少し異なるエディターであることに気付いた後に便利になることは注目に値します。 カスタマイズについて説明します。



多くのプログラムを作成し、専門的にコードの品質がエラーの数に影響することを知っています(当然、これが唯一の要因ではありません)。 また、彼らは多くの場合、プログラマーが自分自身や他の人のコードで疑わしい、潜在的に危険なコンストラクトや単なる構文エラーをチェックするのに役立つlintツール(Stephen Johnsonによって書かれたlintプログラムで始まる)の存在を認識しています。 また、PHPのリントモードを簡単にオンにできる場合は、2行(〜Andrey Zmievsky による スライドファイル )を~/.vim/ftplugin/php.vim



に追加するだけです。



set makeprg=php\ -l\ %

set errorformat=%m\ in\ %f\ on\ line\ %l








使用:make to test、次にJavaScriptをテストするには、もう少し努力する必要があります。これについては、後で説明します。



JavaScriptには、jsコードをチェックするためのオンラインツールJSLintがあります。 私たちのタスクは、オフラインで起動することです。



これには、オペレーティングシステムと利用可能なプログラムに応じて、

  1. しばらく
  2. 当然、 VIM自体
  3. JSLintソース
  4. JavaScriptエンジンの1つは、 SpiderMonkeyRhino 、またはその他のエンジンです。 OSXの所有者は少し幸運でした-JavaScriptCore(Webkitのエンジン)をすぐに使用できます。


vimがあり、JavaScriptエンジンがすでにインストールされているとしましょう(インストールについて質問がある場合は、コメントで質問するのが最善です)。 また、WSH Command LineとRhinoの状況を個別に明確にすることも価値があります。それらには、それぞれwww.jslint.com/wsh/index.htmlwww.jslint.com/rhino/index.htmlという特別なバージョンがあります。 SpiderMonkey / JavaScriptCoreでJSLintを実行する方法について説明します。



目標を達成するには、 ~/.vim/ftplugin/javascript.vim



を編集し、そのような行をそこに追加する必要があります



if filereadable( 'PATH_TO_JS_ENGINE' )

set makeprg=PATH_TO_JS_ENGINE\ ~/.vim/jslint_runner.js\ <\ %:p

set errorformat=Line\ %l\ column\ %c:\ %m

endif








PATH_TO_JS_ENGINEはjsエンジンへのパスです(macの場合は/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jscで 、SpiderMonkeyをインストールした場合はデフォルトで/ usr / local / spidermonkey / bin / jsです ) 。



その後、fulljslint.jsの最後に次のコードを追加します



 var body = [], line, num_empty_lines = 0; // ..   js-      , //        ,   //    ,    50 while ( 50 > num_empty_lines ) { line = readline(); body.push( line ); if ( 0 === line.length ) { // blank line, so increment num_empty_lines += 1; } else { // not blank, so reset num_empty_lines = 0; } } body.splice( -num_empty_lines ); body = body.join( "\n" ); //    «Good Part»,    whitespace options = { bitwise : true, // if bitwise operators should not be allowed eqeqeq : true, // if === should be required glovar : true, // if HTML fragments should be allowed regexp : true, // if the . should not be allowed in regexp literals undef : false, // if variables should be declared before used onevar : true, // if only one var statement per function should be allowed. newcap : true, // if Initial Caps must be used with constructor functions immed : true, // if immediate function invocations must be wrapped in parens plusplus : true, // if increment/decrement should not be allowed nomen : true // if names should be checked }; //      ,   //   js- /*jslint onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, strict: true, newcap: true, immed: true */ var result = JSLINT( body, options ); if ( !result ) { for ( i = 0; i < JSLINT.errors.length; i+=1 ) { var err = JSLINT.errors[i]; print( 'Line ' + err.line + ' column ' + err.character + ': ' + err.reason ); } } else { print( 'No errors found' ); }
      
      







結果のファイルを~/.vim/jslint_runner.js



として保存します。



最後のコードは私の個人的なものではなく、インターネットで見つけて少し編集しただけです。



~/.vim/ftplugin/javascript.vim



~/.vim/jslint_runner.js



を読み込んだ後、次の~/.vim/jslint_runner.js



を実行する必要があります:so ~/.vim/ftplugin/javascript.vim



~/.vim/jslint_runner.js



:so ~/.vim/ftplugin/javascript.vim



または単にvimを再起動します。 その後、安全に:make



実行できます。エラーがある場合は、 :cn



および:cp



:h quickfix



)でエラーをナビゲートします。



また、vimのプラグイン( )とこのタスクの他の議論( )があることも知っています。 あなたがこの主題に関して有用な何かを知っているなら-コメントへようこそ、私は感謝します。



追伸 WSH以外にもWindowsにはいくつかの違いがあります。vimのホームフォルダーは別の場所にあり、.vimrcはvimrcに変わります。



pps この記事はvimを使用して作成されています。




All Articles