Vim

vimのerrorformat

errorformatについて(入門編) – Qiita main.go:9:14:warning: error return value not checked (pi not declared by package math) (errcheck) こういうのはこう。 %f:%l:%c:%t%*[^:]: %m,%-G%.%#

EclipseでAndroid開発

1.0が出たのでAndroid Studioの方が良いかと。 開発環境構築 ADTバンドル版Android SDK Androidアプリケーション開発環境の構築(ADTバンドル版SDK編) – Yahoo!知恵袋を参考にして環境構築してみた。IDEはEclipse。 Java SE Downloadsから(リンク先ではJava SE 6になっているけど)最新版のJava SEをダウンロードする Android SDK | Android DevelopersからEclipseが同梱されたAndroid SDKのダウンロードする 日本語化しない場合は以下はしなくて良い。Pleiades – Eclipse プラグイン日本語化プラグイン | MergeDoc ProjectからAll in Oneではなく、プラグインのダウンロードする ダウンロードしたら、Java SEをインストールする。 Android SDKを解凍する。 Pleiadesを解凍し、pluginsとfeaturesのフォルダををAndroid SDKのフォルダのeclipseフォルダに移動させて、上書きする。 UTF-8にするために、eclipse.iniの最後に -javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar=default.splash -Dfile.encoding=utf-8 を加える。=default.splashをつけると、Eclipse起動時に出るロゴがAndroid Developer Toolsのものになる。 Eclipse Marketplaceを使ってインストール Eclipseをインストールして、「Help」にあるEclipse Marketplaceをクリック。androidで検索して「Android Development Tool for Eclipseをインストールする。 古いAndroid SDKとADTのインストール 本家からはリンクが無くなってしまうが、以下にリンク先が書いてあるので、ここからAndroid SDKとADTをもってくる Android 旧バージョンで開発環境を構築する 【Android TIPS】 | [email protected] [email protected][email protected][email protected]。 Eclipseの設定 基本設定 Using Eclipse | Android DevelopersのIncrease Eclipse’s Memory Settingsに従い、eclipse.

vimでfoldmethod=indentとするとインデントレベルが同じものが折りたたまれるが、インデントが深くなる直前のものを見出しとして折りたたむ

例えば、YAML フォーマット (1_4) – SymfonyにあるYAML “symfony 1.0”: end\_of\_maintenance: 2010-01-01 is_stable: true release_manager: “Gregoire Hubert” description: > This stable version is the right choice for projects that need to be maintained for a long period of time. latest_beta: ~ latest_minor: 1.0.20 supported_orms: [Propel] archives: { source: [zip, tgz], sandbox: [zip, tgz] } “symfony 1.2”: end\_of\_maintenance: 2008-11-01 is_stable: true release_manager: ‘Fabian Lange’ description: > This stable version is the right choice if you start a new project today.

リモートサーバからクリップボードコピー&ブラウザを開く

