スキップしてメイン コンテンツに移動

使いこなせてないviコマンド覚書

とうとう入門viを買ってしまったので読みつつ、今のところ使いこなせてないコマンドの覚書。
意識的に使うべし>自分

  • number指定を用いたhjkl移動
    • 連射せずにジャンプする癖を付ける
  • C:現在位置から行末までを削除し、入力モードに移行(=c$)
  • S:現在の行を削除し、入力モードに移行
  • D:現在位置から行末までを削除
  • A:行の末尾に移動して入力モード
  • I:行の先頭に移動して入力モード
  • J:2行の連結
  • zシリーズ
    • z:現在の行を画面の一番上へ表示するスクロール
    • z.:現在の行を画面の中央へ移動するスクロール
    • z-:現在の行を画面の一番下へ移動するスクロール
  • H, M, L:画面の一番上、中央、一番下へそれぞれジャンプ
  • nH, nL:画面の一番上から及び画面の一番下からn行目へジャンプ
  • n|:n列目の文字へジャンプ
  • e, E:単語の末尾にジャンプ(Eは句読点を単語の一部とする)
  • fx, Fx:現在の行の次(前)のxへジャンプ
  • tx, Tx:現在の行の次(前)のxの前の文字(後ろの文字)へジャンプ
  • ;, \,:直前の上記2つを繰り返す(逆順で繰り返す)
  • xG:x行目へジャンプ
    • :xが癖になってるが、こっちの方が早い
  • 起動時 vi +n file:n行目の位置でfileをオープン
  • 起動時 vi + file:最終行の位置でfileをオープン
  • 起動時 vi +/pattern file:最初にpatternが見つかった位置でfileをオープン
  • "xyy:カレント行をバッファxへヤンク→"xp:カレント行の次の行へバッファxの行をペースト
    • バッファ名が大文字の場合更新でなく追加
  • 'x:マークxの行の先頭にジャンプ
  • `x:マークxの文字へジャンプ
  • exコマンドでの操作
    • d:削除
    • m:移動
    • t:コピー
  • exコマンドでの行シンボル
    • 0:ファイルの先頭(1行目の前)
    • .:カレント行
    • $:ファイル最後の行
    • %:すべての行
  • 検索パターンメタキャラクタ
    • \<, \>:TANGONO先頭、末尾
  • 置換文字メタキャラクタ
    • \u, \l:最初の文字を大文字(小文字)に変換
    • \U, \L:\e又は\Eまでを大文字(小文字)に変換
  • :&(=&):置換繰り返し
  • :r !xxx:シェルでコマンドxxxを実行した結果を読み込む
  • :xx,yy!zzz:xx~yy行目をシェルでコマンドzzzに渡し、実行結果で入れ替える
多いなおい。
だがそれがいい(ぁ

追記。その他
  • ^Ws=:split
  • ^Wv=:vsplit

コメント

このブログの人気の投稿

Firefoxのvim化アドオンVimperatorを使ってみた

Firefoxのアドオン Vimperator をここ1,2か月ほど使っています。 機能的には、知る人(訳:Linux触る機会がある人)ぞ人知るテキストエディタvi又はvimの操作をFirefoxの操作に組み込んでしまおうというもの。 vimに慣れている人なら、導入して少し覚えるだけでマウスを使わずに普通のブラウジングはすべてキーボードで完結できるようになります。 タブのURLコピーや新しいタブでクリップボードにあるURLや検索文字列の検索をボタン一つで開いたり、タブ操作をキーボードの操作のみで出来るなど、慣れればかなり便利で、現在自宅、学校、仕事先すべてのPCに導入するまでに至っております。 操作詳細などは FirefoxのVimperatorがすごく便利 Firefox拡張:FirefoxをVim風のキーバインドで操作するVimperator このあたりを参照してもらえば主要な操作はわかります。直で言ってもらえれば自分が個人的に作ったよく使う操作一覧などお送りします。 さくさく動くのでほとんど満足なのですが、唯一コピペのWindowsデフォルトであるCtrl+cやCtrl+v等の操作が競合してしまうため、感覚的にコピーしたいと思った時にCtrl+Cを押してコピーできていないことによくはまってしまうことが難点な感じです。 今のところ対応策としてはテキストを選択してShift+yでヤンク(コピー)するか、Ctrl+vで1操作エスケープする状態にしたうえでCtrl+cなどする以外にはなさそうな気がします(他に方法があれば教えてくださいpq)。 ここのキーバインドのon/offなどが簡単にできれば最高なのですが、まだまだ発展途上な感じなので今後に期待。

git status と git branch ができる unite の source 書いた

書きました。 https://github.com/kmnk/vim-unite-giti すでに有りそうな気もするんですが、今のところ知らないのと、 http://kmnk.blogspot.com/2011/02/unitesvn-statussvn-diffsource.html で書くといって既に一年経っているのとで自分で書いてみました。 まだ仕事でがっつり使っていないので、バグや動作不全などあるかもしれません。 昔作った svn と違って何故か vim-unite-git じゃなくて giti なのは、日和っただけで深い意味は無いです。 インストール方法は割愛します。unite.vim 使っている方なら余裕なはずという想定で… 作ったsourceの名前は以下。 giti/status giti/branch 追記(02/29): READMEには追加しているんですが、sourceをいくつか追加しました。以後は README.markdown を参照してください。 giti giti/log giti/config  追記ここまで(02/29) それぞれ、独自 kind を定義していて、以下のactionを持っています。 giti/status add $ git add $FILES rm_cached $ git rm --cached -- $FILES reset $ git reset HEAD $FILES commit $ git commit $FILES amend ←動作が怪しい $ git commit --amend $FILES checkout $ git checkout -- $FILES diff $ git diff $FILES diff_cached $ git diff --cached $FILES git/branch run $ git checkout $BRANCH_NAME or git checkout -b $NEW_BRANCH_NAME delete $ git branch -d $BRANCH_NAME その他、以下の関数を用意しています。key map などして使えるかもしれないです。 giti#branch#delete_force(branch) $ git branch -D...

ホストOSからゲストOSへsshでアクセスできるようにする

前回 ホストOSからゲストOSのsvnを使えるようにしました。 同様なポートフォワーディング等を使って、sshでアクセスできるようにします。 1. やりたいこと ホストOS、その他PCからゲストOSにsshでアクセスする 2. やること ゲストOSでsshアクセスの設定 ホストOSでポートフォワーディングの設定 アクセスできるか確認 3. 操作の解説 ここまででsvnにアクセスできていれば面倒なところは無いのでさくさく進みます。 1. ゲストOSでsshアクセスの設定 1.1 インストール ゲストOS上で以下のコマンドを実行し、インストールする $ sudo apt-get install ssh 2. ホストOSでポートフォワーディングの設定 2.1 設定の更新 svnへポートを通した操作と似たようなことをsshのポート用に行います。 コマンドプロンプトで以下のコマンドを実行。VirtualBoxのインストール場所が異なる場合は調整してください。 また、svnと同様にアダプタタイプが「PCnet」の場合は「e1000」を「pcnet」に書き換え、また「VirtualBox_Ubuntu」は各自が設定したマシン名に書き換えてください。 cd "C:\Program Files\Sun\xVM VirtualBox" VBoxManage setextradata "VirtualBox_Ubuntu" "VBoxInternal/Devices/e1000/0/LUN#0/Config/guestssh/Protocol" TCP VBoxManage setextradata "VirtualBox_Ubuntu" "VBoxInternal/Devices/e1000/0/LUN#0/Config/guestssh/GuestPort" 22 VBoxManage setextradata "VirtualBox_Ubuntu" "VBoxInternal/Devices/e1000/0/LUN#0/Config/guestssh/HostPort" 2222 2.2 設定の確認 念のため確認します。前記の位置で引き続き以...