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

Vim操作メモのまとめ(自分用

$
0
0

編集系

開く

  • 文字コードを指定 utf-8 shift_jis euc-jpして開く

    :e ++enc=utf-8 filepath "現在のファイルを開き直すときはfilepathを入れない
    
  • 改行コードを指定 unix dosして開く

    :e ++ff=unix filepath "現在のファイルを開き直すときはfilepathを入れない
    
  • 水平分割で開く

    :sp|new|split filename
    
  • 垂直分割で開く

    :vs|vnew filename
    
  • 新規タブで開く

    :tabe filename
    

保存

  • 管理者権限で保存

    w !sudo tee %
    

編集

  • カーソル上の単語を削除してインサートモードへ

    ciw
    ciW <- 単語の囲い文字を含む
    cit <- タグで囲まれた範囲
    
  • カーソルがある範囲を削除してインサートモードいろいろ

    ci' | ci" | ci[ | ci] | c0 | c$
    
  • カーソル行を削除してインサートモード

    S カーソル行の文字を全て消してインサートモードへ
    cc 行削除インサートモードへ
    c5c|c5j その行を含む下5行をクリアしてインサートモードに入る
    
  • 複数選択範囲を削除してインサートモードへ

    s
    
  • カーソルの下の単語をレジスター5の文字列に置換

    viw"5p
    
  • 直前の操作をおこなう

    . <-基本的にドットを連打
    10. <-10回繰り返す時
    

削除

  • 文字を削除

    diw
    diW <- 単語の囲い文字を含む
    dit <- タグで囲まれた範囲
    
  • abc を含む行を削除する 範囲内のみ可能

    :g/abc/d
    
  • abc を含まない行を削除する 範囲内のみ可能

    :v/abc/d
    
  • カーソルがある範囲を削除いろいろ

    di' | di" | di[ | di] | d0 | d$ | D <- d$と同じ
    
  • 1字もしくは選択範囲を削除

    x 前 | X 後ろ
    

カーソル移動

  • 文字単位移動

    w W b B
    
  • カーソルを表示範囲の最上部,中央,最下部へ移動

    H ...High
    M ...Middle
    L ...Low
    
  • 文字へジャンプ

    fx 次のxまで飛ぶ
    Fx 前のxまで飛ぶ
    tx 次のxの手前まで飛ぶ
    Tx 前のxの次まで飛ぶ
    ; 繰り返し用 前方
    , 繰り返し用 後方
    

範囲選択

  • カーソル上の単語を選択

    viw
    viW <- 単語の囲い文字を含む
    
  • カーソル上で記号で囲まれた範囲を選択

    vi' | vi" | vi[ | vi] | viW <-囲い文字も含める
    
  • 前回の選択範囲を再選択

    gv
    

ヤンク

  • ヤンク 単語 記号で囲まれた範囲や括弧の範囲など

    yiw | y0 | y^ | y$ | yi' | yi" | yi[ | yi]
    
  • カーソル行をヤンク 行の先頭から改行まで

    Y
    
  • レジスタaにヤンク

    "ay
    
  • レジスタの一覧を確認

    :reg
    

ペースト

  • レジスタaをペースト

    "ap | "aP
    
  • コマンド欄の入力にて、レジスタaの内容をペーストする

    <C-r>a
    
  • コマンド欄の入力にて、最後に検索した文字列をペーストする

    <C-r>/
    
  • コマンド欄の入力にて、クリップボードの内容をペーストする

    <C-r>*
    

レジスタ操作

  • レジスタを他のレジスタにコピー

    :let @y=@a
    

インデント

  • カーソル行のインデントを削除

    0d^ | ^d0 | ^0c  cはインサートモードへ
    
  • 現在のカーソル行を揃える

    ==
    
  • バーチャルモードで選択した範囲を揃える

    =
    
  • 編集モードで字下げの追加と削除

    <C-t> <C-d>
    

検索

  • smartcaseで大文字が入るときは区別する

    :set smartcase
    :set nosmartcase
    
  • 大文字小文字を区別しない ignore case

    :set ic
    
  • 大文字小文字を区別する no ignore case

    :set noic
    
  • 検索時のオプションで大文字小文字を \c区別しない \C区別する

    /xxx\c | /\Cxxx
    
  • 検索途中に一致する文字列に移動するインクリメントサーチ

    :set incsearch
    :set noincsearch
    

置換

  • ファイル全て

    :%s/検索/置換/g
    
  • 行を指定 10から50行

    :10,50s/検索/置換/g
    
  • 選択範囲

    :'<,'>s/検索/置換/g
    
  • 後方参照置換

    \(後方参照文字列\)
    \1
    

変換

  • 数字をインクリメントデクリメント 数値の上で

    <C-a> | <C-x>
    
  • 大文字小文字変換 ビジュアルモードで範囲選択後に

    u | U
    
  • 空白をタブに変換

    :set noexpandtab
     と設定してある状態で
    :retab!
    
  • タブを空白に変換

    :set expandtab
     と設定してある状態で
    :retab
    

囲い文字変換 'tpope/vim-surround'

  • 選択範囲の文字を囲い文字で囲う

    S◯
    
  • 範囲選択せずに囲い文字で囲う ...正直使いにくい

    ys◯●  ...◯は範囲 w(単語)t(タグ) ●で囲う
    
  • カーソルがある位置の文字を囲い文字を変更したい時

    cs◯●  ...◯から●へ
    
  • カーソルがあるいちの文字を囲い文字を削除したい時

    ds◯    ...tでタグ削除できる
    

HTMLへ変換 'mattn/emmet-vim'

  • 未入力の場所へ移動してインサートモードへ(インサートモード中でも使える)

    <emmet-leader>n N 次へ前へ
    
  • すでにある文字をタグで囲む

    ビジュアルモードで選択してから
    <emmet-leader>,とするとTag:が表示される
    
  • タグをコメント化/解除

    <emmet-leader>/
    
  • 選択範囲を一行にまとめる

    <emmet-leader>m
    
  • 書き方

    div>p{a}^span
    ^ ノードを一つ上に行く divとspanが兄弟
    一気に書かなければあまり使わないかな…
    .
    (兄)+弟 と()で囲める書ける
    div>(ul>li*3)+p{pタグ}
    .
    classを連番で3行
    table#id>tr.class$*3
    .
    {文字列}
    a{リンク文字列}
    

ジャンプ

  • 指定した行番号へジャンプ

    :80
    80G <-  こっちはビジュアルモードでも使える
    
  • 最終編集位置へジャンプ

    `. | '.
    
  • ジャンプリスト カーソル位置へ戻る,進む

    <C-o> <C-i>
    
  • タグジャンプ

    <C-]>        カーソルの下のタグ定義へジャンプ
    <C-t> | :pop タグスタックをたどる
    :tag         タグスタックをすすむ
    
  • 対応した括弧へジャンプ

    %
    
  • 括弧の始まりと終わりへ移動

    [{ 現在カーソルの位置のネストの開始"{"へ移動
    ]} 現在カーソルの位置のネストの終了"}"へ移動
    
  • メソッドジャンプ

    ]] 次のメソッドの始まりに移動
    [[ 前のメソッドの始まりに移動
    
    ]m 次のメソッドの始めに移動
    ]M 次のメソッドの終わりに移動
    
    [m 前のメソッドの始めに移動
    [M 前のメソッドの終わりに移動
    

スクロール

  • スクロールダウン アップ

    <C-e> <C-y>
    
  • 半ページダウン アップ

    <C-d> <C-u>
    
  • ページダウン アップ カーソルがついてこない

    <C-f> <C-b>
    
  • スクロール 画面表示範囲変更

    z<CR> | zt カーソルが一番上になるように画面スクロール ...Top
    z.         カーソルが中央にくるように画面スクロール
    z- | zb    カーソルが一番下になるように画面スクロール ...Bottom
    

文字コード、改行コードの変換

  • 文字コード変換 utf-8 shift_jis euc-jp

    :set fenc=utf-8
    
  • 改行コード変換 unix dos

    :set ff=unix
    

マクロ操作

  • マクロの記録(5に記録)

    q5
    
  • マクロの実行(5に記録したマクロのを2回実行)

    2@5
    
  • 記録したキーボードマクロのテキストを確認(レジスタ5に登録されている)

    "5
    

コマンド履歴、検索履歴

  • 履歴の表示

    ノーマルモードで q: q/ q?
    
  • 履歴をコマンドへコピーする

    履歴一覧の上で Ctrl+C をする
    
  • 履歴のコマンドや検索を実行する

    履歴一覧の上で Enter
    

Quickfix

  • 開く

    :copen|cw|
    :cgetfile <ファイル名>
    :cfile <ファイル名>
    
  • 移動

    :cn | :cnext
    :cp | :cprevious
    
  • 再読込

    :cbuffer
    
  • 履歴移動

    :cnewer
    :colder
    

location list

  • 開く

    :lopen
    
  • 移動

    :ln | :lnext
    :lp | :lprevious
    

syntax error

  • 開く

    :Errors | lopen
    

環境系

編集モード切り替え

  • フリーカーソルモードON OFF

    :set ve=all
    :set ve=
    
  • インサートモードでのタブ押下時に挿入される文字種

    空白
    :set expandtab
    :set et
    
    タブ
    :set noexpandtab
    :set noet
    
  • タブ・スペースのインデント幅の設定

    :set ts=4
    

文字コード、改行コードの設定

  • 文字コード utf-8 shift_jis euc-jp

    :set fenc=utf-8
    
  • 改行コード unix dos

    :set ff=unix
    

表示変更

  • 折り返しの設定

    :set wrap
    :set nowrap
    

一括操作系

グレップ検索

  • カレントファイル内をグレップ検索

    :vimgrep /検索文字列/jg % | cw
    
    gを付けない場合はそれぞれの行に対して一度のみ
    jを付ける場合は検索終了後に自動でジャンプしない
    
  • 現在のディレクトリを起点にグレップ検索

    :pwd をしてディレクトリ確認
    
    ファイルのディレクトリに移動
    :cd %:h
    
    incとphpファイルを検索
    :vimgrep /検索文字列/jg **/*.inc **/*.php | cw
    
  • dataディレクトリ内でインデックスにキャッシュされている.phpファイルを対象に検索する

    :vim /検索文字列/jg `git ls-files data/**/*.php`
    
  • argsにディレクトリ名を入れれる

    :ar search/directory/**.rb
    :vim hoge ##
    :vim huga ##
    
  • bufferに読み込まれているファイルを対象にグレップ検索をする

    :bufdo vimgrep /検索文字列/jg %
    
  • cwを再び開く

    :copen | :cw
    
  • bufferで開いているファイルに対してグレップ検索をする

    :bufdo vimgrepadd /{検索文字列}/ %
    
  • 履歴移動

    :cnewer
    :colder
    

グレップ置換、改行コード置換、文字コード変換

  1. サブディレクトリを含めて、拡張子mとhのファイルを検索し、argsに登録

    :args **/*.m **/*.h
    
  2. argsに登録されたファイルの一覧を確認

    :args
    
  3. argsに登録されたファイルに対して置換実行

    :argdo %s/search/replace/g | update
    
    改行コードの変更
    :argdo set ff=unix | update
    
    文字コードの変更
    :argdo e ++enc=utf-8 | update
    
    改行コードと文字コードの変更
    :argdo e ++ff=unix ++enc=utf-8 | update
    
    改行コード^Mを削除 ^M = Ctrl+v Ctrl+m
    :argdo % s/^M//g | update
    
  • bufferで開いているファイルのグレップ置換

    bufferで開いているファイルの一覧を確認
    :buffers | :ls
    
    bufferで開いているファイルに対して置換実行
    :bufdo %s/foo/bar/g | update
    
    windowに開いているファイルのグレップ置換
    :windo %s/foo/bar/g | update
    

ファイルブラウザ

  • 編集中のファイルのディレクトリで開く

    :e %:h                  現在のウインドウに
    :leftabove vsplit %:h   現在のウインドウに左ペインとして
    :tabe %:h               新しいタブに
    
  • 編集中のファイルとファイルブラウザを行き来する

    :Rexplore
    
  • netrw 操作いろいろ

    Enter   ファイルを開く、ディレクトリを移動する
    o v p   水平方向、垂直分割、プレビューで開く
    t       新しいタブで開く
    -       上の階層に移動
    u U     ディレクトリ移動履歴を戻ったり、戻るを戻ったり
    c       開いているバッファ(%a)をカレントディレクトリに変更
    P       前のウインドウに選択したものを表示する
    d       ディレクトリの作成
    D       削除
    <C-L>   リフレッシュ
    
    ■Tree表示の時
    
    Enter   展開、閉じる、ファイルを開く
    <S-CR>  シフトを押しながらエンターで現在行の親ツリーを閉じる
    :Ntree [dirname] "dirname" を指定しなかった場合 :NTree ../ に同じ
    

Viewing all articles
Browse latest Browse all 5608

Trending Articles



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