ssh接続したリモートサーバの出力を手元Macのクリップボードに送る – Glide Note – グライドノートやssh先screenのペーストバッファをクリップボードに貼り付ける – Keep It Simple, StupidでRemoteForwardを使って、リモートのテキストをローカルに送って、クリップボードにコピーする方法が紹介されているが、リモートのURLをブラウザで開きたいことがよくあるので、それもできるようにしてみた。 tmsanrinsha/remote2local Macでの話だけど、pbcopyの部分や、サーバを立ち上げるために使っているLaunchAgentsの部分を変更すれば、windowsでもいけるはず。 仕組み ローカルにPHPのビルトインサーバを使って、2224ポートでサーバを立ち上げる。(2224ポートは参照先に従った) サーバにapacheを使うとpbcopyが権限などの理由?でうまく行かなかったので、PHPのビルトインサーバをLaunchAgentsで立ち上げることにした。 次にRemoteForwardを使って、リモートサーバにsshする。 $ ssh -R 2224:127.0.0.1:2224 remote.com こうすると、リモートサーバの2224ポート(前の2224)への接続がローカルの2224ポート(後ろの2224)につながる。 リモート上で自分自身に向かって $ curl -n -d &#8220;url=http://example.com&#8221; &#8220;http://localhost:2224/browser&#8221; などのリクエストを送る。-nはBasic認証。 するとローカルサーバにリクエストが来るので、ローカル側でexample.comをブラウザで立ち上げる処理を書いておく。 pbcopyの場合も同じような感じ。 使い方 git cloneする。 Library/LaunchAgents/rfrouter.plistというファイルを~/Library/LaunchAgents/に絶対パスでシンボリックリンクを貼る。 ~/src/github.com/tmsanrinsha/remote2localにgit cloneした場合はこんな感じ。 ln -s ~/src/github.com/tmsanrinsha/remote2local/router.php ~/Library/LaunchAgents launchctl load ~/Library/LaunchAgents/rfrouter.plistでサーバを立ち上げる。次回からはログイン時に自動的に立ち上がるようになる。 止めたい場合はlanchctl unloadする。設定を変更した時はlanchctl unloadしてからlanchctl loadする。 gitのルートディレクトリに移動して、Basic認証用のファイルを作る $ htpasswd -mc .htpasswd <username> $ chmod 600 .htpasswd -mは暗号化にMD5を使うオプション(version 2.2.18からはこれがデフォルト)。-cは新規にファイルを作るときのオプション。(htpasswd – Manage user files for basic authentication – Apache HTTP Server Version 2.

GitのhookでCtagsを実行する

Ctagsを使って、クラス名や関数名のインデックスを記述したtagsファイルを作っておくと、vimでキーワード上にカーソルをおいて、を打つと、そのキーワードが定義された場所に飛んでくれて便利。 しかし、新たにキーワードが増えるたびにctagsを手動で実行するは面倒なのでGitのhookを使うことにする。 また、複数のプロジェクトがあるとき、各プロジェクトごとにtagsファイルを分けておくと、余計な候補が出なくてよいが、うまくやらないとプロジェクトを変えるたびに:set tagsでtagsファイルの指定を変更なくてはならないし、tagsファイルをGitのディレクトリ以下に置くと、.gitignoreで無視してやらなくてはならなかったりするので、その辺を解決させる。 まぁ、vimプラグインで有名なtpopeのtbaggery – Effortless Ctags with Git設定をほぼ訳した感じで、Vim – ctagsと連携するように環境を構築する – Qiitaでかなりまとめられている話しであるが…。 hookをつくる まず、gitのバージョンが1.7.1以上であれは、git initやcloneした時に、templatedirで指定したディレクトリ以下のファイルを.git以下にコピーしてくれるのでそれを作る。 git config --global init.templatedir '~/.git_template' mkdir -p ~/.git_template/hooks 次にctagsを実行するシェルスクリプトを~/.git_template/hooks/ctagsというファイル名で作る。 #!/usr/bin/env bash set -e PATH="$HOME/local/bin:/usr/local/bin:$PATH" cd "$(dirname "${BASH_SOURCE:-$0}")"; cd ../../ trap "rm -f .git/tags.$$" EXIT ctags --tag-relative -R -f .git/tags.$$ --exclude=.git mv .git/tags.$$ .git/tags $PATHはお好みで。 cdの部分で、gitのルートディレクトリに移動している( bash/zshでsourceされたスクリプト内で、ファイル自身の絶対パスをとるシンプルな記法 – Qiita)。hookで使われる場合は実行ディレクトリはgitのルートディレクトリなので必要ないが、それ以外でも実行したい場合に必要。 trapの部分は、このシェルスクリプトが終了時したときにtags.$$という一時ファイルを消すという意味。 $$はこのシェルスクリプトのPID。同時にシェルスクリプトが実行された時のことを考慮してる? 5行目でctagsを実行している。 –tag-relativeは生成するtagsファイルに記すパスをtagsファイルからの相対パスにするオプション。これをつけないと、ctagsを実行したディレクトリからの相対パスになってしまい、うまく扱えなくなる。ちなみにこのオプションを使う代わりにctagsの引数に` pwd`をつけるとtagsファイル内のパスが絶対パスになり、tagsファイルを移動させても、問題がなくなる。 -Rはディレクトリ以下から再帰的にインデックスを作るオプション -fは作るtagsファイルの名前の指定。指定しないとtagsというファイル名になる –exclude=.gitは.gitディレクトリ以下のファイルをインデックスの対象外にするオプション。 最後に一時ファイルを.git/tagsにリネームしている。.git以下にtagsファイルを置くことで.gitignoreで無視する手間を省いている。 gitディレクトリ以下だけでなく、他のディレクトリのファイルのインデックスを加えたいなら、このシェルスクリプトに-a(–apend=yes)のオプションをつけておき、さらに手動で ctags --tags-relative -aR -f <gitディレクトリ>/.

