問題コミットログを書く、メールを書く、仕様を記述する、その他一般の自然言語で文書を記述するとき、もっとも頻繁に使われる言語は英語でしょう。問題ノーマルモードでは<C-g>やg<C-g>などバッファの情報を表示するコマンドがあるのに、ヴィジュアルモードではありません。東京電力は昨日、輪番停電のグループ分けを発表しました。その情報を有志の方がCSVにしていただき、それをuniteと組みあわせて検索するuniteプラグインが作成されました。開いているファイルが外部で変更されることは割とよくあることでしょう。普段のコーディングにおいて、ある程度のコードの塊をまとめてコメントアウトしたくなることがありせんか。scriptを書いたり、あるいはVimを用いて他の言語でプログラミングを行う日々を通して、Vimに対して様々な要望がでてくることと思います。定義されているマッピングを調べたくなった時はないでしょうか。新しいファイルの編集を始めるとき、そのファイルがあるべきディレクトリが存在しないことがあります。ファイルを保存することができません。編集中のファイルのバックアップ、これをスワップファイルと呼びます。200番目のHackです。これまであなたは199ものHackを習得してきました。さらなる高みを目指して、日々修練を怠らないようにしましょう。#45のおさらいです。関数は「()」を末尾に持つタグを持っています。コマンドで新しいウィンドウを開くことができます。この時、水平分割なら上か下に、垂直分割なら左か右にそれぞれ新しいウィンドウが開かれることになります。作成出来ると更に便利になることは疑いようがありません。センター試験も終わり、受験生の方々はマークシート上でVimが使えればどんなに良いだろうと夢想にふける時期は過ぎ、もはや春の暖かさすら感じる今日このごろです。virtualeditはすばらしいものです。この状態からマージを行うことも可能です。後編では残りの設定について解説をします。新年あけましておめでとうございます。いまこの記事はVancouver時間で30日木曜の夜5:54pm、もう外は真っ暗でございます。Vimではインデントに関する様々な設定(オプション、コマンド、マッピング、...)があります。機能によって折り畳まれた部分の表示は、カスタマイズすることができます。Vim使いのなかには、様々な理由によりEmacsから乗り変えてきた人も多いかと思います。VimにはColorSchemeという概念があり、端末で利用可能な色のうちどの色をどの構文要素に割り当てるかのセットを取り扱うことができます。Vimでインサートモードに移り、テキストを入力します。インサートモードを抜けます。間違った部分があったのでuを押します。指定すると、折り畳みの定義を式で指定することができます。中編では、主にneocomplcacheのキーマッピングについて解説をします。windowを使いこなすという記事を参考に、:キーにq:相当の機能を割り当てた人が相当数いると思います。読者の中にはkaoriya様が作成しているVim日本語ドキュメント(以下ドキュメント)の存在を知っている方が多いでしょう。したメモを取ったりしたいとき、いちいちファイル名を付けていられません。ここでは簡単に使い捨てのファイルを作成する方法について検討をします。問題バッファ内を/で検索することができます。Vim正規表現が使えます。カーソル下の単語を*で検索することができます。最近Twitterアカウントをうっかり削除してしまい体調が良くなり身長が2cm伸びたtyruです。はてなランド復活しねーかな。折り畳みに対する操作と言えば基本は畳む/開くですが、それら以外にも様々な操作があります。最近、neocomplcacheはかなり有名になってきました。設定項目が多いせいで使いこなせない、という人は後を絶たないようです。(1/2)では、RSpecをVimで走らせるためにはquickrunを用いるのが最適であること、そしてその使い方を説明しました。Vimを使っていると全ての操作をキーボードで行ないたくなります。GVimのウインドウを動かすなどはマウスを使ったりします。折り畳みには様々な要素があり、それらを制御するためのオプションが多くあります。ここでは、それらのオプションの一部を紹介します。一行目に#!catと書きます。二行目以降は何を書いてもかまいません。これで、quickrunを実行しますと、編集中ファイル自体が出力されます。VimにはEmacsとは違ってタイマー機能がありませんが、タイマーが欲しくなることがままあります。ここではタイマー機能について議論を行い、Vimで模倣する方法について述べます。問題Rubyでプログラムを書くときは必ずRSpecでその仕様を記述することが推奨されています。VimからRSpecを呼び出す方法は多々あり、一般に使われている方法は以下のいずれかでしょう。数あるエディタの中には現在編集中の関数名をステータスバーに表示させたりできるものがあります。Vimでもできないでしょうか。長いテキストやソースコードを閲覧したり編集する場合、全体の俯瞰が知りたかったり、必要のない部分を無視したいことがあります。折り畳み機能が便利です。前編からかなり間が空いてしまいましたが、ここではneocomplcacheのプラグインの記述方法を解説します。7.3がリリースされました。それぞれのプロジェクトの動向を見てみましょう。※大幅に加筆修正しました。ローマ字の大文字と小文字を変換する機会は意外に多いです。これを行うための便利な機能があります。押すと、カーソル下のローマ字の大文字/小文字を相互に変換します。今回はインクルード補完です。neocomplcacheに実装されたインクルード補完はあらかじめ設定しておく必要がありますが、使いこなせばタグ補完を越えた使い勝手となります。問題JavScriptはその動的性と柔軟な構文により、ブラウザ上で動作するアプリケーションに限らず多くの場で活躍する便利なプログラミング言語です。それでもいくつか問題が残されています。viの前身であるedは、シェルスクリプトなどで文字列置き換えのために使うことができます。version7.3をそのまま紹介する形にします。履歴は消えてしまいます。modeですが、使いこなすうちに様々な欠点が目につきます。問題Vimのデフォルトの状態でJavaScriptのコードを書くと、以下のような問題が発生します。コマンドラインモードに入ると使えるコマンドは、ユーザが自由に定義することができます。コマンドを使用します。書式は以下のようになります。以下のようにウインドウが分割されています。これを以下のように配置しなおすにはどうすればよいでしょうか。今回はタグ補完とディクショナリ補完です。タグ補完は微妙ですが、ディクショナリ補完は便利に使えるでしょう。3]のように表現することができます。#43ではタグについての基本的な使用方法をまとめました。本稿ではさらに踏み込んだタグジャンプの活用法をまとめます。置換を行いたい場合でも、パターンが合っているか、そもそも対象が存在するかを確認するために、まずは検索をしてみるということはよくあります。普段何気なく使っているVimとGVimですが、二つのVimには様々な違いがあります。違いを正しく知って、使い分けることが真のVim使いへの近道です。問題Vimの:eや:newなどはカレントディレクトリにあるファイルを開きます。補完対象もカレントディレクトリからのファイルです。プログラミングでは様々なコーディングスタイルがあり、Vimにはそれに沿った編集をするための様々なオプションがあります。操作していると、たまにキー操作に対して意図しない挙動が発生することがあります。設定されているからです。四回目の今回はシンタックス補完を解説します。問題Vim使いのあなたは、これまでに鍛えてきたあなたのVimのスキルを最大限有効活用できる仕事をしたいと考えることでしょう。世の中には二種類の仕事があります。分かりやすいKey-mappingsを定義するの方法だとグローバルなマッピング空間を使ってしまうのが玉に瑕です。VimがEmacsと比較して劣っているのは、コマンドの非同期実行だけではなく、シェルとの連携も挙げられます。問題いくつかのプログラミング言語における関数呼び出しないしメソッド呼び出しは、以下のような書き方をすることが多いです。問題Vimはテキストエディタですから、通常は対話的に使います。問題screen+zshで別スクリーンのカレントディレクトリに簡単にcdできるcddというzshスクリプトがあります。filetype=cと入力すると現在のバッファにシンタックスハイライトやftpluginなどの設定をロードすることができます。タブやインデントの挙動を制御するオプションが多数あり、細かい指定ができます。これらに関するオプションについて簡単に紹介します。前回はPythonインタフェースの基本を紹介しましたが、今回はもう少し突っ込んだ内容について紹介しようかと思います。多くの方はTabキーを補完のために使うため、以下のような設定をしていると思います。何らかのプラグインが原因でVimの動作が怪しいといった状況になったときなど、Vimをデフォルトの状態で起動したいことがあります。テキストエディタですが、バイナリファイルの簡単な編集もできます。問題Rubyでは文字列リテラルの中に#{}で囲まれた式を書くと展開されます。複数のファイルから検索するでは:grepについて紹介しました。大量にあるテキストファイルから特定のテキストを検索したい場合があります。プログラムが有名ですが、やはり検索結果から直接該当のファイルにジャンプできると便利です。三回目の今回はneocomplcacheのキーワード補完と拡張プラグインを解説します。問題UNIXのechoコマンドで"hello!"と表示させる必要があるとします。Vimの:!を使えば出来そうな気がします。問題1ふつうのテキストエディタであればクリップボードにあるテキストがペーストされ、コピーしたテキストはクリップボードに保存されます。矩形選択を行うことができます。非常に便利な機能ですが、矩形の端の行の行末にテキストがない場合、選択が困難、もしくは不可能になってしまう場合があります。VimがEmacsと比較して一番劣っている機能として、コマンドの非同期実行があげられます。ここでは現状のコマンド実行の問題点とEmacsとの比較、その解決方法について議論を行います。Emacsでは様々な日本語入力のプラグインがあります。Vimでもkeymapなどの設定をいじれば可能ですが、あまりkeymapファイルをいじった人は少ないでしょう。問題カーソル位置から行末まで削除するにはDします。カーソル位置から行末まで編集する(削除して挿入モードに入る)にはCします。問題ときおりバッファ名をペーストしたいことがあります。2010年1月31日(日)、第五回目となる関西でのVim勉強会が開催され、大盛況の中終了しました。アプリケーションではよく終了時にウィンドウの位置とサイズを記憶し、次回起動時に復元するものを見かけます。設定次第で同様のことが可能です。二回目の今回はオムニ補完です。AutoComplPopでも自動呼び出しが可能ですが、neocomplcacheでは、それに改良を加え、設定しやすくなっています。問題Vimのコマンドラインでホームディレクトリを入力する機会は比較的多いものの、~/という文字列を見ただけで小指に疲労が走ってくるのは、ほとんどのVimユーザに共通するのではないでしょうか。2010年01月31日(日)、京都でVim勉強会が開催されます。参加登録や詳細はこちらを参照ください。(:s)による置換処理は頻繁に使います。vimtutorを終わらせた。定義したいと思うでしょう。日本のVim業界の近況についてを若者に容易に伝えるのを目的とし、巷で静かなブームとなっている携帯小説の形式を用いて文書を紡ぎ上げることに成功した。自分でプラグインを書く場合、プラグインが動作しているVimのバージョンやVimで有効になっている機能を確認したい場合があります。ここでは、そんなときに役立つ関数について解説します。Vimとそれ以外のソフトウェアを組み合わせて使うにあたって、:!と:r!が非常に重要な役割を果たしています。ファイルの種類によって独自の設定を自動的に読み込むことができます。それとは別に、ファイルの置いてある場所に応じて何かしら設定を行ないたい場合もあるでしょう。Hacksでは、neocomplcacheの機能を詳細に解説していきます。一回目の今回はファイル名補完です。地味な補完ですが、うまく活用すると非常に便利です。Vimというプレゼンツールソフトウェアは、ソフトウェア開発にも用いることができるということで知られています。ファイルは起動時に読み込まれる様々な設定を書いておくファイルですが、場合によっては全ての内容を1つのファイルに書きたくない場合もあります。Vimはキーボードから手を外さずに操作が行えるので、慣れると大変便利です。時にはマウスを使いたいときもあることでしょう。ここではVimでマウスを使用するための設定法を説明します。通常、Vimでは縦横に画面を分割して複数のファイルを同時に閲覧しながら編集することになります。Vimはシェルの機能を呼び出すことができます。WindowsではデフォルトのシェルがCMD.exeになっており、UNIX系のシェルと比較して見劣りがします。問題gitを利用して開発を行なっていると、しばしば現在作業中のブランチとは別のブランチのファイルを参照したいときがあります。パスワード等の設定を記述する必要があります。便利なプラグインがたくさんありますが、大量にインストールすると起動に時間がかかるようになってしまいます。VimScriptには、残念ながら疑似乱数を生成するための関数が存在しません。工夫すれば、VimScriptでも乱数生成をすることができます。(正確にはコマンドではなくシェル組み込みの機能かもしれません)。new-omni-completion)を定義できるようになりました。Vimを使っている人の大半は.vimrcを編集して自分好みにカスタマイズしていることかと思われます。日本語には様々なエンコーディング方式があるので、扱う際には気を付ける必要があります。機能付きでコンパイルされていれば、これらを正しく扱うことができます。neocomplcacheはデフォルトのままでも使いやすいですが、自動補完になれてくると、自分でもneocomplcacheの機能を拡張させたいと思うでしょう。問題ターミナル上で動作するVimと、ターミナルの外で動作するGVim、またはその亜種であるMacVimなど、これら全てのVimは等幅フォントしか用いることができません。実は検索パターンに「/」をそのまま含めることができません。使っているとたまにエラーメッセージが表示されます。後編ではneocomplcacheの基本的な特徴について解説しました。RubyにはRefeというリファレンスをひくためのコマンドラインツールが存在します。コマンドラインツールはそれはそれで便利なのですが、リファレンスをひくときは大抵コードを書いている時です。問題^という記号は入力が困難なことで知られています。Vimでは一般に^というキー入力を含むものは非推奨コマンドであることを暗黙のうちに促すものとして知られています。編集操作を繰り返すでは.コマンドを用いて単純な編集操作を繰り返し行う方法について解説しました。コマンドはインタラクティブに使用する時のために末尾が省略可能です。Vimには折りたたみやカーソルの状態をファイルに保存し、次に開くときに設定を読み込む機能があります。以前編集していた場所がすぐ判るので便利です。標準で表示しているステータス行は非常に貧相です。情報としてもあまり役に立つものではありません。今回のHackでは、ステータス行を自分の好みにカスタマイズする方法を紹介します。問題Vimでコード片をヤンクして別の場所で貼付ける際に、インデントの深さが異なる場合があります。インデントの再調整をどのようにして楽に行なうことができるでしょうか。mode中でのちょっとした誤入力を簡単に訂正できる方法を紹介しました。検索パターンとしての両者の違いはなんでしょうか。Linux環境において標準的な日本語入力システムであるAnthyは変な癖が無く便利なのですが、ATOKに慣れた身では誤変換の多さが目につきます。Excel形式はともかく、CSV形式のファイルであればプレーンテキストですのでVimで編集する場合もあるでしょう。問題Vimで表を記述するとき、整形のため自分でスペースを追加する必要があるシーンがあります。問題テキスト入力中に誤入力をしてしまうことはしばしばあります。正規表現においてマッチする範囲を制限する方法を紹介しましたが、他の正規表現エンジンで同じようなことをしたい場合、肯定先読みや否定先読みと言った機能が使われます。Vimの戦闘力を効率的に上昇させるためには、素早く.vimrcや.gvimrcを編集できる環境が必要となります。vimrcの編集をしたことがある人であれば、ほとんどの人が’set’は使ったことがあるでしょう。問題と解決Vimで英文を入力するとき、他のメーラや多くのアプリケーション同様、辞書を用いた英単語スペルチェックを行なうことができます。問題バッファ中のある単語FOOを別の単語BARに置換するとしましょう。正規表現には変わった機能として、マッチングの範囲を制限する機能があります。他の正規表現エンジンではあまり見かけない書き方ですが、使い方さえわかれば非常に便利な機能です。Vimは独自のカレントディレクトリを持っていて、タグファイルを参照するときにはカレントディレクトリにあるタグファイルを利用します。#67で紹介されていますが、まだまだSubversionを使用している人も多いでしょう。今回はVimからSubversionを扱う方法を紹介します。Vimの中でGitを快適に使うためのプラグインがいつくかあります。その中からmotemenさん作のgit-vim.vimを紹介します。下記の暗号を解読してください。バッファ全体ではなく、範囲を制限して部分的に検索を行いたいことがあります。それを行うための正規表現の構文があります。選択した範囲にマッチする正規表現です。ターミナル上のVimはGVimよりも機能が制限される上に、動作が重くて使いにくいものです。大多数の人は、:helpを実行したとき、表示されるヘルプは英語だと思います。カーソル下のキーワードを検索するでカーソル下のキーワードを単語境界を考慮した上で検索することができます。問題ファイルの内容に他のファイル名が記述されていることは少なくありません。Makefileなら関連ファイルの名前が直接記述されます。Vol.52にVim特集記事「Vimの流儀」が掲載されました。検索や文字列のマッチングをする際、ローマ字の大文字と小文字を区別するかどうかを様々な方法で制御できます。Key-mappingsを定義する場合、Prefix-keyを決めておいてまとめて定義できると分かり易くなって便利です。VimからTwitterへ投稿するプラグインの紹介です。プログラマであれば、プログラミング中にTwitterの閲覧や投稿をしたいと思うときがあるかと思います。書き上げたソースコードを整理するとき、空行を挿入する機会が比較的多くあります。空行を挿入する一般的な方法は以下の二つです。変数や関数などの宣言位置に移動することが挙げられます。随所で強力な正規表現を利用することができます。正規表現のメタ文字に関して少々特殊な機構を持っています。Vimを使いこなすためには、自分でキーバインドを変更するのが第一歩です。ShiftをVim上で再現する方法について考えます。長い単語を入力するのは非常に面倒な上、タイプミスなどもありえます。長い単語の略語を登録しておくことで、入力の手間を減らす方法を紹介します。問題HTMLやTeXを直接書かずに、より人間にとって読み書きしやすい他の高水準マークアップ言語を用いて記述することがあります。問題どのような種類のテキストを編集していても頻出する作業として、あるキーワードを検索することが挙げられます。バッファの変更や保存を制限することができます。これにより、誤ってファイルを上書きするのを防いだり、閲覧専用のバッファを作ることができます。自動補完の後編では、究極の自動補完環境であるneocomplcacheについて解説します。筆者がよくやってしまうミスとして、自分の権限で書き込めないファイルを開いてしまい、書き込み時に気づくというものです。問題VimではEmacsなど他のエディタに比べてCtrlキーをあまり使わなくてすむものの、それでもVim以外を使用時にCtrlキーの出番は多いです。日程などが決まったので、全面的に修正しました。何度もすいませんこちらでは初めまして。同一ファイル内であってもカーソルが様々な位置へ飛びます。膨大な量のヘルプが付属しており、大抵のことはヘルプを見れば解決します。mode補完について解説しました。ここでは補完を自動的に行う方法について解説します。EclipseなどのIDEにはメソッドや変数を利用している箇所から、それらを宣言しているところへジャンプする機能が備わっています。問題:vspや:vnewなどで画面を縦に分割し、Vimの中で左右にウインドウが配置されます。問題マルチウィンドウを活用してウィンドウ分割を繰り返していると、しばしば分割のレイアウトを変更したいときがあります。テキストデータには空白スペースやタブ文字など通常は表示されない文字が含まれていますが、編集する際はそれらの文字が表示された方が便利な場合があります。Vimmerにとって、自分の戦闘力は.vimrcの行数で表されます。普通に計測したのでは、空行やコメント行も戦闘力に含まれることになってしまい、本当の実力を表さず不公平です。Wikiという文章の作成・編集を行うツールがあります。問題あなたの身の回りにVim使いがいない場合、いつものようにVimを使っているときに、ときには一抹の寂しさを覚えることもあるのではないでしょうか。毎回:writeでバッファを保存することに疲れました。自動的に保存されるようにできないでしょうか。以下の内容をvimrcに追加します。コマンドを実行させることもできます。Vimのディレクトリ構成を知ることで、プラグインのインストールや動作のカスタマイズが容易になります。ここではVimの基本的なディレクトリ構成について解説します。あるサーバーに保存してあるテキストファイルの編集を行いたいとします。VimM#4のログというかメモです。問題Vimは編集中ファイルと同じディレクトリにスワップファイルをまき散らします。VimM#4が無事終了しました。当日は約45名もの参加者が冷房の切れた会場に集合するという非常にVim熱の高まった時間となりました。コマンドの中には範囲を指定できるものがあります。与えることができます。ここでは範囲の指定の仕方について解説します。modeの補完はinput()による入力や、自分が定義したコマンドにも有効です。概要Vimでchangelogを記述する方法を紹介します。Unixのメモ技術を参考にするといいでしょう。modeで<C-a>を打鍵するたびに、カーソル下の数値を1加算した値に置き換えることができます。日常的に複数のファイルを取り扱っていると、同じ変更を複数のファイルに対して行いたい場合があります。タブページという機能が備わっています。タブページを利用することで、複数のファイルがより扱いやすくなります。参加方法http://atnd.org/events/809で参加申請してください。mode補完には豊富な設定項目があります。mode補完における代表的な設定項目を紹介します。Vimにはソースコードのハイライト機能が備わっており、対応しているファイルフォーマットかなり豊富です。問題XMLの各要素は開きタグと閉じタグの組を用いて表現します。閉じタグを毎回手入力する作業は不毛で、スムーズに入力が支援されるべきです。日常的に複数のファイルを取り扱っていると、同じ変更を複数のファイルに対して行いたい場合があります。:%substitute/foo/bar/gのような単純な置換を行うとしましょう。固定して欲しかったり、右端で折り返して欲しくなかったりすることがあります。modeにおける補完機能についても習熟しましょう。vimdiffVimでファイル間の差分をみたい場合、vimdiffを使用します。日常的に複数のファイルを取り扱っていると、ある特定のファイルを編集・参照する機会が多いことに気付くでしょう。オプションの中には、ローカルな値を持つものがあります。ローカルな値とはすなわち、特定の範囲にのみ適用される値を持つことができると言うことです。modeの補完を自作することができれば、Vimの可能性が無限大に広がります。modeにおける補完関数の作り方についてレクチャーします。autocmdとは簡単に説明するとautocmd(オートコマンド)とはファイルやバッファの読み書きなどのイベントに応じて自動的に実行されるコマンドです。デバッグ用に一時的に埋め込んだ命令文を一度に削除する、などといった編集作業を簡単に行なう方法を紹介します。Lingrのサービス停止に伴い、Lingrに解説していたvim-users.jp用チャットルームをIRCチャンネル#vim-users.jp@freenodeへ移行することになりました。概要テキスト編集が単一のファイルのみで済むことは稀です。実際には複数のファイルを取り扱うことがほとんどです。使う上で重要な概念として、バッファとウィンドウがあります。これらについてその概要を見ていきます。modeの補完を使いこなすには、.vimrcで適切に設定することが不可欠です。mode補完における代表的な設定項目を紹介します。undo/redoの基礎テキストエディタにおいて、文章の変更の取り消しはもはや必須と言えます。Vimにもその機能はそなわっています。問題Vimであれこれと多数のファイルを編集していると、ときどき直前に開いていたファイルを編集したい場合が出てきます。挙動を変更することができます。Vimが他のエディタと比較して優れている点の一つとして、豊富な補完機能が挙げられます。modeで使用できる補完について解説します。外部コマンドの呼び出しこのHackではVimから外部のコマンドを呼び出す方法を紹介します。Vimだけでなく、外部コマンドの力を借りることでグッと編集効率を上げることができます。Vimが持つ豊富な機能を最大限有効に活用するためには、Vimの操作方法を自分にあったかたちに設定する必要があります。多数のご参加ありがとうございました。いう機会を提供してくださった永和システムマネジメントの皆さん及びメディアテクノロジーラボの皆さん、本当にありがとうございました。MTL(新橋)でVim勉強会が開催されます。MTL(メディア・テクノロジー・ラボ)でVim勉強会が開催されるのでお報せします。VimM#3が、本日11月22日に開催され無事終了しました。多数のご参加・ご協力ありがとうございました。scriptがありましたのでご紹介します。関東地方を中心としたVim勉強会、VimMの第3回VimM#3が2008-11-22に開催されます。今回のテーマが「脱初心者」です。VimM#2が2008-09-06に無事開催され、無事終了しました。多数のご参加とご協力をありがとうございました。参加者の声:taku-o「内容も濃くて良かったかな。関東地方を中心としたVim勉強会、VimMの第2回VimM#2が2008-09-06に開催されます。Lingrにroom.vim-users.jpがあり、Vimに関するよもやま話が日夜繰り広げられています。ここに毎日通うのが日本のVimユーザーの正しい姿です。2008-08-23に大阪でVim勉強会#3が開催されました。朝早くからVim大好キー総勢7名が集結。情報を集めたサイト...。