基本操作#
命令行模式#
:q終了(ウィンドウを閉じる):w保存(書き込み):wq保存して終了:e {ファイル名}編集するファイルを開く:ls開いているバッファを表示:help {タイトル}ヘルプドキュメントを開く:help :w:wコマンドのヘルプドキュメントを開く:help ww移動のヘルプドキュメントを開く
移動 - 多くの場合は通常モード#
- 基本移動:
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 行移動7dw7 単語削除
修飾語#
修飾語を使って「名詞」の意味を変えることができます。修飾語には 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#
- missing-semester
- Anish
- Jon (uses neovim)
- Jose
vim ~/.vimrc
vim /etc/vim/vimrc # debian
拡張 Vim#
一般的に推奨されるプラグイン:
- ctrlp.vim: ファイルのファ uzzy 検索
- ack.vim: コード検索
- nerdtree: ファイルブラウザ
- vim-easymotion: マジック操作
講師たちのオープンソース設定ファイル:
他のプログラムの 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 コマンド / マクロ
Gdd,ggdd最初の行と最後の行を削除- 最後の要素のフォーマットマクロ (レジスタ
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
- 最後の
,を手動で削除し、[と]区切りを追加
追加資料#
vimtutorは Vim インストール時に付属するチュートリアル- Vim Adventures は Vim の使い方を学ぶゲーム
- Vim Tips Wiki
- Vim Advent Calendar には多くの Vim 小技がある
- Vim Golf は Vim のユーザーインターフェースをプログラミング言語として使用する code golf
- Vi/Vim Stack Exchange
- Vim Screencasts
- Practical Vim(書籍)
課題#
- 完成
vimtutor。備考:それは 80x24(80 列、24 行)ターミナルウィンドウで最もよく見えます。 - 提供された vimrcをダウンロードし、
~/.vimrcに保存します。このコメント付きのファイルを通読し(Vim を使用!)、新しい設定で Vim がどのように見え、どのように使用されるかの微妙な違いを観察します。 - プラグインをインストールして設定します: ctrlp.vim.
mkdir -p ~/.vim/pack/vendor/startでプラグインフォルダを作成- プラグインをダウンロード:
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を開きます。 - Vim を使用して練習し、あなた自身のマシンで デモを再現します。
- 来月は Vim を使用して_すべての_ファイル編集を行います。効率が悪いと感じたり、「もっと良い方法があるはずだ」と思ったときは、検索エンジンに助けを求めてみてください。より良い方法が見つかる可能性が高いです。問題に直面した場合は、私たちの Q&A セッションに参加するか、メールを送ってください。
- 他のツールで Vim ショートカットを設定します(上記の操作ガイドを参照)。
- あなたの
~/.vimrcをさらにカスタマイズし、より多くのプラグインをインストールします。
vim-plugを使用してプラグインをインストール:- vim-plug をインストール
$ curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim- ~/.vimrc を変更
call plug#begin() Plug 'preservim/NERDTree' # インストールするプラグイン NERDTree Plug 'wikitopian/hardmode' # hardmodeをインストール ..... # その他のプラグイン call plug#end()- Vim コマンドラインで
:PlugInstallを実行
- (上級)Vim マクロを使用して XML を JSON に変換します (例ファイル)。最初は完全に自分でやってみてくださいが、行き詰まったときは上記のマクロセクションを確認してください。