SlideShare a Scribd company logo
1 of 70
Download to read offline
(初心者向け)
Vim の機能とか紹介
2020/08/28 バータイム
cohama
私と Vim
❖ 2011年 (新卒入社時) くらいから使ってる
❖ vimrc 1000行超え
❖ プラグイン3つくらい作った
❖ 昔、Nagoya.vim という勉強会もやっていた
❖ この資料は昔の Nagoya.vim での説明資
料に加筆修正したものです。(当時は2013
年)
今日話すこと
❖ Vim の良さ、機能をざっと説明
❖ Vim のカスタマイズについて
❖ 私の Vim
1. Vim とは?
Vim ってなんなの ...
● Vim は高機能なテキストエディタ
○ もしくは環境、VM
● モードを持つ
○ カーソル移動やテキストの編集を行うノーマルモード
○ 文字の入力を行うインサートモード
○ 様々な処理を実行するコマンドラインモード
○ などなど
○ (Wikipedia によると全部で 11 のモードがあるらしい)
Vim ってなんなの ...
● キーボード中心の操作
○ マウスは基本使わない (使うこともできる)
○ ホームポジションから打ちにくいキーも使わない (矢印
キー)
● カスタマイズ可能
○ Vim script というとても味わい深い言語でカスタマイズ
○ プラグインという仕組み
他のエディタに対してどうなの
● 圧倒的なまでの編集効率
○ 豊富なカーソル移動手段
○ オペレータ×モーションの組み合わせによる編集
○ 繰り返し操作
○ キーバインド
● 軽量で高速に動作
○ 自分の (Neo)Vim の起動時間は 56 msec でした
CTRLや他の修飾子の使用は最小限に留めよ、
これらはタイプしにくい。
Vim 公式ヘルプドキュメント develop.txt より
他のエディタに対してどうなの
● ターミナルでも動作する
○ SSH 先や Docker コンテナ内でも使える
○ が、最近 VSCode は上記も普通にできるらしいのでメ
リットと言えない状況か
● h, l, j, k でカーソル移動
● i でインサートモードに入る
● 適当に文字を入力
● <Esc> でノーマルモードに戻る
● :w<CR> で保存
● :q<CR> で終了
今何モードかわからない時はとりあえず、<Esc>を連
打すれば良い。
最低限これだけできれば!
2. 基本的なカーソル移動
カーソル移動(横)
❖ h, l で1文字ずつ移動
❖ w, b, e, ge
➢ 単語(word)単位の移動
※ 単語の定義は ’iskeyword’ オプ
ションで設定
hoge fuga-piyo
wb
hoge fuga-piyo
ge e
カーソル移動(横)
❖ W, E, B, gE
➢ 空白区切り(WORD)の単位の移動
➢ 空白以外の文字の塊が単語(WORD)とみなされます。
カーソル移動(横)
❖ f{char}, F{char}
hoge fuga-piyo hogera
fhFe
faFh
カーソル移動(横)
❖ t{char}, T{char}
➢ f,F と同様。ただしカーソルがひとつ手前に来る
❖ ;
➢ 直前の f,F,t,T を繰り返し
❖ ,
➢ 直前の f,F,t,T を逆方向に繰り返し
カーソル移動(横)
❖ ^
➢ 行の先頭の非空白文字へ移動
❖ 0 (ゼロ)
➢ 行の先頭へ移動
❖ $
➢ 行の最後へ移動
  hoge fuga-piyo hogera
