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