vim

vim操作方法

# 行の最後に移動しinsertモード
shift+A

# redo(やり直し)
ctrl+r

# 文頭へ移動
shift+^

# 行末へ移動
shift+$

# 複数行をコピー
shift+V

# 行を削除(カット)
dd

# カーソルの位置から行の最後まで削除
D

# ビジュアルモード。範囲を指定してy(ヤンク)でコピー
v

# ペースト
p

# カーソルの一行上に行を挿入しinsertモード
shift+o

# カーソルの一行下に行を挿入しinsertモード
o

# 半画面下へ移動する
ctrl+d

# 半画面上へ移動
ctrl+u

# 選択した行を左寄せ
Vで行選択 → :le

# 選択部分を指定した方向へインデントします。
Vで選択し、:「>」「<」

# n(回数)を指定し、指定した値だけインデントします。
Vで選択し、n + shift + 「>」or「<」

vim設定ファイルの更新

.vimrc

# 行番号を表示
set number

# 括弧を入力した際に、対応する括弧を表示
set showmatch

# タイトルを表示
set title

# コードを色分け
syntax on

# タブを空白に置き換える
# インデントを4文字分に
set tabstop=4
set softtabstop=4
set shiftwidth=4

# スマートインデントを使用
set smartindent
set autoindent

# コマンドの履歴の保存数を指定する
set history=10000

# 検索ヒット時に、ヒットした部分を色づけする
set hlserach

# 検索に大文字を含んでいる場合、大小区別して検索する
set smartcase

# タブを分かりやすくする
set listchars=tab:»-,trail:-

ファイルエンコードの確認/変換

ファイルエンコード/フォーマットの種類として、”enc”, “fileencoding”, “fileformat”の3つがある。
例外として、Excel形式 “.xlsx” から “.tsv” への変換は、GoogleSpreadSheetへインポートしてから “.tsv” 形式でエクスポートを行えばよい。

文字のエンコードを確認/変更する

エンコードを確認する。

:set enc

変更する。

:set enc=utf-8
:set enc=shift_jis

ファイル自体のエンコードを調べる

エンコードを確認する。

:set fileencoding

変更する。

:set fileencoding=utf-8
:set fileencoding=shift_jis
# 短縮型:":set fenc"でも可能。

改行コード

  • unix: LF \n
  • Mac: CR \r
  • Windows: CR+LF \r\n

ファイルの改行コード(フォーマット)を確認/変更する

Windowsで作成したファイルの改行コードは”CR+LF”である。
これに対して、Linuxの改行コードは”LF”であり、ファイルの転送方法によってはWindowsで作成したテキストファイルをVimで開くと、すべての行末に”M”が表示される場合がある。

改行コードを確認する。

:set fileformat

変更する。

:set fileformat=mac
:set fileformat=dos
:set fileformat=unix
# :set ff (短縮系)

改行コードを削除し、”LF”へ変換(^M削除)する。

:%s/^M//g

“^M”は”Ctrl+V+Ctrl+M”で記述可能。

改行コードをコマンドから調べる

od -c xxx.txt | less

vimでペーストする際、インデントをコピー元ママにする

  1. setコマンド “:set paste” をタイプ、Enter。
  2. “i”を押下しInsertモードにし、”command+p”でペーストを行う。

特定の文字数をカウントする

:%s/{検索したい文字}/&/gn + Enter
10 matches on 3 lines

タブをスペースへ変換する

:set expandtab
:%retab

インデントは、タブではなくスペースを利用するようにする。

ファイルの比較をする

vimでファイルを開き、”:vsplit”に続けて編集したいファイル名を入力する。

:vsplit {比較するファイル}

:windo diffthis


ページをスクロールすると比較対象のファイルも同時にスクロールする。

以下も同様のコマンドである。

:vertical diffsplit 編集するファイル
$ vimdiff Aファイル Bファイル

“dp”と入力すると、該当箇所をマージする。

カーソルを行末から下へ、行頭から上へ自動で移動させる

デフォルトだと行末へカーソルを移動させた後、右へさらに移動させても下へは自動で移動してくれない。
以下の設定を”.vimrc”へ記述することで解消する。

set whichwrap=b,s,<,>,[,]