$^
0
カーソル移動(縦)
❖ j, k
➢ 1行上(下)に移動
❖ {, }
➢ 上(下)の空行に移動 (本当はちょっと違う)
カーソル移動(縦)
❖ gg, G
➢ 最初(最後)の行に移動
❖ {count}G
➢ {count}行目に移動 (e.g. 100G: 100 行目に移動)
❖ {count}%
➢ ファイルの{count}%の位置に移動 (e.g. 50%: 半分の
位置)
数字との組み合わせ
コマンドの前に数字を前置すると、その回数分の
繰り返しになる
❖ 3h
➢ 3文字左へ移動
❖ 10j
➢ 10行下へ移動
❖ 2w
➢ 2単語分前方へ移動
3. 基本的な編集
❖ x
➢ 1文字削除 (delete 的なの)
❖ dd
➢ 1行削除
hoge hoe
hoge
fuga
piyo
hoge
piyo
削除
※ 行削除した後カーソルがどこに
移動するかは 'startofline'
オプションの値に依存する
※ Vim の削除は他のエディタにおける「切り取り」に近い。
つまり、削除したテキストをあとで貼り付けられる。
本当の削除には "_d を使う。
削除
❖ dw
➢ 単語を削除
➢ カーソルの位置から次の単語の先頭の一つ前まで削除
❖ d$
➢ 行末まで削除
quick brown fox quick fox
quick brown fox quick bfox
quick brown fox quick  
ヤンク(コピーのこと)、貼り付け
Vim ではいわゆるコピーのことを「ヤンク」といいま
す。
❖ yy
➢ 現在の行をヤンク
❖ yw
➢ 単語をヤンク
❖ y$
➢ 行末までヤンク
❖ p
➢ カーソルの後ろに貼り付け
❖ P
hoge
piyo
hoge
piyo
piyo
yyp
数字との組み合わせ その2
編集のためのコマンドも数字との組み合わせ可能
❖ 4x
➢ 4文字削除
❖ 3dd
➢ 3行分削除
❖ 2p
➢ 2回分貼り付け
hoge
fuga
hoge
fuga
hoge
fuga
hoge
fuga
2yyj2p
4. オペレータとモーション
復習
❖ w
➢ 1単語分前方へ移動
❖ dw
➢ 1単語削除
❖ yw
➢ 1単語ヤンク
❖ $
➢ 行末まで移動
❖ d$
➢ 行末まで削除
❖ y$
➢ 行末までヤンク
法則性がある!
オペレータとモーション
オペレータコマンドのあとに移動コマンドを入力す
ると、移動した範囲のテキストを処理できる
数字との組み合わせも可能
オペレータコマンドを2回押すと現在行に作用
d w
オペレータ モーション
オペレータコマンド
❖ d
➢ 削除
❖ y
➢ ヤンク
❖ c
➢ 削除した後インサートモードになる
❖ >, <
➢ インデントを増加/減少(行にしか作用しない:行指向)
❖ =
➢ インデントを自動調整(行指向)
組み合わせ例
❖ d2w
➢ 2単語分削除(2dw と同じ)
❖ yfa
➢ 前方の最初の a までヤンク
❖ ct)
➢ 前方の ) のひとつ手前まで削除してインサートモードになる
❖ 3>>
➢ 3行分のインデントを増加(>2j でも同じ)
❖ =G
➢ 最終行までのインデントを自動調整
テキストオブジェクト
オペレータとの組み合わせの時に使用できる特殊
なモーション
特定の範囲をまとめて操作対象にできる
❖ a", i"
➢ ""(double quote) で囲まれた範囲
➢ a" は " も含めるが i" はその中だけ
"Hello, world"
di"
""
テキストオブジェクト
❖ a), i)
➢ () で囲まれた範囲
➢ a) は a( にしても同じ
➢ a は ) 自身も含める
➢ ) をいろんな括弧に変えてみよう (e.g. }, ], >)
fn main() {
let mut a = 0;
println!("{}", a)
}
di}
fn main() {
}
その他のテキストオブジェクト
❖ at, it
➢ HTML とかのタグ (e.g. <p></p>) に囲まれた範囲
❖ aw, iw
➢ 1単語の範囲
❖ aW, iW
➢ 1単語(WORD)の範囲(≒空白区切りの範囲)
❖ ap, ip
➢ 段落の範囲(≒空行の間の範囲)
オペレータとモーションの拡張
オペレータとモーション(テキストオブジェクト含む)は拡張
可能。
たいていはプラグインを入れて拡張する
例)
❖ tpope/vim-commentary
➢ gc で範囲をコメントアウト
❖ kana/vim-textobj-indent
➢ ai, ii でインデントが同じものをテキストオブジェクトとして扱う
オペレータとモーションの拡張の例
commentary と textobj-indent の組み合わせ
def hello():
a = 1
print(a)
gcai
def hello():
# a = 1
# print(a)
5. モード
❖ ノーマルモード
❖ インサートモード
❖ ビジュアルモード
❖ コマンドラインモード
Vim のモード
インサートモード
❖ 文字を入力するためのモード
❖ インサートモードに入るための手段は豊富に用
意されている
❖ インサートモードの入り方
➢ i : カーソルの前の位置
➢ a : カーソルの後ろの位置
➢ o : カーソルの下の行
➢ O : カーソルの上の行
➢ s : 1文字削除してその位置
➢ S : 行削除してその行
インサートモード
hoge ho|ge
hoge hog|e
hoge hoge
|
hoge |
hoge
hoge ho|e
hoge |
インサートモード
❖ インサートモードの入り方(続き)
➢ I : 行の先頭(非空白文字)から挿入
(インデントのスペースやタブより左には行かない)
➢ gI : 本当に行頭から挿入
➢ A : 行末に挿入
➢ gi : 最後に挿入された位置から挿入
➢ c{motion} : ある範囲のテキストを削除して挿入
hoge |hoge
hoge | hoge
hoge hoge|
インサートモード
❖ インサートモードで使える便利なコマンド
➢ <C-t> : 現在行のインデントを増加
➢ <C-d> : 現在行のインデントを減少
➢ <C-w> : カーソル前の単語を削除
(ただし挿入位置で一旦止まる)
➢ <C-u> : 現在行を削除
           (ただし挿入位置で一旦止まる)
