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をカスタマイズします: `~/.vimrc`に [configuration](https://github.com/ctrlpvim/ctrlp.vim/blob/master/readme.md#basic-options)を追加して、Ctrl-PでCtrlPを開きます。
    
  4. Vim を使用して練習し、あなた自身のマシンで デモを再現します。
  5. 来月は Vim を使用して_すべての_ファイル編集を行います。効率が悪いと感じたり、「もっと良い方法があるはず」と感じたときは、検索エンジンに助けを求めてみてください。おそらく、より良い方法があるでしょう。問題が発生した場合は、私たちの質問時間に来るか、メールを送ってください。
  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 に変換します (例ファイル)。最初は完全に自分でやってみてください。ただし、行き詰まった場合は、上記のマクロセクションを確認できます。
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。