基本操作#
命令行模式#
: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#
- 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 に変換します (例ファイル)。最初は完全に自分でやってみてくださいが、行き詰まったときは上記のマクロセクションを確認してください。