➢ <C-r>" : ヤンク(コピー)した文字列を挿入
ビジュアルモード
ブラウザとか他のエディタにあるようなマウスで
ドラッグするとハイライトされるアレのこと
❖ v
➢ ビジュアルモードになる
The quick brown fox
jumps the lazy dog.
vjhh The quick brown fox
jumps the lazy dog.
The quick brown dog.
d
ビジュアルモード
❖ V (大文字)
➢ 行ビジュアルモード
❖ <C-v>
➢ 矩形ビジュアルモード
The quick brown fox
jumps the lazy dog.
V The quick brown fox
jumps the lazy dog.
The quick
brown fox
jumps the
lazy dog.
ビジュアルモード
❖ ビジュアルモードでオペレータコマンドを入力す
ることで、選択範囲に対して処理を実行できる
The quick brown fox
jumps the lazy dog.
d The quick brown dog.
ビジュアルモード
❖ 矩形ビジュアルモードを使った列編集
a = 1;
b = 2;
c = 4;
Ilet<Space><Esc> let a = 1;
let b = 2;
let c = 4;
コマンドラインモード
● :w とか :q とかを実行するためのモード
○ Ex コマンドやコロンコマンドやコマンドラインコマンドと呼
ぶ
● ファイル操作、検索、置換など割りと複雑なこと
を行うためのモード
ファイル操作
❖ :w[rite]
➢ 上書き保存
➢ 省略して :w
❖ :q[uit]
➢ 現在のウィンドウを閉じるコマンド
➢ Vim の終了コマンドではない!
➢ 省略して :q
❖ :sav[eas] {file}
➢ いわゆる名前を付けて保存
➢ :w {file} とは微妙に違う
❖ :e[dit] {file}
➢ ファイルを開く
検索と置換
❖ /{pattern}
➢ {pattern} を前方検索
➢ 移動コマンドとしても使えるので d/hoge といったことも可能
❖ ?{pattern}
➢ / の後方検索バージョン
❖ :%s/{pattern}/{string}/g
➢ ファイル全体から{pattern}を検索して{string}に置換する
➢ 実は区切りは / でなくても良い
■ :%s#/#hoge#g → / を hoge に置換
6. 繰り返し
単発繰り返し
❖ . (ドット)
➢ 直前のコマンドを繰り返す
hoge fuga piyo
dw
fuga piyo
.
piyo
println(msg)
println("hoge fuga")
println(obj.toString())
println()
println("hoge fuga")
println(obj.toString())
di)
println()
println()
println()
j.j.
マクロ
Excel とかにある操作を記録するやつ
❖ q{a-z}
➢ 操作の記録を開始する
➢ マクロの保存場所は a ~ z までの 26 個
❖ q
➢ 記録を終了
❖ @{a-z}
➢ 記録したマクロを再生する
マクロの例
println(msg)
println("hoge fuga")
println(obj.toString())
qa$ println(msg)
println("hoge fuga")
println(obj.toString())
println(msg + "!")
println("hoge fuga")
println(obj.toString())
i+ "!"<Esc>jq
記録開始
記録終了
println(msg + "!")
println("hoge fuga" + "!")
println(obj.toString() + "!")
@a@a
7. ウィンドウ・タブページ
ウィンドウ分割やタブページを使うことで一度に複
数のファイルを開くことができます
複数のファイルを編集したい
ウィンドウ分割
❖ :split {file}
➢ {file} を水平分割で開く
❖ :vsplit {file}
➢ {file} を垂直分割で開く
❖ <C-w>w
➢ 別のウィンドウへカーソルを移動
➢ <C-w><C-w> でも良い
タブページ
※ 単にタブというと <Tab> 文字のことになるので注意
❖ :tabedit {file}
➢ {file} を新しいタブページで開く
❖ gt, :tabnext
➢ 次のタブページヘ
❖ gT, :tabprevious
➢ 前のタブページヘ
8. ヘルプ
ヘルプドキュメント
Vim には最初からかなりの量のヘルプドキュメント
が用意されている。
Vim の基本的な使い方やコマンドの一覧などにつ
いて調べることが可能
ヘルプの使い方
❖ :help
➢ ヘルプドキュメントの目次を開く
❖ :help w
➢ w というコマンドについて調べる
❖ :help ^w
➢ <C-w> というコマンドについて調べる
❖ :help :w
➢ :w という Ex コマンドについて調べる
❖ :help {topic}
➢ {topic} で検索した結果について調べる
初心者におすすめの :help の記事
❖ :help usr_01
➢ ユーザマニュアル
➢ 基本から応用まで Vim について学べる
➢ usr_01 から usr_12 まで順番に読むと良い
➢ 「Vim テクニックバイブル」や「実践 Vim」よりもまずはユーザマニュアル
を読む
❖ :help quickref
➢ いわゆるチートシートのようなもの
❖ :help option-list
➢ Vim のオプションの一覧
➢ vimrc 書くときに便利
9. その他の機能
❖ 置換モード r, R
❖ 数字のインクリメント、デクリメント <C-a> <C-x>
❖ quickfix
❖ grep
❖ diff
❖ シェルとの連携 w !{command}
❖ マーク m
❖ 折りたたみ
❖ 内部ターミナル
❖ 補完
❖ タグジャンプ
説明するには時間が足りない!
9. カスタマイズ
❖ Vim は自分好みにカスタマイズしよう
➢ 行番号表示したいとか
❖ $HOME/.vimrc というファイルに Vim script と
いう言語で設定を記述する
➢ 最近は $HOME/.vim/vimrc で良くなった
➢ neovim の場合は $XDG_CONFIG_HOME/nvim/init.nvim
vimrc と Vim script
❖ Vim script は分からなくてもある程度は大丈夫
❖ 基本は set コマンドでオプションを設定すると良
い
➢ set number " 行番号
➢ set ignorecase " 検索するとき大文字小文字を無視
➢ set cursorline " 現在行の色を変える
※ " 以降はコメント
vimrc の例
❖ Vim 内部で動作するインタプリタ言語
➢ チューリング完全
➢ 変数、ループ、関数、リスト、辞書、ラムダ式...
➢ 例) 特に意味はないが10行目を強制的に hogefuga にし
て勝手に引数で受け取ったファイル名に保存して閉じる関
数
Vim script
function! Hoge(file) abort
normal 10GShogefuga
execute 'w ' . a:file
q
endfunction
❖ 他の人が書いた Vim script を読み込むことでエディタ機
能を拡張 => プラグイン
➢ 実は python でも書けるらしい (昔はすごく不安定だっ
た)
➢ Neovim の場合は msgpack を使った RPC で任意の
言語で記述可能
■ LanguageClient-neovim
● Rust で書かれた LSP クライアントの Neovim
プラグイン
プラグイン
プラグインの読み込み
❖ プラグインマネージャを別途導入する必要あり
➢ junegunn/vim-plug
■ シンプルで簡単
➢ Shougo/dein.vim
■ 高いカスタマイズ性。上級者向け
■ アップデートで互換性がなくなり動かなくなるときがあ
る
❖ GitHub のリポジトリを直接読み込む
➢ 公式のパッケージリポジトリのようなものはない
10. 私の Vim
❖ いろいろ検索
❖ ディレクトリツリー
❖ 自動補完
❖ エラーチェック
❖ 定義ジャンプ
❖ Git 連携
私の Vim
まとめ
Vim すごい
わからないことは :help で調べる
時間があれば :help を読みましょう
おわり

