Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Vim高速マスター!

$
0
0

この記事でのキーの記述方法

  • <C-v>Ctrlを押しながらvを押す
  • <CR>はEnterキー
  • <Esc>はEscapeキー
  • <Tab>はタブキー

入門編

ノーマルモード

カーソル移動やテキストの削除,コピー,ペーストなどの簡単な操作を行うモード

移動

コマンド移動先
文字単位
h
j
k
l
ジャンプ
^行の先頭の非空白文字
0行の先頭
$行末
gg最初の行
G最後の行
スクロール
C-d半ページ下 (down)
C-u半ページ上 (up)
C-f1ページ下 (forward)
C-b1ページ下 (backward)
zzカーソルキーを画面中央へ

削除・コピー

キー範囲
削除
xカーソル下の文字
dd
Dカーソルから行末
削除してインサート
sカーソル下の文字
cc
Cカーソルから行末
コピー(ヤンク)
ylカーソル下の文字
yy
Y

ペースト

コマンド貼り付け先
pカーソル右(行単位のコピーの場合は,1行下)
Pカーソル左(行単位のコピーの場合は,1行上)

Undo & Redo

undo: u
redo: C-r

インサートモード

実際にテキストを入力するモード

コマンドノーマルモードからのインサート先
iカーソルの左
aカーソルの右
I行の先頭の文字の前
A行末
o改行してインサート(下方向)
O改行してインサート(上方向)

ビジュアルモード

テキストを選択するモード

コマンド単位
v文字
V
C-vブロック

選択後d, c, yで,それぞれ削除,削除してインサート,ヤンク

コマンドラインモード

ファイルを開いたり,検索・置換などの様々な指示を行うモード

ファイル操作

コマンド効果
:e {パス}{パス}を開く
:q閉じる
:w {パス}保存する({パス}がある場合は名前をつけて保存)

!を付ければ強制的に実行する(例えば:q!は保存せずに閉じる)

検索

  • ファイル内で{text}を前方検索:/{text}<CR>
  • ファイル内で{text}を後方検索:?{text}<CR>

nで次の候補に進み,Nで前の候補に戻る

置換

  • :s/{before}/{after}: 現在の行の最初の{before}{after}に置換
  • :s/{before}/{after}/g: 現在の行の全ての{before}{after}に置換
  • :%s/{before}/{after}/g: 現在のファイルの全ての{before}{after}に置換

指定行へジャンプ

:{number}

基本編

インデント

下げる:>>
上げる:<<
ビジュアルモード選択後も可能

小回りを効かす

構文:{operator} + {motion}
結果:{motion}の範囲を{operator}する.

{operator}効果
d削除
c削除してインサートモード
v選択
yヤンク
{motion}範囲
wカーソル位置から単語の終わり
awカーソル下の単語と左右どちらかのスペース (a word)
iwカーソル下の単語 (inner word)
ジャンプキーカーソル位置からジャンプ先まで(入門編のノーマルモードのジャンプ参照)

上記のモーションにおいて,大文字Wを使えば記号で区切らない

(text), {text}, [text], 'text', "text", <text>への操作

構文:{operator} + {iora} + {symbol}
「小回りを効かす」での{motion}w{symbol}になったと考えてもOK

  • {operator}は前項「小回りを効かす」と同じ
  • iの場合は{symbol}の内部(inside)
  • aの場合は{symbol}を含む(arround)

例:ci((text)内のtextを削除してインサート

検索

移動にも便利

  • 行内の{character}を前方検索:f{character}
  • 行内の{character}を後方検索:F{character}

これらは{motion}化される

素早い検索

  • カーソル下の単語を前方検索:*
  • カーソル下の単語を後方検索:#

置換モード

  • r: 一文字のみ置換
  • R: 連続で文字を置換

インサートモードで素早い編集

  • <C-h>:バックスペース
  • <C-w>:直前の1単語を削除
  • <C-u>:行頭までを削除
  • <C-r>":ペースト(ノーマルモードでのpと同じ)

リピートコマンドとその取り消しコマンドを対で覚える

リピートするものリピートコマンド取り消しコマンド
変更.u
行内検索(f,F;,
ファイル内検索(/,?nN
置換(:s/{before}/{after}&u

挿入モード時にカーソルを画面中央に持ってくる

  1. <C-o>
  2. zz

ビジュアルモードの始点を反転

ビジュアルモード時にo

Untitled.gif

電卓を使う

インサートモードで<C-r>=

行の連結(join)

スペースあり:J
スペースなし:gJ

元いた場所にジャンプする

戻る:C-o
進む:C-i

応用編

指定単語数を一気に編集

d{count}w, c{count}w(gifではc3wを使用)

Untitled.gif

コマンドラインモードでの特殊文字の入力

  • 改行:<C-v><C-M>または<C-v><CR>
  • タブ:<C-v><Tab>

eaは一つのコマンドとして覚える

append at the end of word

複数行の先頭に{text}を挿入

リピートコマンド.を使う

  1. I
  2. {text}<Esc>
  3. .を使い他の行でリピート

Untitled.gif

ビジュアルブロックを使う

  1. ビジュアルブロック<C-v>で対応する行頭を選択
  2. I
  3. {text}<Esc>

Untitled.gif.gif

コマンドラインモードを使う

  • いずれかのビジュアルモードで対応する行を選択
  • :normal I{text}<CR>

Untitled.gif

複数行の行末に{text}を挿入

リピートコマンド.を使う

  1. A
  2. {text}<Esc>
  3. .を使い他の行でリピート

Untitled.gif

ビジュアルブロックを使う

  1. ビジュアルブロックC-vで対応する行を選択
  2. $
  3. A
  4. {text}<Esc>

Untitled.gif

コマンドラインモードを使う

  • いずれかのビジュアルモードで対応する行を選択
  • :normal A{text}<CR>

Untitled.gif

確認しながら置換

コマンドラインモードの置換を使う

:%s/{before}/{after}/gc

Untitled.gif

検索とリピートコマンドを使う

  1. /{before}<CR>
  2. cwなどで{after}に変更(gifではsを使用)
  3. n.でリピート(置換しない場合はnでスキップ)

Untitled.gif

練習問題

Mon
Tue
Wed
Thu
Fri
Sat
Sun

から

days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]

を作り,その逆もやってみてください(元ネタ:vim-multiple-cursors).手段は問いませんが,プラグインを使っては意味がないです..解答例を載せておきます(これが正解という訳ではありません).紹介したコマンドのみで実現しています.

ex1.gif

ex2.gif


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>