vi コマンドを整理してみた

#vi#tips

 
◆カーソルの移動
  ・[1G] ⇒ 1行目に移動
  ・[gg] ⇒ 1行目に移動
  ・[:1] ⇒ 1行名に移動
  ・[G] or [:$] ⇒ 最終行に移動
  ・[10G] or [10gg] or [:10] ⇒ 10行目に移動
  ★[5|] ⇒ 5桁目に移動
  ・[H] ⇒ 画面内の最上行に移動
  ・[L] ⇒ 画面内の最下行に移動
  ・[M] ⇒ 画面内の中央に移動
  ・[0] ⇒ 行頭に移動(インデントに関係なく先頭)
  ・[^] ⇒ 行頭に移動(インデントの先頭)
  ・[$] ⇒ 行末に移動
  ・[w] ⇒ 右へ単語単位に移動(単語の先頭へ)
  ・[W] ⇒ 右へ空白文字毎に移動
  ★[e] ⇒ 右へ単語単位に移動(単語の末尾へ)
  ・[E] ⇒ 右へ単語単位に移動(単語の末尾の次へ)
  ・[b] ⇒ 左へ単語単位に移動
  ・[B] ⇒ 左へ空白文字毎に移動
  ★[f + 任意1文字] ⇒ 右の特定の文字へジャンプ([;]⇒次を検索/[,]⇒前に戻る)
  ★[t + 任意1文字] ⇒ 右の特定の文字へジャンプ、手前でストップ([;]⇒次を検索/[,]⇒前に戻る)
  ・[F + 任意1文字] ⇒ 左の特定の文字へジャンプ([;]⇒次を検索/[,]⇒前に戻る)
  ★[Ctrl + o] ⇒ カーソルを移動前の位置に戻す(反対のコマンドは [Ctrl + i])画面のスクロール
  ★[zz] ⇒ カーソル行を真ん中に
  ・[zl] ⇒ 右へスクロール
  ・[zh] ⇒ 左へスクロール
  ★[zL] ⇒ 右へ半分スクロール
  ★[zH] ⇒ 左へ半分スクロール

◆選択
  ★[v] ⇒ 通常選択(カーソル位置から)
  ★[V] ⇒ 通常選択(カーソルがある行から)
  ★[Ctrl + v] ⇒ ブロック選択
  ★[1GVG] ⇒ ファイル全体を選択
  ★[viw] ⇒ 単語の選択(カーソル位置にある単語を選択)
  ・[v$] ⇒ カーソル位置から行末まで選択
  ・[v0] ⇒ カーソル位置から行頭まで選択(インデントに関係なく先頭)
  ・[v^] ⇒ カーソル位置から行頭まで選択(インデントの先頭)

◆挿入
  ・[A] ⇒ カーソルのある行の最後に追加
  ・[I] ⇒ カーソルのある行の先頭に追加
  ★[Ctrl v](矩形ビジュアルモード)+ 0         + [I] + 挿入文字 ⇒ 選択範囲の先頭に一気に挿入
  ★[Ctrl v](矩形ビジュアルモード)+ [Shift $] + [A] + 挿入文字 ⇒ 選択範囲の行末に一気に挿入
  ★[>>] ⇒ タブ幅分右にずらす
  ★[<<] ⇒ タブ幅分左にずらす

◆削除
  ★[diw] ⇒ 単語の削除(カーソル位置にある単語を削除)
  ・[d1G] ⇒ カーソル行から先頭行までを削除
  ・[dG] ⇒ カーソル行から最終行までを削除
  ・[D] or [d$] ⇒ カーソルの位置から行末までを削除(改行残す)
  ・[0D] ⇒ 行の先頭から行の最後までを削除(改行残す)
  ★[:g/string/d] ⇒ "string"を含む行を削除する
  ★[:v/string/d] ⇒ "string"を含まない行を削除する

◆複写
  ・[yw] ⇒ 単語の複写(カーソル位置から単語の末尾までを複写)
  ★[yiw] ⇒ 単語の複写(カーソル位置にある単語を複写)
  ★[V](選択モード) + カーソル移動 + [y]
  ★[yy10p] ⇒ カーソル位置から10行を複写
  ・[p] ⇒ カーソルの後に貼り付け
  ・[P] ⇒ カーソルの前に貼り付け
  ★[Ctrl Insert] ⇒ 選択文字をクリップボードへ
  ★[Shift Insert] ⇒ クリップボード内容をペースト

◆書き換え
  ・[cw] + 単語の入力 ⇒ 単語の書き換え
  ・[ciw] + 単語の入力 ⇒ 単語の書き換え
  ★[~] ⇒ 選択文字を大文字小文字相互変換

