勉強用に使いたいと思います。三日坊主の可能性大
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
今日は高機能テキストエディタ「Vim」についてのお話。
PCについて知れば知るほど、テキストエディタがスーパーアプリに見えてくる今日この頃。
テキストエディタってのは、文書を書いて保存とかできるやつね。
僕の偏見的な視点で、よく使われるテキストエディタ(またはその代わりに)はこんな感じにわかれてます。
・一般人
--メモ帳・MicrosftOffice Word・メーラーなど
・プログラマ
--Terapad・さくらエディタ
・ハッカー
--Vim・Emacs
つまり、Vimをある程度使えるようになれば、ハッカーにはなれなくてもハッカー気分にはなれる!
ですが、さすがハッカー御用達だけあって使うのもムズカシイ。
以下に利点欠点をまとめてみたいと思います。
利点
・ハッカー気分になれる
・細かい設定が可能
・カーソルの移動を素早く行える
等々・・・
欠点
・コマンドを覚える必要がある
・独自の用語も覚える必要がある
・WindowsのショートカットとVimのショートカットを混同するようになる
等々・・・
基本的にはLinux上で使うことが多いですが、別にWindows用もあります。
Windowsはこちらからダウンロード。
http://www.kaoriya.net/software/vim
Linuxの場合、たいていは入っています。Debian等、一部は入ってないので、それぞれの方法でインストールしなければなりません。
たいてい、この3つのうちのどれかでしょう。
さて、無事に入れたらレッツ起動!
起動すると恵まれない子供たちに寄付金を・・・的なのが出ますが、スルー。別に寄付してあげてもいいと思います。
ここから色々と説明します。
別に全てを覚える必要があるわけではないので、他のVim解説サイトよりも超小量でいきますよ!
起動するとなんとビックリ!
キーを打っても入力できません!
実は今は、コマンドモードというモードになっています。
このモードの時は文字を入力するのではなく、何かしらの操作を行います。
保存とかね。
ここで、大事なことを覚えておいてください。
これから他のモードもいくつかでてきますが、Escを押せばコマンドモードになります。
途中でわけわかんなくなったらとりあえずEsc連打で。
とりあえずiキーを押しましょう。
すると、挿入モードになります。
この状態は普通のテキストエディタを使っているときと一緒。
文字入力ができます。
文字を入れ終わり、コマンドモードに戻るときはEscを。
コマンドモードでvキーを押すとビジュアルモードになります。
このモードは、普通のテキストエディタで言うならマウスでドラッグしているときと一緒です。
つまり、入力した文字を範囲指定して、色々できるわけです。
さて、モード説明はこれで終わり。次はコマンドの説明です。
覚えることはそこまで多くないですが、実際に使っていかないと覚えられません。
コマンドは「:」から始まります。さっそく見ていきましょう。
:q
Vimを終了する。保存してない場合は警告がでます。
:q!
Vimを終了する。保存してなくても終了できます。
:w
保存します。
:wq
保存してからVimを終了します。
:数字
数字の行までカーソルを移動します。
とりあえず覚えるのはこれだけ。
他のコマンドは使っていくうちにきっと覚えます。
あと忘れてはいけないのが、ショートカット。
先ほどのモード移行に使ったiやvもショートカットです。
ショートカットは(Esc以外)挿入モード以外で使用できます。
Esc
コマンドモードに移行する
i
挿入モードに移行する
v
ビジュアルモードに移行する
y
文字をコピーする(ビジュアルモードにするのはほぼこれのため!)
p
文字を貼り付ける
x
1文字削除する(Deleteと同じ機能)
dd
1行削除する
$
行の最後にカーソルを移動する
gg
1行目にカーソルを移動する
G
最終行にカーソルを移動する
/文字列
文字列を検索する
n
文字列を検索した場合に、次の候補に移る
ショートカットは少し多いですが、慣れれば便利なものばかり!
Vimの説明は、画像を入れられないので見た目的につまらないですよね。
たとえ、画像を入れても、テキストエディタじゃ・・・って感じですしね。
もし次があれば、.vimrcについて説明したいと思います。
PCについて知れば知るほど、テキストエディタがスーパーアプリに見えてくる今日この頃。
テキストエディタってのは、文書を書いて保存とかできるやつね。
僕の偏見的な視点で、よく使われるテキストエディタ(またはその代わりに)はこんな感じにわかれてます。
・一般人
--メモ帳・MicrosftOffice Word・メーラーなど
・プログラマ
--Terapad・さくらエディタ
・ハッカー
--Vim・Emacs
つまり、Vimをある程度使えるようになれば、ハッカーにはなれなくてもハッカー気分にはなれる!
ですが、さすがハッカー御用達だけあって使うのもムズカシイ。
以下に利点欠点をまとめてみたいと思います。
利点
・ハッカー気分になれる
・細かい設定が可能
・カーソルの移動を素早く行える
等々・・・
欠点
・コマンドを覚える必要がある
・独自の用語も覚える必要がある
・WindowsのショートカットとVimのショートカットを混同するようになる
等々・・・
基本的にはLinux上で使うことが多いですが、別にWindows用もあります。
Windowsはこちらからダウンロード。
http://www.kaoriya.net/software/vim
Linuxの場合、たいていは入っています。Debian等、一部は入ってないので、それぞれの方法でインストールしなければなりません。
たいてい、この3つのうちのどれかでしょう。
#yum install vim#apt-get install vim#aptitude install vimさて、無事に入れたらレッツ起動!
起動すると恵まれない子供たちに寄付金を・・・的なのが出ますが、スルー。別に寄付してあげてもいいと思います。
ここから色々と説明します。
別に全てを覚える必要があるわけではないので、他のVim解説サイトよりも超小量でいきますよ!
起動するとなんとビックリ!
キーを打っても入力できません!
実は今は、コマンドモードというモードになっています。
このモードの時は文字を入力するのではなく、何かしらの操作を行います。
保存とかね。
ここで、大事なことを覚えておいてください。
これから他のモードもいくつかでてきますが、Escを押せばコマンドモードになります。
途中でわけわかんなくなったらとりあえずEsc連打で。
とりあえずiキーを押しましょう。
すると、挿入モードになります。
この状態は普通のテキストエディタを使っているときと一緒。
文字入力ができます。
文字を入れ終わり、コマンドモードに戻るときはEscを。
コマンドモードでvキーを押すとビジュアルモードになります。
このモードは、普通のテキストエディタで言うならマウスでドラッグしているときと一緒です。
つまり、入力した文字を範囲指定して、色々できるわけです。
さて、モード説明はこれで終わり。次はコマンドの説明です。
覚えることはそこまで多くないですが、実際に使っていかないと覚えられません。
コマンドは「:」から始まります。さっそく見ていきましょう。
:q
Vimを終了する。保存してない場合は警告がでます。
:q!
Vimを終了する。保存してなくても終了できます。
:w
保存します。
:wq
保存してからVimを終了します。
:数字
数字の行までカーソルを移動します。
とりあえず覚えるのはこれだけ。
他のコマンドは使っていくうちにきっと覚えます。
あと忘れてはいけないのが、ショートカット。
先ほどのモード移行に使ったiやvもショートカットです。
ショートカットは(Esc以外)挿入モード以外で使用できます。
Esc
コマンドモードに移行する
i
挿入モードに移行する
v
ビジュアルモードに移行する
y
文字をコピーする(ビジュアルモードにするのはほぼこれのため!)
p
文字を貼り付ける
x
1文字削除する(Deleteと同じ機能)
dd
1行削除する
$
行の最後にカーソルを移動する
gg
1行目にカーソルを移動する
G
最終行にカーソルを移動する
/文字列
文字列を検索する
n
文字列を検索した場合に、次の候補に移る
ショートカットは少し多いですが、慣れれば便利なものばかり!
Vimの説明は、画像を入れられないので見た目的につまらないですよね。
たとえ、画像を入れても、テキストエディタじゃ・・・って感じですしね。
もし次があれば、.vimrcについて説明したいと思います。
PR
お久しゅう。
今回はネタで。
サーバーを作ろう!(1)(だっけか)を書き、その後(2)をずっと書きたくてうずうずしてたのですが・・・
VMWareがネットに繋がってくれないっていう。
本日やっとこさネットに繋がったので、さっそくvimで遊ぼうと思いました。
まずはインストールからだね!Ubuntuは元からvimが入ってた気がするけど、Debianは入ってなかったし、念には念を!
$sudo aptitude vim
見事に間違えて打ちました('A
本来は
$sudo aptitude install vim
と打つべきです。
これの意味は
「vimっていうソフト欲しいからネットから探して落としてインストールしといて」
という意味です。
Windowsと違って探すことからインストールすることまで全部、この1行でできるから便利です。
話がそれましたが・・・
コマンドを間違えれば、
「こんなコマンドねーよ!コマンドっていうのはこう使うんだよ!」
って叱られて、勝手にヘルプが表示されます。
「どうもありがとう!見たくもないわ!ただ間違えただけじゃ!」
と、自分が間違えたくせに逆切れするのはいつものこと。
・・・と、ふと一番下を見てみると。。。
なんこれ!!!
スーパー牛さんパワーってなに!!!
・・・ということで色々ネット検索して調べてみたところ、スーパー牛さんパワーを発見。
どうやらこれらしい。
aptitudeさんはパワーないけど、apt-getさんはパワーあるらしいです。
・・・なんていうか、
Linuxとかいうクソ真面目なソフトで急にこんなものがでてきたら、笑えますよね。
「やべー!納期まであとちょいしかないんだけど!!」
「くそ!今夜も徹夜だ!」
とか言いながら、こういう機能を作ってたら・・・・・
とか想像すると、楽しいです。
DoctrineとMySQLの対応表が昔のSymfony Tutorialにあったようなのでパクッってきました。元はこちら
http://www.symfony-project.org/doctrine/1_2/ja/06-Working-With-Data
例:
(MySQL)
↓↑
(Doctrine)
又は、Doctrineでwhere句を書かずに
とかでもいけるかもしれません。(うろ覚え)
http://www.symfony-project.org/doctrine/1_2/ja/06-Working-With-Data
共通のAPI
| 関数名 | SQL | append | 説明 |
|---|---|---|---|
| where('u.username = ?', 'jwage') | u.username = ? | No | WHEREを設定して既存のWHERE<条件をオーバーライドする |
| andWhere('u.username = ?', 'jwage') | AND u.username = ? | Yes | ANDでappendされるWHERE条件を追加する |
| whereIn('u.id', array(1, 2, 3)) | AND u.id IN (?, ?, ?) | Yes | appendされるAND IN WHERE 条件を追加する |
| andWhereIn('u.id', array(1, 2, 3)) | ^ | Yes | whereIn()用のコンビニエンス/プロキシメソッド |
| orWhereIn('u.id', array(1, 2, 3)) | OR u.id IN (?, ?, ?) | Yes | appendされるOR IN WHERE条件を追加する |
| whereNotIn('u.id', array(1, 2, 3)) | AND u.id NOT IN (?, ?, ?) | Yes | appendされるAND NOT IN WHERE条件を追加する |
| andWhereNotIn('u.id', array(1, 2, 3)) | ^ | Yes | whereNotIn()用のコンビニエンス/プロキシメソッド |
| orWhereNotIn('u.id', array(1, 2, 3)) | OR u.id NOT IN (?, ?, ?) | Yes | appendされるOR NOT IN WHEREの条件を追加する |
| orWhere('u.username = ?', 'jwage') | OR u.username = ? | Yes | OR、WHERE条件を追加する |
| groupBy('u.id') | GROUP BY u.id, u.username | No | GROUP BYを設定して既存のGROUP BYをオーバーライドする |
| addGroupBy('u.username') | GROUP BY u.username | Yes | appendされるGROUP BYを追加する that is appended |
| having('num_phonenumbers > 0') | HAVING num_phonenumbers > 0 | No | HAVINGを設定して既存のHAVINGをオーバーライドする |
| addHaving('u.username = ?', 'jwage') | HAVING u.username = ? | Yes | 追加されるHAVINGを追加する |
選択のAPI
| 関数名 | 説明 |
|---|---|
| distinct($flag = true) | フラグをdistinct selectに設定する |
| select('u.id, u.username, COUNT(p.id) as num_phonenumbers') | SELECTを設定して既存のSELECTをオーバーライドする |
| addSelect('u.email_address') | appendされるselectを追加する |
| from('User u, u.Phonenumber p') | FROMを設定して既存のFROMとjoinをオーバーライドする |
| leftJoin('u.Phonenumber p') | FROMにappendされるLEFT JOINを追加する |
| innerJoin('u.Profile p') | FROMにappendされるINNER JOINを追加する |
| addFrom('u.Phonenumber p') | FROMにappendされるFROM joinを追加する |
| orderBy('u.username') | ORDER BYを設定して既存のORDER BYをオーバーライドする |
| addOrderBy('u.is_active = ?', 1) | appendされるORDER BYを追加する |
| limit(20) | 結果セットを制限するレコードの数を設定する |
| offset(5) | レコードの制限をオフセットする番号を設定する |
更新API
| 関数名 | 説明 |
|---|---|
| forUpdate($flag = true) | FOR UPDATEを使うためにクエリを変更する |
| update('User u') | UPDATEするモデルの名前を指定する |
| set('u.username', '?', 'jwage') | UPDATEクエリのために新しい値を設定する。最初の引数は修正するデータで、2番目はDQLの文字列に直接加える式(もしくはDBMS関数)、で3番目は新しい値。 |
削除API
| 関数名 | 説明 |
|---|---|
| delete() | 削除するクエリを変更する |
例:
(MySQL)
SELECT i.name FROM item i WHERE i.id=3↓↑
(Doctrine)
<?php
$table = Doctrine_Query::create()->select('i.name')
->from('Item i')
->where('i.id = ?', 3)
->execute();又は、Doctrineでwhere句を書かずに
$table = $table -> getId(3);とかでもいけるかもしれません。(うろ覚え)