More Related Content

What's hot

Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)MITSUNARI Shigeo
 
core dumpでcode golf
core dumpでcode golfcore dumpでcode golf
core dumpでcode golfNomura Yusuke
 
フィボナッチ数列の作り方
フィボナッチ数列の作り方フィボナッチ数列の作り方
フィボナッチ数列の作り方Tomoya Kawanishi
 
Vim/まごころを君に
Vim/まごころを君にVim/まごころを君に
Vim/まごころを君にKenji Takei
 
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回Tomoya Kawanishi
 
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介MITSUNARI Shigeo
 
第6回鹿児島node.jsの会資料_内村
第6回鹿児島node.jsの会資料_内村第6回鹿児島node.jsの会資料_内村
第6回鹿児島node.jsの会資料_内村Koichi Uchimura
 
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35Keisuke Fukuda
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装MITSUNARI Shigeo
 
エコなWebサーバー
エコなWebサーバーエコなWebサーバー
エコなWebサーバーemasaka
 
Rubyでつくるスレッド
RubyでつくるスレッドRubyでつくるスレッド
RubyでつくるスレッドShugo Maeda
 
Goの文法の実例と解説
Goの文法の実例と解説Goの文法の実例と解説
Goの文法の実例と解説Ryuji Iwata
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPUTakuro Iizuka
 
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!文樹 高橋
 