rmtrashだとごみ箱から戻せないのでmv2trashを使うことにした

rmtrashは単に~/.Trashにmvしているだけのようで、ゴミ箱のコンテキストメニューに「戻る」が出ない。 そこで小飼弾氏が作った mv2trashを使うことにした。 404 Blog Not Found:OSX – mv2trashというスクリプト書いた こちらを使うとAppleScriptからFinderでゴミ箱に移動しているので、コンテキストメニューに「戻る」が出るし、Finderでcmd+zして戻すこともできる。 これをrmtrashにリネームして、 $ curl -L https://raw.githubusercontent.com/dankogai/osx-mv2trash/master/bin/mv2trash > ~/bin/rmtrash $ chmod a+x ~/bin/rmtrash エイリアスを設定する。 alias rm=rmtrash rmtrashにリネームしているのは、vimfilerやunite.vimでは、rmtrash(Mac)やtrashcli(Linux)といったコマンドがあると、ファイル・ディレクトリを削除するときにそれらを使うので(:h vimfiler)。 ちなみにunite.vimでファイルを削除するには call unite#custom#alias('file', 'delete', 'vimfiler__delete') と設定しておく。これでdで削除できるようになる(:h unite.vim)

GUIのMacVimでsudoを使う

GUIのMacVimでsudoを使おうとすると sudo: no tty present and no askpass program specified と出てきて、sudoに失敗する。ググってみるとsudo visudoして Defaults visiblepw を追記すると良いということがわかるので追記して実行してみると :!sudo ls みたいのはできるけど、以下のようなものはパスワード入力する隙を与えられず失敗する。 :w !sudo tee % Password:Sorry, try again. Password:Sorry, try again. Password:Sorry, try again. sudo: 3 incorrect password attempts そこでaskpassを使う。 Kaoriya版MacVimなら/Applications/MacVim.app/Contents/MacOS/macvim-askpassというシェルスクリプトが入っている。 .gvimrcに以下のような設定を書く。 if has('gui_macvim') let $SUDO_ASKPASS="/Applications/MacVim.app/Contents/MacOS/macvim-askpass" let $DISPLAY=":0" endif そして、またもや失敗する。これはこのスクリプトが書かれた当時のダイアログの戻り値は text returned:<入力値>, button returned:OK みたい感じだったんだろうけど、現在はtext returnedとbutton returenedの順番が逆になっていて、sedして、<入力値>を取得しているところで、失敗しているため。 修正プルリクった(fix bug of macvim-askpass by tmsanrinsha · Pull Request #1 · splhack/macvim)けど、

YAMLを書くときのVimの設定

YAMLが長くなると、どこにいるかわからなくなるので設定した。 折り畳み嫌いの男が一夜でFolding freakにまでなった話 – LeafCage備忘録 折り畳み嫌いの男が一夜でFolding freakにまでなった話2 – cafegale リンク先のfoldCCというプラグインを使うと、折りたたみの表示が改善され、折りたたまれた部分のインデントがわかりやすくなる。 また、:echo foldC#navi()をやると、カーソル位置の折りたたみの階層を表示してくれる。 例えば、こんな風に設定をする。 set foldtext=foldCC#foldtext() set fillchars=vert:\| let g:foldCCtext_head = '' let g:foldCCtext_tail = 'printf(" %4d lines Lv%-2d", v:foldend-v:foldstart+1, v:foldlevel)' nnoremap <Leader><C-g> :echo foldCC#navi()<CR> 上の部分が折りたたみの表示の設定部分で、下がカーソル位置の折り畳みの階層表示のキーマッピング。 あとは、yamlのfoldingの設定。 tmsanrinsha/yaml.vim オリジナルのコードだと、yamlのシンタックスハイライトが何も効かなくなってしまったので、やっつけだけど修正した。 インストールして、YAMLファイル開いたらfoldmethodをsyntaxにするように設定すればおk。 augroup MyVimrc autocmd! augroup END autocmd MyVimrc FileType yaml setlocal foldmethod=syntax 例えば、YAML – Wikipedia, the free encyclopediaにあるサンプルを使うと --- receipt: Oz-Ware Purchase Invoice date: 2012-08-06 customer: given: Dorothy family: Gale items: - part_no: A4786 descrip: Water Bucket (Filled) price: 1.

Vimでwordpressに投稿する

VimRepressというvimプラグインを使う。 インストール neobundleを使ってvimプラグインをインストールする。 本家のbitbucketリポジトリ(pentie / vimrepress — Bitbucket)からインストールしたい場合はmercurialが必要。macだと $ brew install mercurial でインストールできる。 NeoBundleLazy 'https://bitbucket.org/pentie/vimrepress', { 'autoload' : { 'commands' : [ 'BlogList', 'BlogNew', 'BlogSave', 'BlogPreview' ]} } " markdownで各人はシンタックスファイルも。いろいろあるのでどれがいいかわらない NeoBundle 'tpope/vim-markdown' fork版のsousu/VimRepress · GitHub だと、投稿前の原稿を保存できる。 設定 ~/.vimrepressに [Blog0] blog_url = http://a-blog.com/ username = admin password = 123456 みたいな感じに書く。passwordは設定せずに毎回入力することもできる。blog_urlはxmlrpc.phpがあるパスに設定する。 [GitでWordPressにPostしたいと思ったけど結局VimRepress導入した « haya14busa]3 にも書いてあるように、EditFomat: markdownにすると、markdownがvimrepressによってHTMLに変換され投稿されるけどそうせずに、EditFomat: HTMLにして変換せずに投稿、WordpressのプラグインMarkdown on save Improvedで変換するようにした。 EditFormat: markdownにして変換したい場合はmarkdown2をインストールするのと、vimが+pythonでコンパイルされている必要がある。MacVim Kaoriya版だと+python/dynでインストールされているけど、macに標準でインストールされる/usr/bin/pythonの方をつかうらしい。なので、homebrewでインストールするとうまくいかなかった。/usr/bin/easy_installを使う。 $ sudo easy_install markdown2 その辺の話題

Vimの外部コマンド実行でaliasを使う

.bashrcや.zshrcなどにaliasを書いても、その設定はログインシェルやインタラクティブシェルでしか読み込まれないので、vimで :!{cmd} したときは適用されない。 :set shellcmdflag=-ic として、インタラクティブシェルとして起動して、外部コマンドを実行することもできるけど、vimに戻るとき $ fg しなくてならなくて面倒。 常に使いたい設定は、bashなら .bashrcに export BASH_ENV='~/.bashenv' source ~/.bashenv などとしておいて、.bashenvに設定を書く。さらにaliasを展開したい場合は.bashenvに shopt -s expand_aliases と書いておく。 zshの場合は$ZDOTDIR/.zshenv ($ZDOTDIRは指定してない場合は$HOME) に書く。 ただ、そこで書いた設定はbashやzshのシェルスクリプト実行時にも適用されてしまうので、aliasが悪さをしてしまうことがあるかもしれない(zshのシェルスクリプトの心配までしなくていいと思うけど)。 そこで$BASH_ENVの設定はvimrc内で設定( let $BASH_ENV=expand('~/.bashenv') )するようにするとか、~/.vim/.zshenvに設定しておいて、 let $ZDOTDIR=expand('~/.vim') して、シェルスクリプト実行時は読み込まないようにしたほうがいいかもしれない。 参考にしたサイト vimの外部コマンド実行とalias – その他([技術者向] コンピューター) – 教えて!goo $BASH_ENV – メモ帳 zshでログイン・ログアウト時に実行されるファイル – Qiita [キータ] シェルスクリプト – you/uni