Wilhel

Wilhel

vimエディタ

基本操作#

命令行模式#

  • :q 終了(ウィンドウを閉じる)
  • :w 保存(書き込み)
  • :wq 保存して終了
  • :e {ファイル名} 編集するファイルを開く
  • :ls 開いているバッファを表示
  • :help {タイトル} ヘルプドキュメントを開く
    • :help :w :w コマンドのヘルプドキュメントを開く
    • :help w w 移動のヘルプドキュメントを開く

移動 - 多くの場合は通常モード#

  • 基本移動: hjkl (左、下、上、右)
  • 単語: w (次の単語)、 b (単語の先頭)、 e (単語の末尾)
  • 行: 0 (行の先頭)、 ^ (最初の非空白文字)、 $ (行の末尾)
  • スクリーン: H (スクリーンの最初の行)、 M (スクリーンの中央)、 L (スクリーンの底部)
  • ページ送り: Ctrl-u (上にスクロール)、 Ctrl-d (下にスクロール)
  • ファイル: gg (ファイルの先頭)、 G (ファイルの末尾)
  • 行数: :{行数}<CR> または {行数}G ({行数} は行数)
  • 雑多: % (ペアを見つける、例えば括弧や /* */ のようなコメントペア)
  • 検索: f{文字}、 t{文字}、 F{文字}、 T{文字}
    • 本行の {文字} を前方 / 後方に検索
    • , / ; はマッチをナビゲートするために使用
  • 検索: /{正規表現}n / N はマッチをナビゲートするために使用

選択 - ビジュアルモード#

  • ビジュアル:v
  • ビジュアル行: V
  • ビジュアルブロック:Ctrl+v

編集#

  • i 挿入モードに入る
    • ただし、テキストを操作 / 編集するために、単にバックスペースキーを使うだけではない
  • O / o 上 / 下に行を挿入
  • d{移動コマンド} {移動コマンド} を削除
    • 例えば、dw 単語を削除、 d$ 行末まで削除、 d0 行頭まで削除。
  • c{移動コマンド} {移動コマンド} を変更
    • 例えば、cw 単語を変更
    • 例えば d{移動コマンド} の後に i
  • x 文字を削除(dlと同等)
  • s 文字を置き換え(xiと同等)
  • ビジュアルモード + 操作
    • 選択したテキストを、d で削除または c で変更
  • u 元に戻す, <C-r> やり直し
  • y コピー / “yank” (他のいくつかのコマンド、例えば d もコピーする)
  • p 貼り付け
  • 学ぶべきことがもっとある:例えば ~ 文字の大文字小文字を変更

カウント#

  • 3w 前に 3 単語移動
  • 5j 下に 5 行移動
  • 7dw 7 単語削除

修飾語#