◆検索
  ★[/\<string\>] ⇒ 単語単位の完全一致検索
  ★[/\<the] ⇒ theからはじまる単語を検索する("the","theater", "then")
  ★[/the\>] ⇒ theで終わる単語を検索する("the","breathe")
  ★[*] ⇒ カーソル位置の単語を下方検索
  ★[#] ⇒ カーソル位置の単語を上方検索
  ★[/Ctrl v + TAB] ⇒ TABの検索
  ★[/Ctrl r + "] ⇒ ヤンクしている文字を検索文字列として使用したい場合
  ・[:noh] ⇒ 検索後にハイライトを消す

◆取消し
  ・[u] ⇒ 通常取り消し
  ・[U] ⇒ 行に対する変更の取消し
  ・[Ctrl R] ⇒ 取消しの取消し

◆置換
  ・[:s/pattern/string/g] ⇒ 行内の文字列置換
  ・[:'a,'bs/pattern/string/g] ⇒ 範囲支店の文字列置換
  ・[:%s/pattern/string/gc] ⇒ ファイル全体の文字列置換(cは確認を求めるオプション)
  ★[:%s/^/string] ⇒ 全ての行頭に任意の文字を付加する
  ★[:%s/$/string] ⇒ 全ての行末に任意の文字を付加する
  ★[:%s/^M$//g] ⇒ 行末の ^M を削除する

◆バッファ操作
  ・[:ls] ⇒ バッファ一覧を表示する
  ・[:bn] ⇒ 次のバッファを開く
  ・[:bp] ⇒ 前のバッファを開く
  ・[:b #9] ⇒ 指定した番号のバッファを開く
  ★[:bd #9] ⇒ 指定した番号のバッファを削除する

★カーソルの下に書かれたテキストと同じ名前のファイルを一気に開く
  ★[gf]          ⇒ 現在のウィンドウに開く
  ★[Ctrl w + f]  ⇒ 分割ウィンドウに開く
  ★[Ctrl w + gf] ⇒ 新しいタブに開く
  ★[:e #]        ⇒ 直前に編集していたファイルを再編集する

◆分割ウィンドウ
  ★[Ctrl w + 10+] ⇒ 分割ウィンドウの高さを広げる
  ★[Ctrl w + 10-] ⇒ 分割ウィンドウの高さをせばめる
  ★[Ctrl w + 10>] ⇒ 分割ウィンドウのサイズを広げる
  ★[Ctrl w + 10<] ⇒ 分割ウィンドウのサイズせばめる
  ・[:sp] ⇒ 画面の水平分割(同一ファイルを分割)[Ctrl w + s]と同じ
  ・[:vs] ⇒ 画面の垂直分割(同一ファイルを分割)[ctrl w + v]と同じ
  ・[:sp filename] ⇒ 画面の水平分割(既存ファイル)
  ・[:vs filename] ⇒ 画面の垂直分割(既存ファイル)
  ・[:new] ⇒ 画面内上に空ウィンドウを開く [Ctrl w + Ctrl n]と同じ
  ・[:vnew] ⇒ 画面内右に空ウィンドウを開く
  ★[Ctrl w + Ctrl w] ⇒ 分割画面間のカーソル移動
  ★[Ctrl w + l] ⇒ 分割画面間のカーソル移動(右へ)
  ★[Ctrl w + h] ⇒ 分割画面間のカーソル移動移動(左へ)
  ★[Ctrl w + k] ⇒ 分割画面間のカーソル移動移動(上へ)
  ★[Ctrl w + j] ⇒ 分割画面間のカーソル移動移動(下へ)
  ・[Ctrl w + L] ⇒ 分割画面を右へ移動
  ・[Ctrl w + H] ⇒ 分割画面を左へ移動
  ・[Ctrl w + K] ⇒ 分割画面を上へ移動
  ・[Ctrl w + J] ⇒ 分割画面を下へ移動
  ★[:set scrollbind] ⇒ 分割ウィンドウを同時にスクロールさせる。それぞれのウィンドウに設定する必要有り!

◆タブ画面操作
  ・[:tabnew] ⇒ 新規タブを開く(空のファイル)
  ・[:tabe filename] ⇒ 既存ファイルをタブで開く
  ・[:tabn][gt] ⇒ 右隣のタブに移動[:tabN][gT] ⇒ 左隣のタブに移動
  ・[:tabr] ⇒ 先頭のタブに移動(tabrewind の意味)
  ・[:tabl] ⇒ 最後のタブに移動(tablast の意味)
  ・[:tabc] ⇒ 現在のタブを閉じる(tabclose の意味)
  ・[:tabo] ⇒ 現在のタブ以外を閉じる(tabonly の意味)

◆折り畳み
  ・[zc] ⇒ 折り畳みを閉じる
  ・[zo] ⇒ 折り畳みを開く
  ★[za] ⇒ 折り畳みを開く/閉じる

◆文字コード/改行コード
  ★[:set fileformat?] ⇒ 改行コードの確認
  ★[:set fileencoding?] ⇒ 文字コードの確認(fileencodingに何もセットされていない場合は set encoding? とする)
  ★[:set fileencoding=utf-8] ⇒ 文字コードの変更(cp932,euc-jp,sjis,utf-8,utf-16)(指定できる文字コード)
  ★[:set fileformat=dos] ⇒ 改行コードの変更(dos,mac,unixが指定可能)

◆ファイルエクスプローラ
  ・[:e .] ⇒ 同画面に開く
  ・[:Sex] ⇒ 分割画面内に開く
  ・[Enter] ⇒ ファイルを開き、ディレクトリを移動する
  ・[o] ⇒ ファイルを分割画面に開く
  ・[p] ⇒ ファイルを分割画面にプレビューとして開く
  ★[x] ⇒ ファイルを関連付けられたアプリケーションで開く

◆ファイル入出力
  ・[:'a,'b w aaa.txt] ⇒ 範囲指定でファイルへの出力
  ・[:r aaa.txt] ⇒ ファイルの読込み
  ★[:1,10 w >> outfile] ⇒ 1行目から10行目を outfile に追記する

◆システムコマンド
  ★[:!cmd] ⇒ cmdを実行してステータスラインの下へ結果を表示(編集中のバッファには影響しない)
  ★[:範囲指定!cmd] ⇒ 選択範囲のバッファをcmdの標準入力に流し込み、代わりにcmdの出力で置換する。
                       例えば :%!sort を実行すればバッファ全行がsortされる。
  ★[:r!dir] ⇒ 外部コマンドの結果をカーソル位置に読み込むvimコマンドで「%」を入力すると、自動的に今開いているファイルのフルパスに置き換えられる。
    参考HP
    [:!svn ci %] ⇒ [:!svn ci c:\temp\aaa.txt]
    となる。

◆ctagsを利用する
  ★インストールする ⇒ 参考HP
  ・[c:\> ctags -R] ⇒ タグ作成(コマンドプロンプトからの場合)
  ★[:!ctags -R] ⇒ タグ作成(vimからの場合)
  ★[Ctrl + ]] ⇒ カーソル位置のクラス等にジャンプ
  ★[g Ctrl + ]] ⇒ カーソル位置のキーワードにマッチするタグが複数ある場合に選択可能
  ★[Ctrl + t] ⇒ ジャンプ元に戻る
  ★[[ + d] ⇒ #defineなどの定義値を参照する
  ★[gd] ⇒ 変数の宣言にジャンプ(ローカル変数)
  ★[gD] ⇒ 変数の宣言にジャンプ(グローバル変数)
  ★[:find abc.h] ⇒ コーディング中に、あのヘッダファイルが開きたい!(vim内で path を設定しておく必要有り)タグファイルの位置をVimに知らせる
    ⇒ :set tags=./tags,/usr/src/tags
  ★複数のディレクトリに対してctagsを実行したい
    ⇒ ctags -f ~/.tags -R ~/myprojects/src $JAVA_HOME/src

◆ソースコード上のメソッド宣言、変数宣言の一覧を表示する(taglistの利用)
  ★[:Tlist] ⇒ クラスのアウトライン表示

◆入力補完
  ・[Ctrl p] ⇒ 入力補完(前方へ)
  ・[Ctrl n] ⇒ 入力補完(後方へ)
  ・[Ctrl y] ⇒ 入力補完(候補決定)

◆統合開発環境としてのvimGnuMakeのインストールGnuMakeのインストール
    ⇒ GnuMakeをインストールしたら fgrep も一緒にインストールされた
  ・コンパイラ MinGWのインストールMinGWの使い方
    ⇒ C のソースをコンパイルする時は   gcc hello.c
    ⇒ C++ のソースをコンパイルする時は g++ hello.c
  ・:copen, :ccloseの使い方vim で make

◆Tips
  ★[:set scrolloff=999] ⇒ 常にカーソル位置をウィンドウに中央に表示する
  ・[:set list] ⇒ タブの表示(反対は :set nolist)
  ★F1キーをESCにマップするには?
    ⇒ F1キーをEscの代わりにするには?(その1)F1キーをEscの代わりにするには?(その2)
    ⇒ 結局、自分は _vimrc に以下を追記した
       inoremap  
       noremap  スペースキーでスクロール
  ★[:sh] ⇒ vi操作中に一時的にシェルを起動する
  ★[:sort u] ⇒ 重複行の削除
  ★[:W] ⇒ ウィンドウの横幅最大に
  ★vimでバイナリ編集するには?
    ・[vim -b ファイル名] ⇒ バイナリモードでファイルを開く
    ・[:%!xxd]            ⇒ バイナリ表示する
    ・[ファイルを編集する]⇒ 16進表記への変更だけが反映される
    ・[:%!xxd -r]         ⇒ テキスト表示に戻す
    ・[ファイルを保存]    ⇒ バイナリ編集結果を保存する
  ★[q字] ⇒ キー入力の記録を開始する。[:@]⇒記録内容を確認する
  ★[:marks] ⇒ マークの位置と一覧の参照
  ★[:global] ⇒ ファイル内の各行毎に編集処理を実行する
  ★[ga] ⇒ カーソル位置の文字のASCIIコードを表示する
  ★[:pwd] ⇒ カレントディレクトリを確認する
  ★[c:\> vim -d filename1 filename2] ⇒ ファイルの差分を確認する(コマンドラインから)
  ★[:vert diffsp filename] ⇒ ファイルの差分を確認する(vimから)
  ・[q:] ⇒ コマンド履歴を表示する。カーソル移動(j,k,h,l)で履歴コマンド選択可能。
  ・[J] ⇒ 行の連結コマンド
  ・[:%j] ⇒ ファイル内の全ての行を連結する
  ・[:cd ***] ⇒ ディレクトリの移動
  ・[:cd ~] ⇒ ホームディレクトリへ移動
  ★[:cd %:h] ⇒ 編集中ファイルのディレクトリに移動する
  ・[m[A-Z]] ⇒ ファイル自体をマークし、['[A-Z]]で一気にファイルを開く
                この機能が効かない場合は _vimrc に [:set viminfo+=f1] を設定する
  ・[8a---------+] ⇒ 80文字分のメモリを作る
  ・[8i---------+] ⇒ 80文字分のメモリを作る
  ・[:vimgrep /string/ **/*.java | cwin] ⇒ vimgrepの使い方
                                         ⇒ ★[Ctrl r] + [Ctrl w]でカーソル下の単語をコマンドラインに挿入できる
                                         ⇒ ★[Ctrl r] + " でヤンクした単語をコマンドラインに挿入できる
  ・[:DiffOrig] ⇒ 最後にバッファに保存時点からの差分を表示(終了するには :diffoff)

◆ヘルプ
  ・[:help visual-operators]

◆設定(オプション一覧)
  ・私の設定(_vimrc)
    "---------------------------------------------------------------------------
    " 検索の挙動に関する設定:
    set noignorecase    " 検索時に大文字小文字を無視しない
    set noincsearch     " インクリメンタルサーチしない
    set hlsearch        " 検索文字列をハイライトする
    set nowrapscan      " 検索時にファイルの最後まで行ったら最初に戻らない
    "---------------------------------------------------------------------------
    " 編集に関する設定:
    set tabstop=2       " タブの画面上での幅
    set expandtab       " タブをスペースに展開する
    set shiftwidth=2
    set noautoindent    " 自動的にインデントしない
    set nosmartindent   " 自動ンデントしない
    set noshowmatch     " 括弧入力時に対応する括弧を表示しない
    "---------------------------------------------------------------------------
    " GUI固有ではない画面表示の設定:
    set number          " 行番号を表示
    set noruler         " ルーラーを表示しない
    set list            " タブや改行を表示
    set listchars=tab:>-,trail:-,eol:< " どの文字でタブや改行を表示するかを設定
    set nowrap          " 長い行を折り返さない
    set laststatus=1    " ステータスラインの表示(ウィンドウが複数の場合だけ)
    set cmdheight=1     " コマンドラインの高さ
    set wildmenu
    set cursorline      " カーソル行の強調表示
    set scrolloff=999   " 常にカーソル行を真ん中に
    "---------------------------------------------------------------------------
    " その他設定
    set nobackup        " バックアップファイルを作成しない
    set backupdir=c:\tmp" directory for backup
    set directory=c:\tmp" directory for swap
    set hidden          " 保存しないで他のファイルを表示できるようにする
    colorscheme default " 家のマシンだとこの色が綺麗!

    "set tags=C:\eclipse\jdk1.6.0_25\src\tags

  ・私の設定(_gvimrc)
    " フォント設定:
    set guifont=MS_Gothic:h9:cSHIFTJIS
    "---------------------------------------------------------------------------
    " ウインドウに関する設定:
    :winpos 400 300
    set columns=100     " ウィンドウの幅
    set lines=25        " ウィンドウの高さ
    set guioptions-=T
    colorscheme desert

    "set tags=C:\eclipse\jdk1.6.0_25\src\tags

  

DOSで動作するUNIXコマンドツール

#windows#DOS#unixコマンド

 

下記URLでは、3つのツールを比較している。

Windows上で動作するUNIX系コマンドラインツールの比較 - Computer

-----

  • NT版UNIX-like tools(※僕が従来ずっと使ってたやつ)
  • GnuWin32
  • Windows Services for UNIX

-----

 

最終的には、従来通り UNIX-like tools にした。

下記の busybox-w32 も使ってみたが...選ばれなかった。

 

DOSコマンドのヘルプを表示するには?

#windows#DOS#ヘルプ

 

例えば、「echo」コマンドのヘルプを表示するには

-----

DOS > echo  /?

-----

 

下記でDOSコマンド一覧が表示される

-----

DOS> help

特定のコマンドの詳細情報は、"HELP コマンド名" を入力してください
ASSOC ファイル拡張子の関連付けを表示または変更します。
ATTRIB ファイルの属性を表示または変更します。
BREAK 拡張 CTRL+C チェックを設定または解除します。
BCDEDIT ブート データベースのプロパティを設定して起動時の読み込みを制御します。
CACLS ファイルのアクセス制御リスト (ACL) を表示または変更します。
CALL バッチ プログラム中から、別のバッチ プログラムを呼び出します。
CD 現在のディレクトリを表示または変更します。
CHCP 有効なコード ページ番号を表示または設定します。
CHDIR 現在のディレクトリを表示または変更します。
CHKDSK ディスクをチェックし、状態を表示します。
CHKNTFS 起動時のディスクのチェックを表示または変更します。
CLS 画面を消去します。
CMD Windows コマンド インタープリターを新しく起動します。
COLOR コンソールの文字と背景の既定の色を設定します。
COMP 2 個のファイルまたはファイルの集合の内容を比較します。
COMPACT NTFS パーティション上のファイルの圧縮状態を表示または変更します。
CONVERT FAT ボリュームを NTFS に変換します。現在のドライブは変換できません。
COPY 1 個以上のファイルを別の場所にコピーします。
DATE 日付を表示または変更します。
DEL 1 個以上のファイルを削除します。
DIR ディレクトリ中のファイルやサブディレクトリの一覧を表示します。
DISKCOMP 2 つのフロッピー ディスクの内容を比較します。
DISKCOPY フロッピー ディスクの内容を別のフロッピー ディスクにコピーします。
DISKPART ディスク パーティションのプロパティを表示または構成します。
DOSKEY コマンド ラインの編集、Windows コマンドの再呼び出し、マクロの
作成をします。
DRIVERQUERY
現在のデバイス ドライバーの状態とプロパティを表示します。
ECHO メッセージの表示、コマンド エコーのオン、オフの指定をします。
ENDLOCAL バッチ ファイルで、環境変数のローカル化を終了します。

(略)

-----

 

 

名詞って難しいね...

#英語#名詞#普通名詞#集合名詞#固有名詞#物質名詞#抽象名詞

 

◆知ったこと

  • 数えられる名詞が普通名詞と集合名詞で、数えられない名詞が固有名詞と物質名詞と抽象名詞
  • 英語は、固有名詞の先頭は大文字で書く(I like English)
  • その名詞が固有名詞かどうか迷った時は、まずは数えられるかを確認し数えられるならそもそも固有名詞ではない。次に数えられない、且つ、世の中の共通認識として誰でも「あ、あれね!」って言えるならそれは固有名詞だね。
  • 地球「earth」は普通名詞? or 固有名詞

  • ああああ

 

◆ためになるHP

gigazine.net

 


 

 

cookieって何だっけ?

#ブラウザ#クッキー#cookie

 

◆関連リンク

 

cookieは危険か?

Cookieとは、発行したWebページしか読み込めません。

・適切に管理したCookieから個人情報が漏洩するリスクは極めて低いでしょう。

・ただし共有のパソコンやデバイスの紛失から、Cookieが悪用されるケースはありますのでご注意下さい