ctagsを設定して定義元クラス・メソッドへ遷移する方法をメモ
ctagはEclipseなどのIDEにはある定義元へ遷移する機能をvimなどのエディタで使えるようにするためtagを作成するためのもの。
プロジェクト(php,ruby,perl,javaなど)のコードから定義元のtagを作成する。このctagで作成したtagをつかうことで定義元クラス・メソッドへ遷移する機能を使用できるようになる仕組み。
tagは非常に開発で便利なので是非入れたほうが良い
ctagsインストール
Mac(homebrew)の場合:
brew install ctags alias ctags="`brew --prefix`/bin/ctags"
[alias ctags="`brew --prefix`/bin/ctags"]の部分はエイリアスのため、.bashrc,.zshrcなどのシェルに記載でもよい
参考:http://nob-log.info/2012/07/29/ctags-illegal-option/
設定したエイリアスの確認
alias
設定したエイリアスの削除
unalias [エイリアス名]
CentOSの場合:
yum install ctags
Ubuntuの場合:
sudo apt-get install exuberant-ctags
ctagsの設定
$HOME/に.ctagsのドットファイルを作成する
touch .ctags
--append=yes --recurse=yes --php-kinds=cfd --html-kinds=af --java-kinds=cfimp --ruby-kinds=cfm --perl-kinds
–append=yes ➡ tagsが既にあれば上書きではなく追加
–recurse=yes ➡ 配下ディレクトリを再起的にタグ作成するかどうか(-Rと同じ)
–[言語]–kind ➡ なんのタグを作成するかの設定(c=classなど)
参考:http://hp.vector.co.jp/authors/VA025040/ctags/help_j.html
対象言語拡張子の確認
対象言語の拡張子を確認:
ctags --list-maps
結果:
Ant *.build.xml Asm *.asm *.ASM *.s *.S *.A51 *.29[kK] *.[68][68][kKsSxX] *.[xX][68][68] Asp *.asp *.asa Awk *.awk *.gawk *.mawk Basic *.bas *.bi *.bb *.pb BETA *.bet C *.c C++ *.c++ *.cc *.cp *.cpp *.cxx *.h *.h++ *.hh *.hp *.hpp *.hxx C# *.cs Cobol *.cbl *.cob *.CBL *.COB DosBatch *.bat *.cmd Eiffel *.e Erlang *.erl *.ERL *.hrl *.HRL Flex *.as *.mxml Fortran *.f *.for *.ftn *.f77 *.f90 *.f95 HTML *.htm *.html Java *.java JavaScript *.js Lisp *.cl *.clisp *.el *.l *.lisp *.lsp Lua *.lua Make *.mak *.mk [Mm]akefile GNUmakefile MatLab *.m OCaml *.ml *.mli Pascal *.p *.pas Perl *.pl *.pm *.plx *.perl PHP *.php *.php3 *.phtml Python *.py *.pyx *.pxd *.pxi *.scons REXX *.cmd *.rexx *.rx Ruby *.rb *.ruby Scheme *.SCM *.SM *.sch *.scheme *.scm *.sm Sh *.sh *.SH *.bsh *.bash *.ksh *.zsh SLang *.sl SML *.sml *.sig SQL *.sql Tcl *.tcl *.tk *.wish *.itcl Tex *.tex Vera *.vr *.vri *.vrh Verilog *.v VHDL *.vhdl *.vhd Vim *.vim YACC *.y
※言語に拡張子を追加する場合は.ctagsへ–langmapを設定するとできる
tag作成
対象プロジェクトディレクトリ内で実行
ctags
※-Rオプションは不要(.ctagsで–recurse=yesに指定してるため)
ディレクトリ直下にtagsファイルが生成されていればOK
vim-tagsプラグイン導入
プログラミング中にあたらしく追加されたコードからtagを毎回作成するのを自動化してくれるvimプラグイン「vim-tags」を導入
※参考:https://github.com/szw/vim-tags
neobundleを使っている場合:
NeoBundle 'szw/vim-tags'
使い方:
:TagsGenerate
※これでtagを再構築してくれる
vimでの使い方
ショートカット:
定義へ移動 = Ctrl + ]
定義へ移動(複数ある場合にプロンプト表示)= g + Ctrl + ]
履歴戻る = Ctrl + t or Ctrl + 0 or :pop
定義へ移動で常に複数ある可能性を考えてvimrcにキーバインドを変更しておくと良い
nnoremap <C-]> g<C-]>
githubに「pull request」を送れたりするhubコマンドを導入方法をメモ
hubコマンドはGitHub社が公開しており、githubに関する様々な処理をコマンドで実行する事ができるもの。
gitコマンドで既にできることを、シンプルなコマンドで解決したり、gitコマンドではないpull requestなどをコマンドで行う事ができるようになる。
※ 通常はgithubのブラウザからpull requestをする
またhubはgitコマンドを包括しており、hubコマンドでgitコマンドを全て使用することができるようになる。
hubのupstreamリポジトリのreadmeでインストールからコマンドの使い方まで載せているので参考にするとよい。
hubコマンドのリポジトリ:
https://github.com/github/hub
今回はmacでパッケージ管理はhomebrewを使用する
インストール
インストール
brew install --HEAD hub
設定
既存のgitコマンドは全てhubに置き換えられるようになる。
つまりは
git add .
は
hub add .
で、できるようになるが、慣れないためhubコマンドもgitコマンドで使えるようにalias設定をしておく
これはhubのreadmeに記載されている
シェルの設定ファイル:
eval "$(hub alias -s)"
※bashの場合は.bash_profile、zshの場合は、.zprofile
hubの使い方(git clone)
git cloneコマンドについてreadmeより、
git clone $ git clone schacon/ticgit > git clone git://github.com/schacon/ticgit.git $ git clone -p schacon/ticgit > git clone git@github.com:schacon/ticgit.git $ git clone resque > git clone git@github.com/YOUR_USER/resque.git
※gitはalias設定のhubをコールしているため、hubとしても動く
git cloneを行う場合にgithubのリポジトリ指定をなしにしてリポジトリ名のみで取得ができる。またはユーザ名の指定などもできるサンプル
これ以外にも省略できるコマンドはreadme参照
hubコマンドでpull request
git pull-requestコマンドについてreadmeより
# while on a topic branch called "feature": $ git pull-request [ opens text editor to edit title & body for the request ] [ opened pull request on GitHub for "YOUR_USER:feature" ] # explicit title, pull base & head: $ git pull-request -m "Implemented feature X" -b defunkt:master -h mislav:feature
オプションについて
-m : pull requestメッセージ
-b : プルリク先の指定
-h : プルリク元の指定
下記はつまり、メッセージが「Implemented feature X」でmislavのfatureブランチからdefunktのmasterブランチへpull requestのサンプルになる
git pull-request -m "Implemented feature X" -b defunkt:master -h mislav:feature
-mを指定しない場合は、指定しているエディターが起動する(commitと同様)ので指定のフォーマットで記載する
指定フォーマット:
[pull requestタイトル]
[改行]
[pull requestメッセージ]
使える便利コマンド
githubをブラウザで開いてリポジトリを参照するコマンド
git browse
githubをブラウザで開いてdiffを参照するコマンド
git compare
git compareコマンドについてreadmeより
$ git compare refactor > open https://github.com/CURRENT_REPO/compare/refactor $ git compare 1.0..1.1 > open https://github.com/CURRENT_REPO/compare/1.0...1.1 $ git compare -u fix > (https://github.com/CURRENT_REPO/compare/fix) $ git compare other-user patch > open https://github.com/other-user/REPO/compare/patch
EC2のインスタンスにssh接続する手順をメモ
「AWS Management Console」へログインしインスタンスを表示
sshの接続コマンドを取得
表示されているEC2インスタンスを右クリックし「connect」をクリックする
「Connect with a standalone SSH Client」のインスタンスを展開し「Example」へ
「Enter the following command line:」コマンドが表示されている。
sshコマンドをコピーする
ssh -i [pemファイル名] root@[ホスト名/IPアドレス]
[pemファイル名] は秘密鍵でAWSから取得したプライベートキー(.pem)を使用する
ターミナルでssh接続
取得したsshコマンドをそのままターミナルを立ち上げてペーストし実行する。
そのあと( yes/no )? でyesでエンターしログイン完了
※パーミッションエラーになる場合はアクセス権を600にすること(600以外ではだめ。理由不明)
pemはwindowsで抽出したものでもmacで使える。逆も。
いろいろな作業をする場合(インストールなど)はrootである必要があるため
「sudo su -」コマンドでチェンジ
ssh-keygenコマンドで秘密鍵・公開鍵生成メモ
公開鍵・秘密鍵生成
1.ターミナルソフトを立ち上げて「ssh-keygen」実行。
2.Enter file in which to save the key (/Users/[ユーザ名]/.ssh/id_rsa): 保存先ファイル名を指定(デフォルトで良ければEnter)
3.Enter passphrase (empty for no passphrase): 任意のパスフレーズを設定
4.Enter same passphrase again: 上記パスフレーズの確認入力
5.確認:2で生成した場所にファイルが存在するか確認(デフォルトの場合は秘密鍵id_rsa,公開鍵id_rsa.pub)
完了
※fingerprintを後から確認するには「ssh-keygen -lf /Users/[ユーザ名]/.ssh/id_rsa」コマンドで確認可能
サーバに公開鍵設定
1.サーバの.sshを開き上記で生成した公開鍵(デフォルト:id_rsa.pub)の中身をコピー
2.コピーした内容をサーバのauthorized_keysへペースト(最後に改行必要)
ついでにGitHubへ公開鍵登録方法
1.githubへログイン
2.「edit your profile」から「ssh keys」を選択
3.「add ssh key」を押してtitleとkeyを設定
※titleは覚えやすい名前/keyは公開鍵の中の文字列(改行などをいれるのはだめ)
参考:http://git-scm.com/book/ja/Git-%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC-SSH-%E5%85%AC%E9%96%8B%E9%8D%B5%E3%81%AE%E4%BD%9C%E6%88%90
GitHubリポジトリにアップしたときにエラーとなった時の対応法メモ
FuelPHPプロジェクトをGitHubにリポジトリ作ってアップしようとしたらエラーが出たので調べてみた
エラー:fatal: Not a git repository: fuel/core/../../.git/modules/fuel/core
リポジトリが存在しないエラー。全く意味が分からない・・・
まずfuel/core/../../.git/modules/fuel/coreディレクトリを探してみるが.git/modules/の段階でディレクトリが存在しない。普通はあるのかな?新規でcloneしたらいいのかな。不明。
とりあえず呼んでるファイルはどこかを探してみる・・・
grep -r ".git/modules" *
実行結果:
fuel/core/.git:gitdir: ../../.git/modules/fuel/core
fuel/packages/auth/.git:gitdir: ../../../.git/modules/fuel/packages/auth
fuel/packages/email/.git:gitdir: ../../../.git/modules/fuel/packages/email
fuel/packages/oil/.git:gitdir: ../../../.git/modules/fuel/packages/oil
fuel/packages/orm/.git:gitdir: ../../../.git/modules/fuel/packages/orm
fuel/packages/parser/.git:gitdir: ../../../.git/modules/fuel/packages/parser
6ファイル。fuel/packagesを少し弄った気もするのでそれが原因かな?
状況が全くよくわからないからもういいや、めんどくさいから全部ファイル削除・・・
rm -r $(grep -rl "modules/fuel" *)
これで一応エラーを回避してプッシュまで成功。
git使ってる人ならおそらくすぐにわかることなのかもしれないけど、スキル不足で原因、解決策共によくわからない。原因ファイルを消してるだけなので、支障ありそうだけど、とりあえずアップできたからいいや。
gitは後々勉強しよう
coffee-break
Don't write code that useless.
1日5杯はコーヒー、カフェオレ飲みます。狭心症のため安静にします☆松本 雄貴
Kotlinでサービスリリース目指す!
iOSでチャットアプリ作成中。自然言語解析LSIを習得中
Mac / Android・iOS / Rails / Oracle
2017年 Lpic L2取得
2012年 Android技術者資格取得
2010年 OracleMasterGold10g取得
2008年 CCNAQiitaもたまに投稿
https://qiita.com/y-matsumoto東京近郊で常駐開発探してる方はこちらよりご連絡ください
SES企業でパートナー会社を探している企業様はこちらよりご連絡ください
スプリットカメラ iOS / Android
音声認識で聞いた日付から曜日当てアプリ Android
ソーシャルタイマー Android
カテゴリー
- ActiveRecord (2)
- Android (52)
- AndroidStudio (10)
- Ansible (1)
- AWS (1)
- Bash (18)
- Blog (7)
- BootStrap (1)
- CentOS (16)
- Chef (1)
- css (2)
- Eclipse (5)
- error (1)
- Facebook (2)
- Firebase (1)
- FuelPHP (16)
- Git (22)
- GitHub (3)
- Gradle (2)
- GraphAPI (1)
- Grunt (1)
- heroku (2)
- illustrator (1)
- iOS (17)
- Java (4)
- Jenkins (1)
- jQuery (3)
- Kotlin (2)
- Mac (22)
- nginx (1)
- Node.js (3)
- peco (1)
- php (5)
- Python (1)
- Rails (16)
- Ruby (11)
- shell (1)
- SNS (1)
- Swift (2)
- tmux (2)
- Vagrant (6)
- Vim (6)
- windows (2)
- WordPress (3)
- zsh (4)
- フリーランス (1)
- ライブラリ (1)
- 勉強会 (2)
- 宣伝 (1)
- 未分類 (2)
最近の投稿
- [MAC]HighSierraでgitプッシュエラー「Unable to negotiate with xxx.xxx.xxx.xxx port xx: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se fatal: Could not read from remote repository.」
- [iOS]iOS11からFacebook,Twitter連携(シェアなど)廃止の対応方法
- [iOS]速報2017AppleSpecialEventのiOS11、iPhone8など発表内容について
- [iOS][Firebase]The default Firebase app has not yet been configured. Add `[FIRApp configure];
- [iOS]2017年9月リリースのiOS11で開発者が対応するべきこと
- 今人気の現金化サービスCASH(キャッシュ)を使ったレビュー
- [Pandoc][Mac]pandocでmarkdownからwordファイル作成
- [Android]映画サマーウォーズの聞いた日付(誕生日)から曜日当てをアプリ音声認識で簡単に実現
- [Android]起動しているActivityを取得するadb shell コマンド
- [Android][Kotlin]kotlin学習で参考になるサイト一覧
2023年10月 月 火 水 木 金 土 日 « 5月 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 アーカイブ
- 2018年5月
- 2017年9月
- 2017年8月
- 2017年7月
- 2017年6月
- 2017年5月
- 2017年2月
- 2017年1月
- 2016年12月
- 2016年7月
- 2016年6月
- 2016年1月
- 2015年12月
- 2015年11月
- 2015年10月
- 2015年9月
- 2015年8月
- 2015年7月
- 2015年6月
- 2015年5月
- 2015年4月
- 2015年3月
- 2015年2月
- 2015年1月
- 2014年12月
- 2014年11月
- 2014年6月
- 2014年5月
- 2014年4月
- 2014年3月
- 2014年2月
- 2014年1月
- 2013年12月
- 2013年11月
- 2013年9月
- 2013年8月
- 2013年7月
- 2013年6月
- 2013年5月
- 2013年4月
- 2013年3月
- 2013年2月
- 2013年1月
- 2012年12月
- 2012年10月
- 2012年5月
- 2010年6月
エントリ