minami.rb最初で最後のLT大会「Wakayama.rbの紹介」
minami.rb最初で最後のLT大会「Wakayama.rbの紹介」minami.rb最初で最後のLT大会「Wakayama.rbの紹介」
minami.rb最初で最後のLT大会「Wakayama.rbの紹介」三七男 山本
 

What's hot (20)

Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
Xeon PhiとN体計算コーディング x86/x64最適化勉強会6(@k_nitadoriさんの代理アップ)
 
core dumpでcode golf
core dumpでcode golfcore dumpでcode golf
core dumpでcode golf
 
Effective modern-c++#9
Effective modern-c++#9Effective modern-c++#9
Effective modern-c++#9
 
フィボナッチ数列の作り方
フィボナッチ数列の作り方フィボナッチ数列の作り方
フィボナッチ数列の作り方
 
llvm入門
llvm入門llvm入門
llvm入門
 
Vim/まごころを君に
Vim/まごころを君にVim/まごころを君に
Vim/まごころを君に
 
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
 
第6回鹿児島node.jsの会資料_内村
第6回鹿児島node.jsの会資料_内村第6回鹿児島node.jsの会資料_内村
第6回鹿児島node.jsの会資料_内村
 
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 
エコなWebサーバー
エコなWebサーバーエコなWebサーバー
エコなWebサーバー
 
Rubyでつくるスレッド
RubyでつくるスレッドRubyでつくるスレッド
Rubyでつくるスレッド
 
emc++ chapter32
emc++ chapter32emc++ chapter32
emc++ chapter32
 
Unix
UnixUnix
Unix
 
Goの文法の実例と解説
Goの文法の実例と解説Goの文法の実例と解説
Goの文法の実例と解説
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
 
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
 
minami.rb最初で最後のLT大会「Wakayama.rbの紹介」
minami.rb最初で最後のLT大会「Wakayama.rbの紹介」minami.rb最初で最後のLT大会「Wakayama.rbの紹介」
minami.rb最初で最後のLT大会「Wakayama.rbの紹介」
 

Similar to Vim の話

(初心者向け) Vim の機能紹介@nagoya.vim #1
(初心者向け) Vim の機能紹介@nagoya.vim #1(初心者向け) Vim の機能紹介@nagoya.vim #1
(初心者向け) Vim の機能紹介@nagoya.vim #1cohama
 
「Vim初心者によるVim入門@haman29」
「Vim初心者によるVim入門@haman29」「Vim初心者によるVim入門@haman29」
「Vim初心者によるVim入門@haman29」Kyohei Hamada
 
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド規格書で読むC++11のスレッド
規格書で読むC++11のスレッドKohsuke Yuasa
 
とあるFlashの自動生成
とあるFlashの自動生成とあるFlashの自動生成
とあるFlashの自動生成Akineko Shimizu
 
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法博文 斉藤
 
Erlangやってみた
ErlangやってみたErlangやってみた
Erlangやってみたina job
 
