vim Cheats - foolmacky/DevelopDocs GitHub Wiki

■検索

  • * or # を打鍵すると、カーソル上の単語について現在のバッファを検索。
  • *は前方、#は後方だが、何れにせよすべてハイライトされ、n/Nで移動できる

■スクロール系

  • zz カレント行が画面中央になるように画面スクロール
  • Ctrl+e カーソルの位置を変えずに画面を下にスクロール
  • Ctrl+y カーソルの位置を変えずに画面を上にスクロール

■複数画面のカーソル移動

  • <C-w>h 左
  • <C-w>j 下
  • <C-w>k 上
  • <C-w>l 右
  • <C-w>w 次のwindow

■画面自体の移動(Uppercaseになり、カーソル移動と対になっている)

  • <C-w>H 左
  • <C-w>J 下
  • <C-w>K 上
  • <C-w>L 右

■vimのterm機能

  • :termでターミナルwindowが自動的に画面分割して開く。ranger配下からでも問題ない
  • terminal画面ではコマンドを打鍵した結果はスクロールバックできないが、<C-w>N (ノーマルモード)で出力bufferをvimに取り込んで開くことができる
  • a or iを打つと、もとのterminal画面に戻る
  • bufferを取り込んだvimで :q するとterminal画面自体が閉じるが、bufferを編集したりしているとterminal&bufferとして残り、vimを終了できない
  • 通常はterminal画面でexitするほうがいい。

■bufferの扱い

  • :ls 現在のbufferのリストを得る
  • sb <buffer NO.> 画面分割してbufferを表示

■word選択範囲の書き直し

  • つい viwc とやってしまいがちだが、これは無駄だ。ciwc が正しい。 y についても同様

■visual選択モードのときの行No移動(行Noでの選択)

  • <行ナンバー>gg or <行ナンバー><Shif>G

■:grepとquickfixウインドウの制御

  • 現状の設定だと、一旦コンソールに検索結果が出て、Enterするとquickfix windowが開く感じで、直接開けないのか調査中
  • :cn 次の結果にジャンプ
  • :cp 前の結果にジャンプ
  • :ccl クローズ

■ 確認しながらの置換

:%s/hoge/foo/gc
//c optionをつける

■vimで複数ファイルの一括更新

:args **/*.go
//カレントディレクトリ以下の*.goファイルをリストアップ
:args
//arglistを確認
:argdo %s/foo/hoge/g | update
//リスティングされたファイルについて置換と保存コマンドを実行

vimで正規表現の際にエスケープが必要な特殊文字

^ $ . * [ ] / ~ \ (sedとは異なる)

■ 現在のbufferと比較( vim -d )と同じ動作

:diffs <File名>

■vimの最短マッチ

//最長マッチ:*
%s/^.*,//
//最短マッチ:\{-}
%s/^.\{-},//

■vimのバイナリモード編集

//binモードでopen
vim -b hoge.txt

//表示変更、編集
//編集は左側のバイトコードで行う。右側は単なる表示なので、いじっても意味はない
:%!xxd

00000340: b3a2 28d3 ddf5 3518 4f27 e09f 7e0f 4164  ..(...5.O'..~.Ad
00000350: fe04 e118 20c0 b082 9c00 ae38 a404 ecd2  .... ......8....
//編集しても右側の表示はリアルタイムでは変わらない

//表示を戻す
:%!xxd -r
//表示を戻せば、保存できる。
//表示を戻さないで保存すると、バイナリダンプの表示のまま保存される

■LF問題

行の最後には必ずLFが付く。取り除くにはバイナリモードで編集して保存するしかないかも
http://github.com/vim-jp/issues/issues/152
テキストファイルの仕様としては、必ず最後に終端コードが必要
https://hiroakiuno.hatenablog.com/entry/20070409/p1

■改行コードを入力する

:%s/,/^M/g
//ctrl+V ctrl+Mと打鍵する

//改行コードのモードの確認、設定
:set ff?
fileformat=unix

:set ff=dos
//dos形式に変更

検索条件としては\nと普通に入れればOK

■行削除

:g/^$/d
//空行の削除

■選択範囲にのみ対する編集など

最初に範囲選択して、「:」を打鍵し、g, sコマンドを打つ

■複数のスペースを一つに

:%s/ \+/ /g

■改行などを表示したい

.vimrcに表示するキャラクタを設定
set listchars=tab:»-,trail:-,eol:↲,extends:»,precedes:«,nbsp:%

:set list コマンドで表示される
解除するには:set nolist コマンドを打つ

■色の設定

どのハイライトグループがどのようにハイライトされているかは :highlight コマンドを引数なしで起動することで確認できる

■文字コードの違いから化けているファイルを、文字コードを指定して開き直す

//現在の文字コードを確認
:set enc?

:e ++enc=文字コード
//文字コードのバリエーション: iso-2022-jp euc-jp sjis utf-8 cp932

//ファイルの文字コードを確認
:set fenc?

■タブ<=>スペースに全体置換

//2回コマンドを打つ
//それ以降の編集でタブキーを使ったときにも、その設定が使われる
//tab -> space
:set et
:ret
//space -> tab
:set noet
:ret!
⚠️ **GitHub.com Fallback** ⚠️