カテゴリー
コンピューター

【Vim】入力補助、自動入力補完!自動補完を身につけたいですの♪

EC-CUBE の SQL 文を、テキトーに新規ファイルで Vim を使って書いていましたけれども、テーブル名やカラム名の入力が面倒ですの!

自動補完できないかしら?『実践 Vim』をめくります。。。あら?インストール時に使用するテーブル定義ファイルを上手く使えば実現できそうですわね♪

では、実際にやってみますの♪

Vim で自動補完を試してみました手順!

スクリーンショット 2014-02-14 22.45.53.png

  1. テーブル定義の SQL ファイルを開く。
  2. :edit で新規ファイルを指定して開く。これでテーブル定義がバッファに格納された(メモリに乗った)状態で作業できるようになった。
  3. 入力中に <C-n> でバッファ上のテーブル定義から入力候補が呼び出されて一覧表示される。
  4. さらに入力して候補を絞り込みたい時は、<C-p> で何も選択されていない状態にし、タイプを続ける。

Vim 自動補完のポイント !

  • <C-n> で候補の1つ下へ選択を移動
  • <C-p> で候補の1つ上へ選択を移動
  • <C-y> で選択中の候補で確定

まだまだ大事なことはたくさんありますけれども、一度にたくさん覚えきれませんので今回はこの 3 つだけ♪

『実践 Vim』の勉強になった部分をメモ♪

まず、Vim で複数のファイルを一度に開けば、それらのファイルの単語が自動補完候補になる、ということを次の部分から知ることができました♪

TIP36 : バッファリストを使ってオープン中のファイルを管理する

複数のファイルを 1 つの編集セッションで読み込める。Vim では、読み込んだファイルをバッファリストを使って管理する。… 略 …

そうじゃなくて、ファイルのインメモリ表現を編集しているのだ。Vim の用語ではこれをバッファと呼ぶ。

どうすればバッファのファイルの他に新規ファイルを開くことができるか、実は悩んでおりました。

だって、Vim を新規に起ち上げてから :edit で既存のファイルをオープンしますと新規に起ち上げた時のバッファがなくなってしまいますもの!SQL は他の場所に貼り付けようと思っていましたので、わざわざ新しいファイルを保存する必要は無いのですの!

そんなとき、次の記述を発見いたしました♪小躍りしましたわ♪

TIP44 : 存在していないディレクトリにファイルを保存

既存のファイルをオープンするのに最もよく使われるコマンドは「:edit {file}」だ。ただし、既存のファイルに対応していないファイルパスを指定すると、Vim は空のバッファを新規に作成する。

さて、メインの自動補完です♪P 353 ページからの、『第19章 ダイヤルXを廻せ! 自動補完だ』で覚えておきたい部分を抜書きいたします。

TIP111 : Vimのキーワード自動補完機能とは

Vim の自動補完は、挿入モードで <C-p> もしくは <cC-n> を押すことで起動される。

TIP112 : 自動補完のポップアップメニューを操作する

表 19-2

キーストローク 動作
<C-n> 単語リストから次のマッチを使う (next match)
<C-p> 単語リストから前のマッチを使う (previous match)

入力に従って単語リストを絞り込んでいく

<C-n><C-p> を押してみてほしい。… 略 … (<C-p><C-n> でも同じだ)。最初のコマンドにより自動補完が起動され、ポップアップメニューが表示されて、単語リストの最初の単語が選択される。次のコマンドは単語リストの前の要素を選択し、スタート地点へと戻る。ただし、ポップアップメニューは消えない。これで手入力を続けられる。そして、Vim はリアルタイムで単語リストをフィルタリングしてくれる。

おわりに

『スパルタンVim 3.0』を実践してみたくなりましたの♪

また type や interface といった golang 由来のキーワードは、 別バッファで適当な golang のソースコードを開いておけば、 それぞれ ty<C-P>, inte<C-P> で手軽に入力できるはずです。

最初期、P 4 にして躓いてしまいましたの><。「別バッファで適当な golang のソースコードを開いておけば」、、、バッファとは、、、なにかしら?

そして、その周辺を拾ってみますとどうも自動補完ができるように見えます!Vim って!単語を!自動的に!補完!できるんですの!

しかしやり方がわかりません><。諦めてしばらく経ってから、ちょっと調べてみようかしらと思い、今回の投稿とあいなりました♪

以上です。

コメントを残す