JavaScript経験者のためのGo言語入門
JavaScript経験者のためのGo言語入門JavaScript経験者のためのGo言語入門
JavaScript経験者のためのGo言語入門Shohei Arai
 
Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1cohama
 
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1Susisu
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, CodereadingHiro Yoshioka
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„和弘 井之上
 
LastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめようLastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめようShinsuke Sugaya
 
シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)icchy
 
Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011 Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011 Hiro Yoshioka
 
Hello World Python featuring GAE
Hello World Python featuring GAEHello World Python featuring GAE
Hello World Python featuring GAEMaito Kuwahara
 

Similar to Vim の話 (20)

(初心者向け) Vim の機能紹介@nagoya.vim #1
(初心者向け) Vim の機能紹介@nagoya.vim #1(初心者向け) Vim の機能紹介@nagoya.vim #1
(初心者向け) Vim の機能紹介@nagoya.vim #1
 
「Vim初心者によるVim入門@haman29」
「Vim初心者によるVim入門@haman29」「Vim初心者によるVim入門@haman29」
「Vim初心者によるVim入門@haman29」
 
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド規格書で読むC++11のスレッド
規格書で読むC++11のスレッド
 
とあるFlashの自動生成
とあるFlashの自動生成とあるFlashの自動生成
とあるFlashの自動生成
 
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
 
Tokyor23 doradora09
Tokyor23 doradora09Tokyor23 doradora09
Tokyor23 doradora09
 
Erlangやってみた
ErlangやってみたErlangやってみた
Erlangやってみた
 
JavaScript経験者のためのGo言語入門
JavaScript経験者のためのGo言語入門JavaScript経験者のためのGo言語入門
JavaScript経験者のためのGo言語入門
 
Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1
 
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, Codereading
 
Aizu lt tokyo_luxion
Aizu lt tokyo_luxionAizu lt tokyo_luxion
Aizu lt tokyo_luxion
 
Linuxにおける開発環境
Linuxにおける開発環境Linuxにおける開発環境
Linuxにおける開発環境
 
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
 
LastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめようLastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめよう
 
シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)
 
Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011 Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011
 
Webページで学ぶJavaScript2013 第2回
Webページで学ぶJavaScript2013 第2回Webページで学ぶJavaScript2013 第2回
Webページで学ぶJavaScript2013 第2回
 
Hello World Python featuring GAE
Hello World Python featuring GAEHello World Python featuring GAE
Hello World Python featuring GAE
 

More from cohama

2016 04-15 nl-nagoya_vim8
2016 04-15 nl-nagoya_vim82016 04-15 nl-nagoya_vim8
2016 04-15 nl-nagoya_vim8cohama
 
2015 12-04 about_neovim
2015 12-04 about_neovim2015 12-04 about_neovim
2015 12-04 about_neovimcohama
 
2014 12-06 ngk2014-b_2014年のvim
2014 12-06 ngk2014-b_2014年のvim2014 12-06 ngk2014-b_2014年のvim
2014 12-06 ngk2014-b_2014年のvimcohama
 
Auto closing parenthesis @vim conf2014
Auto closing parenthesis @vim conf2014Auto closing parenthesis @vim conf2014
Auto closing parenthesis @vim conf2014cohama
 
How to use git from vim @vim conf2013
How to use git from vim @vim conf2013How to use git from vim @vim conf2013
How to use git from vim @vim conf2013cohama
 
すごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつりすごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつりcohama
 

More from cohama (6)

2016 04-15 nl-nagoya_vim8
2016 04-15 nl-nagoya_vim82016 04-15 nl-nagoya_vim8
2016 04-15 nl-nagoya_vim8
 
2015 12-04 about_neovim
2015 12-04 about_neovim2015 12-04 about_neovim
2015 12-04 about_neovim
 
2014 12-06 ngk2014-b_2014年のvim
2014 12-06 ngk2014-b_2014年のvim2014 12-06 ngk2014-b_2014年のvim
2014 12-06 ngk2014-b_2014年のvim
 
Auto closing parenthesis @vim conf2014
Auto closing parenthesis @vim conf2014Auto closing parenthesis @vim conf2014
Auto closing parenthesis @vim conf2014
 
How to use git from vim @vim conf2013
How to use git from vim @vim conf2013How to use git from vim @vim conf2013
How to use git from vim @vim conf2013
 
すごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつりすごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつり
 

Vim の話