Enviar pesquisa
Carregar
Vimとctagsでコードリーディング 公開用
•
10 gostaram
•
12,313 visualizações
Kenta Kase
Seguir
社内の勉強会LTで発表したスライド。 VimとctagsでCPANモジュールのコードを読む話です
Leia menos
Leia mais
Software
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 16
Baixar agora
Baixar para ler offline
Recomendados
Phpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみた
Akira Kaneda
とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門
とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門
infinite_loop
OSS Study#19_LT
OSS Study#19_LT
NaoY-2501
Frank-afcproxy
Frank-afcproxy
Toshiyuki Terashita
Webフレームワークパネル(Django) at PyConJP 2012
Webフレームワークパネル(Django) at PyConJP 2012
makoto tsuyuki
Tortoise gitで日本語ファイル名を使うときのgitの選択について
Tortoise gitで日本語ファイル名を使うときのgitの選択について
Kiyoshi SATOH
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
Shuyo Nakatani
今時のバンド
今時のバンド
Ryu Seino
Recomendados
Phpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみた
Akira Kaneda
とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門
とりあえずこれだけ知っていればお仕事ができる(であろう)gitガチ入門
infinite_loop
OSS Study#19_LT
OSS Study#19_LT
NaoY-2501
Frank-afcproxy
Frank-afcproxy
Toshiyuki Terashita
Webフレームワークパネル(Django) at PyConJP 2012
Webフレームワークパネル(Django) at PyConJP 2012
makoto tsuyuki
Tortoise gitで日本語ファイル名を使うときのgitの選択について
Tortoise gitで日本語ファイル名を使うときのgitの選択について
Kiyoshi SATOH
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
Shuyo Nakatani
今時のバンド
今時のバンド
Ryu Seino
ニコニコ生放送のタイムシフトを無料で保存する方法
ニコニコ生放送のタイムシフトを無料で保存する方法
tani-page
ニコニコ生放送のタイムシフトを無料で保存する方法
ニコニコ生放送のタイムシフトを無料で保存する方法
tani-page
Pynyumon03 LT
Pynyumon03 LT
drillan
Hubotで遊ぶ
Hubotで遊ぶ
treby
F*言語ワークショップ
F*言語ワークショップ
TakuKitamura1
Trend Micro CTF Asia Pacific & Japan -defensive100-
Trend Micro CTF Asia Pacific & Japan -defensive100-
boropon
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
sairoutine
SECCON2014 crypt200
SECCON2014 crypt200
boropon
オープンソースカンファレンス名古屋「高蔵寺SE勉強会」
オープンソースカンファレンス名古屋「高蔵寺SE勉強会」
mick
プロ生ちゃんbotを作ろう!
プロ生ちゃんbotを作ろう!
treby
Pythonで書くじゃんね!
Pythonで書くじゃんね!
Kiminori Kato
Goとtest coverage
Goとtest coverage
nakaji-s
Stapy#22 LT
Stapy#22 LT
NaoY-2501
libpgenでパケット操作
libpgenでパケット操作
slankdev
俺とDockerとtDiaryとkubernetes
俺とDockerとtDiaryとkubernetes
Masayuki KaToH
PyLadies Tokyo 二周年記念パーティ LT
PyLadies Tokyo 二周年記念パーティ LT
Tetsuya Morimoto
仕事でも Groovy を使おう!
仕事でも Groovy を使おう!
Oda Shinsuke
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
civic Sasaki
cs-11. Python の条件分岐と繰り返し,ステップ実行
cs-11. Python の条件分岐と繰り返し,ステップ実行
kunihikokaneko1
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
Katsuhiro Morishita
KMC Font Project 3 - FontForgeで欧文書体製作
KMC Font Project 3 - FontForgeで欧文書体製作
k maztani
20130824 Lightweight Language "Go" @LL matsuri
20130824 Lightweight Language "Go" @LL matsuri
Yoshifumi Yamaguchi
Mais conteúdo relacionado
Mais procurados
ニコニコ生放送のタイムシフトを無料で保存する方法
ニコニコ生放送のタイムシフトを無料で保存する方法
tani-page
ニコニコ生放送のタイムシフトを無料で保存する方法
ニコニコ生放送のタイムシフトを無料で保存する方法
tani-page
Pynyumon03 LT
Pynyumon03 LT
drillan
Hubotで遊ぶ
Hubotで遊ぶ
treby
F*言語ワークショップ
F*言語ワークショップ
TakuKitamura1
Trend Micro CTF Asia Pacific & Japan -defensive100-
Trend Micro CTF Asia Pacific & Japan -defensive100-
boropon
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
sairoutine
SECCON2014 crypt200
SECCON2014 crypt200
boropon
オープンソースカンファレンス名古屋「高蔵寺SE勉強会」
オープンソースカンファレンス名古屋「高蔵寺SE勉強会」
mick
プロ生ちゃんbotを作ろう!
プロ生ちゃんbotを作ろう!
treby
Pythonで書くじゃんね!
Pythonで書くじゃんね!
Kiminori Kato
Goとtest coverage
Goとtest coverage
nakaji-s
Stapy#22 LT
Stapy#22 LT
NaoY-2501
libpgenでパケット操作
libpgenでパケット操作
slankdev
俺とDockerとtDiaryとkubernetes
俺とDockerとtDiaryとkubernetes
Masayuki KaToH
PyLadies Tokyo 二周年記念パーティ LT
PyLadies Tokyo 二周年記念パーティ LT
Tetsuya Morimoto
仕事でも Groovy を使おう!
仕事でも Groovy を使おう!
Oda Shinsuke
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
civic Sasaki
cs-11. Python の条件分岐と繰り返し,ステップ実行
cs-11. Python の条件分岐と繰り返し,ステップ実行
kunihikokaneko1
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
Katsuhiro Morishita
Mais procurados
(20)
ニコニコ生放送のタイムシフトを無料で保存する方法
ニコニコ生放送のタイムシフトを無料で保存する方法
ニコニコ生放送のタイムシフトを無料で保存する方法
ニコニコ生放送のタイムシフトを無料で保存する方法
Pynyumon03 LT
Pynyumon03 LT
Hubotで遊ぶ
Hubotで遊ぶ
F*言語ワークショップ
F*言語ワークショップ
Trend Micro CTF Asia Pacific & Japan -defensive100-
Trend Micro CTF Asia Pacific & Japan -defensive100-
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
SECCON2014 crypt200
SECCON2014 crypt200
オープンソースカンファレンス名古屋「高蔵寺SE勉強会」
オープンソースカンファレンス名古屋「高蔵寺SE勉強会」
プロ生ちゃんbotを作ろう!
プロ生ちゃんbotを作ろう!
Pythonで書くじゃんね!
Pythonで書くじゃんね!
Goとtest coverage
Goとtest coverage
Stapy#22 LT
Stapy#22 LT
libpgenでパケット操作
libpgenでパケット操作
俺とDockerとtDiaryとkubernetes
俺とDockerとtDiaryとkubernetes
PyLadies Tokyo 二周年記念パーティ LT
PyLadies Tokyo 二周年記念パーティ LT
仕事でも Groovy を使おう!
仕事でも Groovy を使おう!
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
cs-11. Python の条件分岐と繰り返し,ステップ実行
cs-11. Python の条件分岐と繰り返し,ステップ実行
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
Semelhante a Vimとctagsでコードリーディング 公開用
KMC Font Project 3 - FontForgeで欧文書体製作
KMC Font Project 3 - FontForgeで欧文書体製作
k maztani
20130824 Lightweight Language "Go" @LL matsuri
20130824 Lightweight Language "Go" @LL matsuri
Yoshifumi Yamaguchi
Windowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
Kenji NAKAGAKI
ML system design_pattern
ML system design_pattern
yusuke shibui
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクト
Tetsuya Morimoto
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013
DQNEO
Python & PyConJP 2014 Report
Python & PyConJP 2014 Report
gree_tech
211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する
Takuya Nishimoto
Lombok ハンズオン
Lombok ハンズオン
Hiroto Yamakawa
Django から各種チャットツールに通知するライブラリを作った話
Django から各種チャットツールに通知するライブラリを作った話
Yusuke Miyazaki
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
Fumihito Yokoyama
CPythonを読もう
CPythonを読もう
Akira Nonaka
TwYM
TwYM
Kuniaki Igarashi
今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋
Takuya Ueda
appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1
Go Sueyoshi (a.k.a sue445)
俺と otoya
俺と otoya
Masayuki KaToH
Ll tiger clojure
Ll tiger clojure
Toshiaki Maki
Django で始める PyCharm 入門
Django で始める PyCharm 入門
kashew_nuts
Koi::Bana〜恋に落ちたエンジニア〜
Koi::Bana〜恋に落ちたエンジニア〜
Munenori Sugimura
Emscriptenと不思議のダンジョン
Emscriptenと不思議のダンジョン
兎 伊藤
Semelhante a Vimとctagsでコードリーディング 公開用
(20)
KMC Font Project 3 - FontForgeで欧文書体製作
KMC Font Project 3 - FontForgeで欧文書体製作
20130824 Lightweight Language "Go" @LL matsuri
20130824 Lightweight Language "Go" @LL matsuri
Windowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
ML system design_pattern
ML system design_pattern
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクト
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013
Python & PyConJP 2014 Report
Python & PyConJP 2014 Report
211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する
Lombok ハンズオン
Lombok ハンズオン
Django から各種チャットツールに通知するライブラリを作った話
Django から各種チャットツールに通知するライブラリを作った話
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
CPythonを読もう
CPythonを読もう
TwYM
TwYM
今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋
appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1
俺と otoya
俺と otoya
Ll tiger clojure
Ll tiger clojure
Django で始める PyCharm 入門
Django で始める PyCharm 入門
Koi::Bana〜恋に落ちたエンジニア〜
Koi::Bana〜恋に落ちたエンジニア〜
Emscriptenと不思議のダンジョン
Emscriptenと不思議のダンジョン
Vimとctagsでコードリーディング 公開用
1.
2014/05 Vimとctagsでコードリーディング 勉強会LT
2.
自己紹介 ✤ @Kesin11 ✤ 大学:豊橋技術科学大学(愛知県) ✤
研究:自然言語処理/音声言語処理 ✤ 言語:Python ✤ 近未来予想 ✤ 音声認識は実用的になる ✤ YouTubeでは講演で話されている情報を直接検索することが可能になる
3.
コードリーディングをするときの悩み ✤ ある場所で呼ばれている関数やクラスが何をしているか 確認したい ✤ いちいちモジュールのファイルを開くのがめんどくさい ✤
CPANモジュールはだいたい階層が深くなる ✤ EclipseのF3みたいな定義元にジャンプする機能無い の?
4.
それ、Vimならctagsを使えば プラグインなくてもできるよ!
5.
ctags ✤ 関数の定義場所などを記録したタグファイルを生成してくれる ✤ インストール ✤
CentOS ✤ yum ctags ✤ Mac ✤ brew ctags ✤ (OSX標準のctagsはBSD系なので使えないオプションがある)
6.
ctags 使い方 ✤ プロジェクトのルートディレクトリ上で $
ctags -R ✤ 再帰的に全てのソースを解析してtagsファイルを生成して くれる ✤ PerlだとCartonでモジュールを管理するので簡単
7.
Vimでの操作 ✤ :set tags=./tags ✤
デフォルトでカレントディレクトリのtagsを読むので通常は不要 ✤ ジャンプ: <Ctrl + ]> ✤ 戻る: <Ctrl + t> ✤ 複数の候補から選択ジャンプ: g → <Ctrl + ]> ✤ ウィンドウ分割してジャンプ: <Ctrl + w> → <Ctrl + ]>
8.
デモ ✤ cpanm ̶look
SQL::Maker ✤ ctags -R ✤ vim ✤ Perlでの関数ジャンプ、モジュールジャンプ
9.
ここからtips
10.
便利なctagsオプション ✤ タグを出力するディレクトリの指定、tags以外の名前に変更 ✤ ctags
-f (今回はパス) ✤ 追記でタグを生成 ✤ ctags -a ✤ タグを生成する言語を指定 ✤ ctags ̶languages=Perl,JavaScript ✤ 対応している言語は--list-languagesで確認できる
11.
tagsファイル自動生成 ✤ プラグインを使う(使ったこと無いけど多分何かある) ✤ Gitのフックを使ってコミット時に自動生成 ✤
$ vim .git/hooks/post-commit ←(chmod +xで実行権限を忘れずに) ✤ $ cd `git rev-parse ̶show-toplevel` ← gitで管理してるトップ ディレクトリに移動 ✤ $ ctags -R local ← catronでインストールしたモジュールでtagsファ イルを作り直し ✤ $ ctags -a -R lib ← 自分のAmon2のWebアプリをtagsに追記
12.
ジャンプの代わりに垂直分割して開く ✤ 標準機能にはないが.vimrcに以下のコマンドを書くと 可能 ✤ map
v<C-]> :vsp <CR>:exec("tag .expand("<cword>"))<CR> ✤ 上の例だとv → Ctrl + ]で垂直分割して開く
13.
標準ライブラリにもジャンプしたい ✤ perldoc -l
CGIなどで標準ライブラリの場所を調べて ctags
14.
デモ ✤ ctags -a
-R 標準ライブラリへのパス ✤ vim
15.
Vim使ってないけど ✤ EmacsやSublime Textでもctagsは使えるらしい ✤
他のエディタ界隈は全く知らないので、実際は何を使っ てるのかツッコミお待ちしています
16.
参考 ✤ 実践Vim(書籍) ✤ ctagsを使ってVimでCode
Readingを加速する ✤ http://labs.timedia.co.jp/2010/12/codereading-with-ctags-on-vim.html ✤ ctagsをちゃんと使う ✤ http://qiita.com/soramugi/items/7014c866b705e2cd0b95 ✤ ctagsと連携するように環境を構築する ✤ http://qiita.com/soramugi/items/f918020c2b3f48c93bf3
Baixar agora