<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/ab25cq/">
    <title>cat ab25cq | grep unix</title>
    <link>http://w.atwiki.jp/ab25cq/</link>
    <atom:link href="https://w.atwiki.jp/ab25cq/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>cat ab25cq | grep unix</description>

    <dc:language>ja</dc:language>
    <dc:date>2014-04-05T01:24:25+09:00</dc:date>
    <utime>1396628665</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/ab25cq/pages/18.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/ab25cq/pages/1.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/ab25cq/pages/17.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/ab25cq/pages/16.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/ab25cq/pages/15.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/ab25cq/pages/2.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/ab25cq/pages/4.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/ab25cq/pages/5.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/ab25cq/pages/6.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/ab25cq/pages/7.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/ab25cq/pages/18.html">
    <title>UNIXリテラシー</title>
    <link>https://w.atwiki.jp/ab25cq/pages/18.html</link>
    <description>
      * sedの使い方

- sed -ne &#039;1,3p&#039;

    1行目から3行目を表示。
    -nでpで指定した場合以外出力しない。

- sed -ne &#039;1p; 10p&#039;

   1行目と10行目を表示

* bashの使い方

- bashの文字列変換

  ${var#/*/} は，&#039;/*/&#039;に最初に一致する文字列を削除する．
  ${var##/*/} は，&#039;/*/&#039;に一致する文字列をすべて削除する．
  ${var%-hoge} は，${var}の最後の部分と&#039;-hoge&#039;が一致すれば，その箇所を削除する．
  ${var%%-hoge} は，${var}の最後の部分にて，最も長く&#039;-hoge&#039;に一致する文字列を削除する．
  ${var/hoge/tomato} は，最初に &#039;hoge&#039; に一致する部分を &#039;tomato&#039; に置換する．
  ${var//hoge/tomato} は，&#039;hoge&#039; に一致する部分を &#039;tomato&#039; に置換する．    </description>
    <dc:date>2014-04-05T01:24:25+09:00</dc:date>
    <utime>1396628665</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/ab25cq/pages/1.html">
    <title>cat ab25cq | grep unix</title>
    <link>https://w.atwiki.jp/ab25cq/pages/1.html</link>
    <description>
      ** アカウント
-[[メール ab25cq@gmail.com&gt;ab25cq@gmail.com]]
-[[Sourcefoge.jp&gt;http://sourceforge.jp/users/ab25cq/]]
-[[github.com&gt;https://github.com/ab25cq]]
** 読み物
-[[mfiler4の使い方]]
-[[xyzshの使い方]]
-[[vimのすすめ]]
-[[UNIXリテラシー]]
** リンク
-[[まじかんと&gt;http://homepage2.nifty.com/magicant]] POSIX準拠シェルなどを作っておられます。新作のシェルもC++で開発中だそうです。シェルの大先生。
-[[iishikawa&#039;s homepage&gt;http://iishikawa.s371.xrea.com]] debianパッケージを作って頂いてます。    </description>
    <dc:date>2014-03-30T00:51:57+09:00</dc:date>
    <utime>1396108317</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/ab25cq/pages/17.html">
    <title>xyzshの使い方</title>
    <link>https://w.atwiki.jp/ab25cq/pages/17.html</link>
    <description>
      ** xyzshとは何か？

インタラクティブシェルです。perl, rubyなどスクリプト言語からテキスト処理コマンドを輸入しています。例えば

$ cat data
土井 イデオ
楠木 正信
辻 京子

$ cat data | each ( | chomp | split | lines 1 0 | join | pomch )
イデオ 土井
正信 楠木
京子 辻

という感じです。

あとはzshから便利な機能(メニュー選択、右プロンプト、コマンドラインスタック、カスタマイザブル補完）を輸入しています。
珍しいのはmigemoを使った、日本語ファイル名の補完で、例えば

~ $ ls
あああいいい あああ

~ $ ls a[TAB]
~ $ ls あああ
あああいいい あああ
~ $ ls あああi[TAB]
~ $ ls あああいいい

という感じです。

** 配布元

ライセンスはMITライセンスです。好きに改変、改良、コピーを行なって構いません。
githubでのプロジェクトのforkも歓迎します。

[[安定板 sourceforge.jp&gt;http://sourceforge.jp/projects/xyzsh]]
[[開発版 github.com&gt;https://github.com/ab25cq/xyzsh]]

** コンパイル
xyzshはディストリビューションであまりパッケージになっていません。例外はFedoraでyum install xyzshでインストールできるはずです。（しかも、バージョンは新しいことが多い)

コンパイルするためには、以下の依存パッケージを解決する必要があります。
gcc, GNU make, libc, libm, libncurses(w), oniguruma, iconv, (cmigemo)

ncursesはncurseswでないと端末制御を行なうコマンドで日本語が扱えません。
onigurumaなどはyum系ではoniguruma-devel, debian系ではlibonig-devなどと-devel, -devと開発バージョンをインストールする必要があります。開発バージョンにはヘッダーやライブラリが含まれています。それが必要です。
cmigemo-devel,cmigemo-devは任意ですが、あるとmigemoでファイル名の補完が行なえることが出来ます。
migemoの拡張ライブラリは動的ライブラリになっていて、ロードは実行時に任意で行なえるので、一応コンパイル時に指定しておくことをお勧めします。

依存関係が解決できたら、以下をタイプしてください。

./configure --with-optimize --with-system-migemodir=/usr/local/share/migemo/ --with-migemo
make
sudo make install

./configureでこけたら、何か依存関係が足りません。もう一度確認してください。

巧くコンパイルできれば、/usr/local/binに実行ファイルが、/usrlocal/ext/xyzshに設定ファイルがインストールされます。

xyzshはライブラリを作成するので、ライブラリが作成されたディレクトリ、通常は/usr/local/lib、を/etc/ld.so.confに追加して
以下を実行してください。(linuxでは)

sudo ldconfig

OSXでは
export DYLD_LIBRARY_PATH=/usr/local/lib
と~/.bashrcに書いておいてください。
xyzshの実行にはlibxyzshが必要なので、それをサーチさせる必要があります。

** マニュアル

詳しくはソースに同封してあるUSAGE.jaを読んでみてください。

** migemoの補完ができないよ。

デフォルトではロードされていません。

load -dynamic-library migemo.so

を実行しないといけません。

** 便利な使い方

xyzsh上でプログラム開発中、vim上でマクロでも対処できない不規則な大量の文字列の変換が出てきた場合
xyzshのテキスト処理の出番です。

そのテキストをV --&gt; :w dataとして保存して

/home/ab25cq/repo/xyzsh &gt; cat data | ここにテキスト処理を書く &gt; data2

のようにして処理してします。
で、data2の内容をまた元のソースに張り付ければ良いです。
テキスト処理は、sub, sub -global, split, join, scan, =~ , x, combine, count, index, rindex, lc, length, lines, lstrip, rstrip, strip, printf , quote, squeeze, succ, substr, tr, uc, chompなどが使えます。詳しい使い方はhelpしてみてください。
xyzshはインタラクティブにも使えるので実際に試せば使い方は、すぐ分かるはずです。

あとはコマンドライン補完はxyzsh自身で書くことが出来るので、それの補完カスタマイズ処理を書くとかですね。

あまり巧い使い道が思いつかない、、、orz

まあ、普段のperlやrubyの代わりに、xyzshのワンライナーで書くと面白いかもよ、程度です。上の処理もperl, ruby,sed, awkで出来ますよね、、、。

そうそうCTRL-Xでワンライナーの実行結果を張り付けることができます。
~/.xyzsh/macroを編集してみてください。
CTRL-Xを押すとその一覧が出てきて、ワンライナーの実行結果を張り付けることが出来ます。
whoami | chompならユーザー名を張り付けたりします。

あとmenuコマンドも便利です。
~/.xyzsh/menuに書いたワンライナーを選択して一発実行ができます。
僕はxyzshで書いた便利なスクリプトは全部ここに書いていってます。他の環境へ持っていくのも簡単ですし。

mfiler4の設定ファイルの記述言語としては、mfiler2時代のRubyの方が良かった気がしてますが、Rubyの組み込み予定はありません。    </description>
    <dc:date>2014-01-26T23:55:56+09:00</dc:date>
    <utime>1390748156</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/ab25cq/pages/16.html">
    <title>mfiler4の使い方</title>
    <link>https://w.atwiki.jp/ab25cq/pages/16.html</link>
    <description>
      ** mfiler4とは何か？
昔なつかしファイラをUNIXの端末上で再現したソフトウェアです。
ファイラはNECのPC-98(MS-DOS),Sharp x68k,Fujitsu FM-TOWNS上で盛んに作られたソフトウェアで
MS-DOSのcommand.comが使いにくい理由から、当時盛んに作られました。代表作はFD, mintあたりです。
現在でもWindows上でいくつか開発されています。
UNIXの端末上でFDを再現したFDCloneというソフトウェアもあります。
僕の場合は昔使っていたthe Mirin&#039;s FilerやWindows上のあふを参考にして作りました。

ファイラを使うことの利点ですが、そんなにあるわけではありません。
UNIX上ではシェルが良く出来ているので、端末上でもファイラを使わなくても大丈夫な場合が多いためです。
ただ、ファイルの整理のしやすさではファイラの方が便利なので
ファイルを整理したい時だけ立ち上げたりしても、良いかもしれません。
(初心者のうちはcp,mv,rmでファイル操作して失敗して取り返しがつかなくなることを必ず経験すると思います)

** 配布元
安定板 http://sourceforge.jp/projects/mfiler4
開発版 https://github.com/ab25cq/mfiler4

** コンパイル
mfiler4はパッケージになっていないディストリビューションが多いです。例外はFedoraで、Fedoraではyum install mfiler4でインストールできるはずです。
手動でコンパイルするには以下のパッケージの依存関係を解決します。
gcc, GNU make, libc, libm, libncurses(w), libreadline, libxyzsh, liboniguruma, (libcmigemo)
です。
xyzshもパッケージになっていないので、先にxyzshをコンパイルしなければいけません。
あとのパッケージはyumやapt, portなどでインストールできるでしょう。バージョンは新しめの物が必要です。
ncursesはncurseswの方を入れないと日本語が表示できません。(というかUTF-8文字が)
libcmigemoは任意です。あった方が便利ですが、migemoが使うメモリの量は凄まじく、migemoをリンクすると
GUIのファイラと同じくらいメモリを消費します。(migemo無しで7M程度のメモリ消費、migemo有りで30M程度のメモリ消費)
しかし、migemoでのインクリメンタルサーチがmfiler4を使う理由の１つにはなると思います。

パッケージの依存関係が解決できたら、以下のコマンドを入力します。
./configure --with-optimize --with-migemo --with-system-migemodir=/usr/local/share/migemo
make
sudo make install

/usr/local/share/migemoはmigemoの辞書ファイルがある場所です。
このときutf-8の辞書も必要です。作り方はnkf -w 辞書ファイル名 &gt; /usr/local/share/migemo/utf-8/辞書ファイル名とすればいいです。

migemo無しの場合だと

./configure --with-optimize
make
sudo make install

でいけるはずです。

コンパイルエラーが出たら、ab25cq@gmail.comまでご連絡ください。サポートします。

**カーソル操作
矢印キーでカーソルを移動させます。C-p,C-n,C-f,C-bなどのemacs風のカーソル移動もサポートしています。
残念ながら、vim風には移動できません。
C-a, C-eでカーソルトップやカーソルボトムにも移動します。
vim使いの僕はたまにggなどとやってしまい混乱してしまいます(w;
スクロールはPageUp,PageDownやM-v,C-vなどemacs風、またvimのようにC-d,-C-uもサポートしています。

** mfiler4の終了
qかCTRL-Cで終了できます。qは2画面時は1画面になってしまいますが、もう一度押せば終了できます。

** ディレクトリ移動
Backspace,C-Hで親ディレクトリに移動します。ディレクトリにカーソルをあわせてENTERキーで、そのディレクトリに移動できます。
¥でルートディレクトリに移動します。
~でホームディレクトリに移動します。
jは登録したディレクトリに移動できます。お気に入りのようなものです。
(Add current directory to jump mmenuで登録、Clear jump mmenuで登録のクリアです。~/.mfiler4/jumpをテキストエディッタで直接編集する手もあります。この場合1行に1ディレクトリを書いていけば良いです。)
Hでそれまで移動したディレクトリの一覧がでます。
Jでコマンドラインで移動することができます。このとき覚えておいたら良いのはC-wでの後方単語削除です。ディレクトリ１つだけ削除できます。
meta + l, meta + rでディレクトリを戻る、進むが使えます。

** ファイル操作
さて、肝心のファイル操作です。操作はWindowsのあふに似ていてファイルをマークしてから、c,mなどを押してファイルをコピーしたり移動したりさせます。
マークは
SPACE カーソルの下のファイルをマーク反転。
[,] で範囲マーク。[が始点の設定で]が終点の設定です。マークを反転させます。反転するのがミソで先にマークしたくないファイルをマークしておけば、この範囲マークでそのファイルだけ外すことができます。
HOME, meta + a ディレクトリ以外のファイルをマーク反転。
END, meta + e ディレクトリも含んだ全ファイルをマーク反転。
です。

マークをしたら、cを押せば、２画面時なら反対側のディレクトリにコピーします。
mで移動します。
1画面時は、コピー先をコマンドラインで指定します。このときC-wの単語削除を覚えておくとディレクトリを１つだけ消せて便利に指定できます。もちろんこの時もコマンドライン補完が効きます。
CやMはcpやmvを使ったコピーや移動です。なぜ、このようなものをわざわざ用意してあるかというと&amp;を付けるとバックグラウンドでコピーや移動ができるためです。

dでマークしているファイルをゴミ箱に移動します。ゴミ箱は(~/.mfiler4/trashbox)にあります。
Dでマークしているファイルを完全に削除します。

rでファイルの改名です。コマンドラインに移動します。このとき覚えておくと良いのはやっぱりC-wでの後方単語削除です。
マークしてからrで正規表現の改名です。*.cファイルを*.hに変えたい場合は*.cをマークして
regex_rename &#039;¥.c$&#039; &#039;.h&#039;
とすれば良いです。

lでリンクを作成できます。操作はc,mと似ています。ただし作れるのは絶対パスのリンクです。相対パスの場合はコマンドラインで直にln -sを使ってください。(man ln)

nで新規ファイルを作れます(空ファイル)
kで新規ディレクトリが作れます。bak/vim/pluginなどと深くしてもちゃんと作成されます。

bでバックアップファイルを作成します。

aで属性操作メニューから属性を操作します。

uで圧縮ファイルを解凍します。Uの場合は自身のディレクトリで解凍、uの場合は反対側のディレクトリで解凍です（２画面のとき）
p,Pで圧縮ファイルを作ります。Pの場合は自身のディレクトリで圧縮、pの場合は反対側のディレクトリで圧縮です。

**ファイルの編集、実行
eでvimでファイルを編集します。emacsの場合は、現在開いているemacsプロセス上で開きたい場合はemacsclientを使えば実現可能だったはずです。そのように設定ファイルを編集してみてください。
alias vim ( sys::emacsclient )だけでOKだと思います。
このときC-zを押したら、どうなるかというとmfiler4上でjobが作られて、サスペンドされます。
タイトルの上に[1]vim note.txt [2]vim note2.txt
などと書かれるはずです。このときジョブ番号に対応する数字キーを押すと、そのジョブをまたフォアグランドに持ってくることができます。(編集の再開)

vでlessでファイルを閲覧します。lvにしたい場合は
alias less ( sys::lv )
などと設定ファイルに書いておけば、lvで開かれます。

ENTERキーでそのファイルにコマンドを指定して実行することが出来ます。例えばOSXなら
ENTER --&gt; sys::open とタイプしてENTERを押せば、ファイルを開くことができるはずです。
sys::をタイプするのが面倒な場合は
~/.xyzsh/xyzsh.xyzshに
install_all_external_program_to_root_object
と書いておけばsys::を省略できます。

xでカーソル以下のファイルを実行できます。主に./configureくらいかな？使うのって。

** コマンドライン
hでコマンドラインに移動することが出来ます。
僕の使い方ですけれども、僕は主にコマンドラインで操作しているので、mfiler4を立ち上げて作業ディレクトリまで
移動したら、hを押して、あとはコマンドラインで色々と作業をします。
で、作業ディレクトリを変えたくなったら、C-dでコマンドラインを閉じて、mfiler4でディレクトリを移動して、またhを押して作業をします。
ファイルの操作はコマンドラインではやりにくいので、ファイル操作をしたい場合は、C-dでmfiler4の画面でファイル操作をします。
このような使い方でもmfiler4は便利です。
hでのコマンドラインでのジョブはmfiler4上でもシームレスで、作ったジョブはどちらでも保持されます。
あ、そういえば、exitした場合はジョブが残っているとファイラ画面に戻れませんが、C-dの場合はファイラ画面に戻れます。
(exitはジョブの存在をチェックするため)

&quot;:&quot;でbashを起動できます。たまにチェック用に使ってます。

!でファイルマネージャーを開きます。主に画像ファイルの整理用に使ってます。そうなんです、mfiler4は画像ファイルの整理には使えないんですよ、、、。

** メニュー
sでソートメニューを表示します。ソートの種類は豊富です。このとき、仮想ディレクトリ下でもソートが出来るのでFを押して、現在のディレクトリ以下の全てのファイルを表示 --&gt; sでパーミッションでソート --&gt; 実行ファイルだけ見つけ出す
などということも出来ます。
(M)askは正規表現にマッチするファイルしか表示できないようにします。
例えば&#039;^.+¥.c$&#039;だとCソースファイルしか表示できないようにします。これはディレクトリを移動しても、マスクは続きます。
マスクを辞めたくなったら.を押せばいいです。

Vは表示オプションの操作です。パーミッションを表示したり、タイムスタンプを表示したりします。
普通は、ファイルサイズとタイムスタンプを表示するんじゃないでしょうか。
あとはtoggle fname (d)vide extensionというのは拡張子をわけて表示するかどうかです。多分分けておいた方が見やすいです。
file size view wayというのはHumanでk,M,G表示します。NormalはMだけ表示します。
toggle (c)olorもカラー表示しておく方がいいでしょう。
あとは１画面表示、２画面表示を設定できます。
この設定はmfiler4が終了する時に保存されます。保存先は~/.mfiler4/statです。
保存処理はmfiler4.xyzshの中で行なっているので、読めば分かるかもしれません。
（すみませんが、xyzshは慣れていないと読みにくいかもしれません)

.でドットファイルの表示をトグルします。

** タブ
C-t, C-w タブを作成します。タブはスタックのようなもので、退避していたディレクトリはC-wで戻ります。
一時的にワーキングディレクトリで操作したい場合はC-tを押すと便利です。
meta + 1-9でタブ化したディレクトリを前に持って来れます。この場合はスタックを無視してランダムアクセスになります。

** ２画面でのディレクトリパス操作
wで２画面のディレクトリのパスをそれぞれ交換します。
oでディレクトリのパスをコピー。
Oで非アクティブ側のディレクトリのパスをアクティブ側のパスにコピー。

** qとtabキー。
tabで１画面時、2画面にすることができます。
qで２画面時、1画面にすることが出来ます。

こういう使い方ができます。主に1画面で作業をして、ファイルのコピー先などを指定したい場合、tabで2画面にしてコピー先に移動、コピーをする、終わったら、qで1画面に戻して、作業をする。などです。
2画面より1画面の方がファイルの視認性が良いので、そのようなスタイルでも便利に使えます。
もちろん、常に2画面で作業することもできます。

** 画面が乱れた時は
C-lを押してください。再描写します。このときディレクトリを再読み込みするので、リフレッシュしたい時もC-lです。

** 仮想ディレクトリ
vdという内部コマンドにファイルのリストを読み込ませることによって仮想ディレクトリを作ります。
find . | scan &#039;./(.+)&#039; | mfiler4::vd
だと現在のディレクトリ以下の全てのファイルの一覧を得ることができます。
(findのオプションで好きに仮想ディレクトリを作れます。詳しくはman findしてください)
このときもcでのファイルコピーやeでのエディットなどファイル操作をすることができます。
仮想ディレクトリを終わらせるにはBackspaceなどディレクトリを移動してください。

Gである文字列を含むファイルの仮想ディレクトリを作成します。-Rを付ければ、その下のディレクトリも検索します。

** インクリメンタルサーチ
f,/ でインクリメンタルサーチです。マッチする名前のファイルにカーソルが移動します。migemo付きでコンパイルした場合、migemoでマッチングを行ないます。(日本語ファイル名にローマ字入力の英字でマッチング可能)
マッチさせた状態で下キーを押すとさらにマッチングを行ないます。上キーで上に戻ります。
このときSPACEでマークもできます。

** 高度なマーク
&quot;*&quot;でグロブマークです。*.cとすれば、全てのCソースをマークします。このときマークは反転なのであらかじめ、除外するファイルをマークしていれば、除外できます。
&quot;+&quot;で正規表現マークです。正規表現にマッチするファイルをマークします。

* mgrep
文字列を検索して、その結果のリストからファイルと行番号を選択して、vimを立ち上げます。    </description>
    <dc:date>2014-01-26T23:54:52+09:00</dc:date>
    <utime>1390748092</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/ab25cq/pages/15.html">
    <title>vimのすすめ</title>
    <link>https://w.atwiki.jp/ab25cq/pages/15.html</link>
    <description>
      Linux標準エディッタvim

エディッタというのはプログラミングをするときに使うテキスト作成ツールで
エディッタで好きなプログラム言語でプログラムを書いて、コンパイラで機械語に変換してソフトウェアを作ります。

vimは癖がありますが慣れれば、とても使いやすいエディッタです。
Linuxでは標準のエディッタなので、ぜひ使いこなせるようになっておきましょう。
特にCプログラマーはなくてはならないエディッタになるはずです。

h(←)
j(↑)
k(↓)
l(→)
カーソル移動。
最初はびっくりすると思いますけど1週間も使ったら慣れます。
慣れれば指をホームポジションから動かさなくていいので、こっちの方が楽だったりします。
viが作られた当時はカーソルキーに互換性がなかったので、アルファベットキーを使う必要があったらしいです。
ローグと言うゲーム(風来のシレンとかの元のゲーム)も同じ操作で移動できるので、それで遊んでから慣れると言う話もあります。

i
a
編集モードに入る。iはカーソルの前からで、aはカーソルの後ろから。
編集モードに入ったら、好きなコードが書けます。
ESCAPEキーで編集モードを抜ける。
覚えていたらいいのは編集モード中はCTRL-Wで後方単語削除です。
これはbashでも使えるので使っていもいいと思います。

応用
I
A
Iで行頭から編集モードに入る。
Aで行末から編集モードに入る。

o
新しい行を作って編集モードに入る。

僕はこれの代わりにA→ENTERを使ってしまいます。
最初に気をつけて変な癖が付かないようにしましょう。

x
カーソルキーの下の文字を1文字消す。
ただ、あまり使いません。もっと便利な消し方がたくさんあるからです。
5xとかは使えるかもしれません。これは5文字消すです。
vimは数字キーを押してから編集コマンドを打つとその回数分同じことを繰り返します。
79i/ESCAPE
で/を79文字打ち込みます。


”:w&quot;
ファイルの保存。実はもう一個モードがあって、:から色々なコマンドを実行します。
wはwriteのwです。

&quot;:wq&quot;
ファイルを保存して終了。qはquitのq。

&quot;:q&quot;
終了。:q!で保存せず終了。

^
行頭に移動。ちなみに^は正規表現で行頭を表します。

$
行末に移動。これも正規表現と同じ。

0
インデントしていても行頭に移動します。

w,b
単語単位で前後に移動。wはwordかな。bはback wordだと思います。
数字キーと組み合わせると楽にたくさん右に移動できたりします。3wとか。

f[移動したい文字]
fの後に移動したい文字を押して、前方にある文字に移動します。Fの後だと後ろに移動します。
下にも書きますが削除と組み合わせると便利です。
C言語で&quot;で囲まれた文字列を一気に消したい時とかdf&quot;

dd
一行削除。これは良く使います。便利です。

dの後にw,b,f,F,$,0とか
移動系と組み合わせて削除。dwで一単語消します。d$で行末まで削除。あ、これはDでできます。
xの一文字削除だとドットキー(.)による編集の繰り返しをする場合にいまいちですが
こっちを使っておけば繰り返し動作にも都合が良いです。

cc
一行削除してから編集モードに入る。

cの後に移動系
移動系と組み合わせて削除してから編集モードに入る。
これと/キーによる単語移動とドットキー(.)による繰り返しをするを組み合わせると同じ単語を素早く置き換えられます。
単語の置き換えはコマンドモードからも行えますが、あっちは入力するのがめんどくさいので
軽く置き換えたいときに便利です。

/検索したい単語→エンターキー
入力した単語まで移動します。これはもの凄く多用します。下手すると普通のカーソル移動よりも使います。
nでもう一回繰り返し、Nで↑に戻ります。
less,lv,moreなどページャでも使われる操作です。

注意) あまり/を多用するのも考えものです。vimには色々な移動の方法があるので、巧く使いわけましょう。

&quot;*&quot;
カーソル下の単語を検索。これも多用します。スーパースターとか本に書いてあった。

.(ドット)
編集操作を繰り返す。移動系は繰り返されません。
これスタックできればいいと思うんですけど、できるのかな。

u
アンドゥ。編集を一つ前に戻す。CTRL-Rで戻ったのを一つ取り消せます。
viでは3回までしか使えないので、それを補う技とかあったようです。
vimでは無限に戻れます。

CTRL-D, CTRL-U
画面のスクロール。

zz
現在のカーソル位置をスクリーンの中央にする。
あればいいのにと思っていたものがちゃんと揃っているのがvimです。

z[ENTER]
現在のカーソル位置をスクリーンの一番上にする。

z-
現在のカーソル位置をスクリーンの一番下にする。

コピーアンドペースト

yy
一行をヤンク(バッファに記憶)

y,移動系
おなじみの操作。ywで単語をヤンク。y$で行末までヤンク。

p,P
ヤンクしたバッファをペースト。pが後ろに。Pが前に。

ビジュアルモード
Vで始めます。選択モードのことです。これで範囲選択します。
反転した文字が選択している範囲です。
yでヤンク
dで削除
&quot;&gt;&quot;でインデントを→に
&quot;&lt;&quot;でインデントを←に
&quot;5&gt;&quot;でインデントを5個→に
&quot;:&quot;で選択した範囲をコマンドモードで操作

gvでもう一度同じ範囲を選択します。5&gt;なんてやって、インデント行き過ぎたってときにもう一度gv, &lt;です。
他にも.(dot)で繰り返しができるのでVで選択して&gt;でインデントさせて.(dot)を連打すれば多段インデントできます。
この場合は行き過ぎたときはuです。

CTRL-Vで縦型の選択
Iで文字を打つ→ESCAPEで、先頭に文字を追加。これで複数行を一気にコメントアウトできます。
dで削除。これで逆にコメントを消したりします。

これ知っていないと言語的に複数行のコメントアウトをサポートしていないシェルスクリプトを編集するのが辛いです。

コマンドモード
&quot;:% s/aaa/bbb/gc&quot;

aaaをbbbに置き換えます。
%はファイル全体という意味です。gがグローバル(一行に複数単語があっても置き換える)cが確認です。
打ち込むのが正直めんどくさいんですけど、sedを知っていれば、この操作は納得でしょう。
慣れましょう。
ビジュアルモードで範囲選択して置き換えというのは他のエディッタにはあまりない、、、かしらないけど
便利です。

&quot;:! シェルコマンド&quot;
シェルに渡して実行。

&quot;:. !シェルコマンド&quot;
カーソル行にコマンド結果を張り付け。
うーん、いまいち使い道が思い浮かばない。
ビジュアルモードなどで範囲指定すればコマンドにテキストを渡して
処理させ、その結果を張り付けられます。
V→:→!sortでソートとか。

最近気づいた使い方は、:. !ls で、includeするヘッダーの一覧を得るとかです。
あとは拙作のソフトで申し訳ないのですが:% !xyzsh -c &#039;| sub -global &quot;ab(.)d&quot; &quot;aa\1d&quot;&#039;とかすれば、鬼車の正規表現で文字列処理が行えます。

&quot;:make&quot;
コンパイル。エラー箇所はcnext, cprevで移動。clistで一覧。

gg
ファイルの先頭に移動。

G
ファイルの最後尾に移動

100g
100行に移動

その他のTIPS

q[a-z]→編集→通常モードでq
操作を記録します。
同じ様な編集が続く場合は、そのまま自分ですると自分がコンピュータになっちゃいます。
その場合これを使ってコンピュータにさせます。
移動にはカーソル移動を使わずに/,fなどの検索系の移動を使うのが不規則性に対応するコツです。
vimはそのあたりが豊富なのでとてもやりやすいです。vim love。
これで無理な場合はperlを使いましょう。

(追記)ただし、結局手で打った方が早い場合も、あります。手で打った方が早いのに凝ったperlコードを何時間もかけて書いてしまうのをハマるといいます。
この辺りはケースバイケースです。

@[a-z]
記録した操作をもう一度再現します。

:vsplit ファイル
垂直分割でファイルを開く。
僕はこれを普通のファイルを開くとして使ってます。
他のファイルからコードをコピーするときとか、他のファイルを軽く見たいときって
2つ以上開く必要がないからです。
:oによるバッファで開くは切替えるのが面倒だし。
:vsp ファイル
と短縮してもいけます。

:split ファイル
水平分割でファイルを開く
:sp ファイル
と短縮してもいけます。
最近は:vspよりも:spばかり使ってます。

現在編集中のファイルも:spで開くことができるので、ファイルの上の部分を見ながら、下の部分を編集することもできます。

C-w h,j,k,l
分割したファイル間を移動する。

C-w,C-w
分割したファイル間をトグルで移動
２つしか開いてない場合上のよりこっちのほうが便利。

[[ 
関数のトップへ移動

]] 
次の関数に移動

ビジュアルモードと組み合わせれば楽に関数をコピーアンドペーストしたり
次の関数定義へ移動したいときに便利です。

2013/12/27日追記)ソースを読む時もどんどん関数定義の先頭に移動できるので、構造を把握しやすいです。
これがあるおかげでvimは関数定義のアウトラインが無くても大丈夫だと言っても過言ではありません。
関数の定義を行なっている時に引数を見たくなったら、&quot;[[&quot;でトップへ移動、``で、また元に戻るなどにも使えます。
C言語のソースを編集しているときには/よりも多用するかもしれません。

ブロックの折り畳み
zfa{ 閉じる
zo 開く

操作が複雑ですが、なんとなく操作してみたら、指が覚えてたりします。

ブロックの移動
{の上で%

ビジュアルモードでブロック全体をインデントとか、削除とかに便利。

マーク
m[a-z]

マークへジャンプ
`[a-z]

ma, `aしか使っていません。

ジャンプ前に戻る
``

/を使った後や、ggを使った後に元に戻ります。
これもスタックできればいいのにと思います。

こんなところかな。僕は結構長く使っているわりにはタコなんで、参考になったか不安です。
vimはたくさん機能があるし、意外な使い方がたくさんあるので、僕が使っている機能なんて
氷山の一角だと思ってます。
また発見があれば、追記していきたいと思います。

お薦めの書籍は
Vi IMproved-Vim 完全バイブル
技術評論社
です。    </description>
    <dc:date>2013-12-27T14:05:23+09:00</dc:date>
    <utime>1388120723</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/ab25cq/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/ab25cq/pages/2.html</link>
    <description>
      **更新履歴
#recent(20)

**訪問者数
&amp;counter()    </description>
    <dc:date>2013-10-08T09:03:01+09:00</dc:date>
    <utime>1381190581</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/ab25cq/pages/4.html">
    <title>プラグイン/ニュース</title>
    <link>https://w.atwiki.jp/ab25cq/pages/4.html</link>
    <description>
      * ニュース
@wikiのwikiモードでは
 #news(興味のある単語)
と入力することで、あるキーワードに関連するニュース一覧を表示することができます
詳しくはこちらをご覧ください。
＝＞http://atwiki.jp/guide/17_174_ja.html


-----


たとえば、#news(wiki)と入力すると以下のように表示されます。


#news(wiki)
    </description>
    <dc:date>2013-10-07T22:03:50+09:00</dc:date>
    <utime>1381151030</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/ab25cq/pages/5.html">
    <title>まとめサイト作成支援ツール</title>
    <link>https://w.atwiki.jp/ab25cq/pages/5.html</link>
    <description>
      * まとめサイト作成支援ツールについて
@wikiには[[まとめサイト作成を支援するツール&gt;&gt;http://atwiki.jp/matome/]]があります。
また、
 #matome_list
と入力することで、注目の掲示板が一覧表示されます。

利用例）#matome_listと入力すると下記のように表示されます
#matome_list
    </description>
    <dc:date>2013-10-07T22:03:50+09:00</dc:date>
    <utime>1381151030</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/ab25cq/pages/6.html">
    <title>プラグイン/編集履歴</title>
    <link>https://w.atwiki.jp/ab25cq/pages/6.html</link>
    <description>
      * 更新履歴
@wikiのwikiモードでは
 #recent(数字)
と入力することで、wikiのページ更新履歴を表示することができます。
詳しくはこちらをご覧ください。
＝＞http://atwiki.jp/guide/17_117_ja.html


-----


たとえば、#recent(20)と入力すると以下のように表示されます。


#recent(20)
    </description>
    <dc:date>2013-10-07T22:03:50+09:00</dc:date>
    <utime>1381151030</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/ab25cq/pages/7.html">
    <title>プラグイン/アーカイブ</title>
    <link>https://w.atwiki.jp/ab25cq/pages/7.html</link>
    <description>
      * アーカイブ
@wikiのwikiモードでは
 #archive_log()
と入力することで、特定のウェブページを保存しておくことができます。
詳しくはこちらをご覧ください。
＝＞http://atwiki.jp/guide/25_171_ja.html


-----


たとえば、#archive_log()と入力すると以下のように表示されます。
保存したいURLとサイト名を入力して&quot;アーカイブログ&quot;をクリックしてみよう


#archive_log()
    </description>
    <dc:date>2013-10-07T22:03:50+09:00</dc:date>
    <utime>1381151030</utime>
  </item>
  </rdf:RDF>