修飾語を使って「名詞」の意味を変えることができます。修飾語には i、内部または内側を意味し、 a、周囲を意味します。

  • ci( 現在の括弧内の内容を変更
  • ci[ 現在の角括弧内の内容を変更
  • da' 単一引用符の文字列を削除し、周囲の単一引用符も含む

デモ#

# fizzbuzz.py
import sys

def fizz_buzz(limit):
    for i in range(1,limit+1):
        if i % 3 == 0:
            print('fizz', end="")
        if i % 5 == 0:
            print('buzz', end="")
        if i % 3 and i % 5:
            print(i)
        else:
            print()

def main():
    fizz_buzz(int(sys.argv[1]))
    
if __name__ == '__main__':
    main()
  • . 最後の変更を繰り返す
  • sys.argv[1] 渡された最初の引数

カスタム Vim#

vim ~/.vimrc
vim /etc/vim/vimrc # debian

拡張 Vim#

一般的に推奨されるプラグイン:

講師たちのオープンソース設定ファイル:

 Vim Awesome

他のプログラムの Vim モード#

Shell#

Bash set -o vi

Zsh bindkey -v

Fish fish_vi_key_bindings

一般的に export EDITOR=vim

Readline#

vim ~/.inputrc
vim /etc/inputrc # debian

set editing-mode vi # vi 編集モードを有効にする、python REPL が Vim ショートカットをサポート

Vim 上級#

検索と置換#

:s (置換)コマンド(ドキュメント)。

  • %s/foo/bar/g
    • ファイル全体で foo を bar にグローバルに置換
  • %s/\[.*\](\(.*\))/\1/g
    • 名前付き Markdown リンクを単純な URL に置換

マルチウィンドウ#

  • :sp / :vsp でウィンドウを分割
  • 同じバッファを複数のウィンドウで表示可能。

マクロ#

  • q{文字} でレジスタ{文字}にマクロを録音開始
  • q録音を停止
  • @{文字} マクロを再生
  • マクロの実行中にエラーが発生すると停止
  • {カウント}@{文字}マクロを {カウント} 回実行
  • マクロは再帰的に使用可能
    • まずq{文字}qでマクロをクリア
    • そのマクロを録音し、@{文字} で再帰的に呼び出す (録音が完了するまで操作は行われない)
  • 例:xml を json に変換する (file)
    • “name” / “email” キーを持つオブジェクトの配列
    • Python プログラムを使用?
    • sed / 正規表現を使用
      • g/people/d
      • %s/<person>/{/g
      • %s/<name>\(.*\)<\/name>/"name": "\1",/g
    • Vim コマンド / マクロ
      • Gddggdd 最初の行と最後の行を削除
      • 最後の要素のフォーマットマクロ (レジスタ e
        • nameを含む行にジャンプ
        • qe^r"f>s": "<ESC>f<C"<ESC>q
      • 一つのフォーマットマクロ
        • personを含む行にジャンプ
        • qpS{<ESC>j@eA,<ESC>j@ejS},<ESC>q
      • 一つのタグをフォーマットしてから別のタグにジャンプするマクロ
        • personを含む行にジャンプ
        • qq@pjq
      • マクロをファイルの末尾まで実行
        • 999@q
      • 最後の , を手動で削除し、[ と ] 区切りを追加

追加資料#

課題#

  1. 完成 vimtutor。備考:それは 80x24(80 列、24 行)ターミナルウィンドウで最もよく見えます。
  2. 提供された vimrcをダウンロードし、~/.vimrcに保存します。このコメント付きのファイルを通読し(Vim を使用!)、新しい設定で Vim がどのように見え、どのように使用されるかの微妙な違いを観察します。
  3. プラグインをインストールして設定します: ctrlp.vim.
    1. mkdir -p ~/.vim/pack/vendor/start でプラグインフォルダを作成
    2. プラグインをダウンロード: cd ~/.vim/pack/vendor/start; git clone https://github.com/ctrlpvim/ctrlp.vim
      # ダウンロード後、vimrcに以下の設定を追加
      set runtimepath^=~/.vim/pack/vendor/start/ctrlp.vim 
      
    3.  このプラグインの [ドキュメント](https://github.com/ctrlpvim/ctrlp.vim/blob/master/readme.md)を読みます。CtrlPを使用してプロジェクトフォルダ内のファイルを特定し、Vimを開き、Vimコマンドで行を制御して `:CtrlP` を実行します。
    4.  CtrlPをカスタマイズします: [configuration](https://github.com/ctrlpvim/ctrlp.vim/blob/master/readme.md#basic-options) をあなたの `~/.vimrc` に追加して、Ctrl-PでCtrlPを開きます。
    
  4. Vim を使用して練習し、あなた自身のマシンで デモを再現します。
  5. 来月は Vim を使用して_すべての_ファイル編集を行います。効率が悪いと感じたり、「もっと良い方法があるはずだ」と思ったときは、検索エンジンに助けを求めてみてください。より良い方法が見つかる可能性が高いです。問題に直面した場合は、私たちの Q&A セッションに参加するか、メールを送ってください。
  6. 他のツールで Vim ショートカットを設定します(上記の操作ガイドを参照)。
  7. あなたの ~/.vimrc をさらにカスタマイズし、より多くのプラグインをインストールします。
    vim-plugを使用してプラグインをインストール:
    1. vim-plug をインストール
     $ curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
    
    1. ~/.vimrc を変更
     call plug#begin()
     Plug 'preservim/NERDTree' # インストールするプラグイン NERDTree
     Plug 'wikitopian/hardmode'  # hardmodeをインストール
     ..... # その他のプラグイン
     call plug#end()
    
    1. Vim コマンドラインで :PlugInstall を実行
  8. (上級)Vim マクロを使用して XML を JSON に変換します (例ファイル)。最初は完全に自分でやってみてくださいが、行き詰まったときは上記のマクロセクションを確認してください。
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。