理想のエディタへの道!vundle、vim-indent-guidesの導入

私がはじめてエディタらしいエディタに触れたのは半年前、
そのときお世話になっていた講習会でおすすめされた SublimeText 2 でした。

言われるがままにインストールして、使ってみて、
カラーリングのすばらしさに感動した。
見やすいし、かわいいし。なんなのこれ。って。

その後すぐに vim を使うようになったのだけど
そっちでも一番にカラースキームの設定だけはやるくらいうれしかったのさ。

んで、勉強していくうちに、vimの不便さに気づく。
そりゃそうやで、 .vimrc なんにもいじってなかったもん。
設定してない vimは本当に使いにくい。

ということで、ちまちまと .vimrc を書いている今日この頃なのです。

そして今回はずーっと入れたかった vim-indent-guides と プラグインの管理をしてくれる vundle の導入編だよ(続くのかしら)

▼vundle

まず vundle を入れてみた。
vundleを簡単に説明すると、
プラグインのインストールやアップデートが
簡単にしかも一括でできる優秀なプラグインのこと!かな!
gmarik/vundle · GitHub

1 git clone

github から vundle を落としてくる。

git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

2 .vimrc を編集

次に、設定を書いてみる。
こちらを参考にしましたよっと(ほぼそのまま)
vim のプラグイン管理に Vundle を使う。 | SLUMBERS

" vi との互換性OFF
set nocompatible
" ファイル形式の検出を無効にする
filetype off

" Vundle を初期化
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()

" github にあるプラグイン
" Vundle 自身も Vundle で管理
Bundle 'gmarik/vundle'

" vim-scripts プラグイン

" github にないプラグイン

" ファイル形式検出、プラグイン、インデントを ON
filetype plugin indent on 

ちゃんと保存を忘れずに!


3 プラグインのインストール

vim のコマンドモードにて

:BundleInstall

を入力、エンター!
これで vundle が使えるようになりました♪


4 追加したいプラグインがあったら

1 .vimrcに設定を追記(プラグイン用の設定もあればそれもプラスで)

Bundle 'hogehoge/fugafuga'

2 コマンドモードでインストール

:BundleInstall

でインストールできちゃうのです!便利!
ちなみにプラグインのアップデートは

:BundleInstall! "最後に ! をつけたらプラグインのupdateができる

でおっけー☆


vim-indent-guides

それではお待ちかねのvim-indent-guidesをインストールしちゃいます!
このプラグインは同じ量のインデントを縦のラインでハイライト表示してくれるので
コードがとっても見やすくなるのです!
nathanaelkane/vim-indent-guides · GitHub

1 vundle でインストール(.vimrc を編集&プラグインをインストール)

上記の【追加したいプラグインがあったら】の欄を参考に!
.vimrc に以下を追記

Bundle 'nathanaelkane/vim-indent-guides'

その後、コマンドモードで

:BundleInstall

をうつ!これだけ!
vundleを入れたおかげでインストールがものすごく楽になりました♪


2 設定を .vimrc に追加

vim-indent-guidesのための設定を追加します。
以下、私の設定

set tabstop=4
set shiftwidth=4
set expandtab

" vim立ち上げたときに、自動的にvim-indent-guidesをオンにする
let g:indent_guides_enable_on_vim_startup=1
" ガイドをスタートするインデントの量
let g:indent_guides_start_level=2
" 自動カラーを無効にする
let g:indent_guides_auto_colors=0
" 奇数インデントのカラー
autocmd VimEnter,Colorscheme * :hi IndentGuidesOdd  guibg=#262626 ctermbg=gray
" 偶数インデントのカラー
autocmd VimEnter,Colorscheme * :hi IndentGuidesEven guibg=#3c3c3c ctermbg=darkgray
" ハイライト色の変化の幅
let g:indent_guides_color_change_percent = 30
" ガイドの幅
let g:indent_guides_guide_size = 1


ハイライトの幅を細くしたい場合はタブの設定に注意!

tabstopとshiftwidthは同じ値に設定し、expandtabも有効にする必要があります!(indent_guides_guide_sizeの値はタブで挿入された半角スペースのうち、どれだけをハイライトするかの数を表しているようです)
expandtabをnoexpandtabにしていた人は要注意!
noexpandtabの設定をしていたときに作られたファイルのタブはタブのままで半角スペースに置き換わっていないことがあるようです。

なので、幅が細くならないなと思ったら設定がちゃんとexpandtabになっているかどうかをチェックした後ファイルのタブを削除し、もっかいタブを追加してみてください!多分うまく適用されます!


また、ハイライトの色に困ったときは
色設定のテストをしちゃいましょう!

:so $VIMRUNTIME/syntax/colortest.vim

これで、今自分の vim では
どの名前に実際の表示でどんな色が割り当てられているのか確認できちゃうよ!


これで設定完了♪
長かった!w

zshをホーム下にコンパイルしてみるの巻【追記あり】

普段使っているサーバーのシェルをzshにしてみたのだけど
あれ、なんだか日本語表記がおかしい。
使ってるmacではちゃんと動くのに、
マルチバイト文字を使うとtab補完がバグるぞ。あれ、なんで?
  
これはどうやらzshのバージョンが古いから起こるそうで。
とりあえず調べてみた!

$ zsh --version

やっぱりサーバーのzshが古い!
というわけで、zshを新しくするのです!
  
yum が使える環境なら

$ yum install zsh

で一発OK、問題ないらしいが、しかし。
今回は管理者権限がないので役立たずでした…オウフ
  
というわけで、zshをホームディレクトリに一からコンパイルするのです!おー!
参考にしたのはこのサイト♪
CentOSにzshをインストール - デラエモン、カイハツニッキ
  

1)ダウンロード

まず、最新版をダウンロード
(最新版はここをcheck zsh - Browse /zsh-dev at SourceForge.net
嘘です。最新版はこっちです。5.0.0でした。ZSH - Source download

$ wget http://sourceforge.net/projects/zsh/files/zsh/5.0.0/zsh-5.0.0.tar.gz/download

  

2)解凍

次に、ファイルを解凍

$ tar xvzf zsh-5.0.0.tar.gz

  

3)コンパイル

いよいよコンパイル。緊張。

$ cd zsh-5.0.0
$ ./configure
$ make
$ make install

落としてきたファイルの中に移動するのを忘れずに!不幸を背負うみたいですよ。
んで、あとは打ってひたすら待つのみ。あら簡単!
とか思ってたら make install でエラーががが。
そう甘くはないわけです。
エラーを見てみると「権限がありません」と。
そりゃそうだ、rootになれないんだから。私はなにをしてるんだ。
  
んでググッた結果、このあたりのサイトがヒット!
LPM: Local Package Manager
Vimをコンパイルしたよ - 四角革命前夜
  
なるほど、configureのときにpathも指定しちゃうのね。
私の環境に合わせて書くとこんな感じ(ほとんど一緒)

$ ./configure --prefix=$HOME/local --enable-multibyte --enable-locale
$ make
$ make install
!補足!
--enable-multibyte マルチバイト対応
--enable-locale 多言語対応、なんとなく入れてみた

ふむふむ。
というわけでもっかい configure からやり直し。
  
おっ今度はきれいに通ったぞ♪
  
さあ!これでやっと新しい zsh が使えるぞー!と思ったら。
バージョンを確認したところさっきと同じ古いまま!なぜ!why!
  
そりゃそうやん。パス通ってないし。
  

4)パスを通す

.zshrcの中に書いてあるPATHを configure のときに指定したパスに変更

 export PATH=${HOME}/local/bin:${PATH}

これでおーけー!
${PATH}をコロンの左に書いたりしちゃってすごく苦戦したのだけど
twitterで助けてもらいました♪ありがとー!
  
そしてドキドキのバージョン確認。
ちゃーんと最新のになってましたー!やふー♪
  
  



  
追記:
コードもろもろに不備があったのを修正しましたー(´;ω;`)すみません
  
あとあと!ログインシェルを変更するのを忘れてました!
これしとかないと毎回コマンドでzsh打たないといけなくなっちゃう!めんどい!
  

5)ログインシェルの変更

これを変更するには/etc/shells/に
新しいzshのパスを追加しておかないといけないのですがしかし!
これもroot権限がないとできないのです…ぐぬぬ
  
というわけでとっても荒業ですが、
今使用しているログインシェルの設定ファイル(私の場合bashだったので、.bashrc)に以下を追加

 zsh

場所は一番下にしてみました。
これでログインするたびにzshが呼ばれるようになりました♪めでたしめでたし!
  
が、他にやり方あるのかな…あったらおしえてくださーい!

eclipseいれてみた

androidアプリを開発してみたいなーと思って!
javaを書くならeclipseを使え」と言われたので
eclipse を入れてみましたよっ♪
  
あと「新しいことを始めるのにいらんストレスはなくした方がいい」
ということで、日本語化してみた!
  

パッケージ:Eclipse IDE for Java EE Developers
バージョン:3.7
プラグイン:Pleiades

  
eclipse の最新バージョンは日本語化プラグインが対応していなかったので、
対応の3.7バーションを選択。
  

1)ダウンロード&解凍

[eclipseダウンロード]:Eclipse downloads - mirror selection
[Japan] Yamagata University (http)をクリック
  
[Pleiadesダウンロード]:Eclipse 日本語化 | MergeDoc Project  
Java の Standard All in One (JRE なし)のダウンロードをクリック
  
上の2つのサイトから eclipse と Pleiades をダウンロード&解凍!
eclipse を解凍してできた eclipseファイル を
そのままアプリケーション(/Applications)に移動する。
  

2)dropinsを上書き

Pleiades を解凍してできた pleiadespleiades-e3.7-java_20120225ファイル の中にある
dropinsファイル で eclipseファイル の中の dropinsファイル を上書きする。
  

3)eclipse.iniを変更

eclipseファイル の中にある eclipse.ini (eclipse/eclipse.app/Contents/MacOS/eclipse.ini)と
Pleiadesファイル の中にある eclipse.ini (Pleiades/eclipse.ini)をマージする。
  
私の環境では Pleades の eclipse.ini の最後にあった
javaagent の項目をすこーしいじって追記するだけで大丈夫でした♪
  
変更箇所

//こう書いてあったのを
-javaagent:/dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
  
//こう変更した
-javaagent:/Applications/eclipse/dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

  
これをeclipse側のeclipse.iniに追記し、終わり!
一応、完成品↓

-startup                                                                                         
../../../plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
../../../plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_1.1.101.v20120109-1504
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts
-Xmx512m
-Xdock:icon=../Resources/Eclipse.icns
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts
//これだけ追記した↓
-javaagent:/Applications/eclipse/dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

  
試しに起動してみたらちゃんと日本語化されてうごきましたー!やふー!
  
  
  
参考サイト:
La Thinking Motion. - [mac] Mac OS X LionにEclipseをインストールして日本語化までのメモ
うえちょこ@ぼろぐ» [mac]eclipseインストールとpleiadesで日本語化
  
もっとくわしく手順が書いてあります!
この2つを見ればまず問題なくインストールできるはず(^^♪

switchしすぎ

svn が未だに満足に扱えなくて泣ける(´;ω;`)
  
  
今日の不具合は swith の使いすぎが原因のようで。
  
  
新しい案件を振られたあたしはそれに取り掛かるため、
svn copy して新しいブランチを作ったのです。
そのあと、今まで作業していたブランチから svn switch し、
新しいブランチに切り替えました。が、何かがおかしい。
  
前のブランチで使ってたファイルが新しい方でも見に行ける…?
  
原因がよくわかんなくて何度かブランチを切り替えていたところ、思い出しました。

svn commit していない(svnの管理下にない)ファイルは
svn switch で切り替えても作業コピーに残る

そう、これを忘れていました。見事に作業コピー編集しっぱなし。
すぐにもとのブランチに戻ってとりあえず svn st してみる。
  
…な、なんだこれは…っ
  
一番左に表示される更新されるファイル(項目)の状態みたいなとこに
A + C S(順番忘れた)って書いてある…!

これはどうやら

A : 追加準備中
C : リポジトリと競合
S : ファイルが切り替えられている

  1. : コミット準備されている履歴がある

を示しているようで。
要はぐちゃぐちゃ。あちゃー
  
どうすればいいのかわかんなかったので、同期召喚。(お世話になっております)
とりあえず svn update。ふぬん、なにも変わらない。
  
じゃあと思って該当してるファイルを svn revert して、svn add しなおし、
もう一度 svn st してみたら A だけになった!勝った!
  
該当してるファイル全部それして svn commit !してみたら!
  
……通らない…だと…!?
  
いじめとしか思えない。
リポジトリの方に同名のファイルがあるから追加させないぜっ!てエラーが。
  
そういえばこないだ commit したやん、あたし。
そりゃリポジトリにあるよ。
でも、なら、なんで svn st ででるのが M じゃなくて A なのだ…?
  
多分、一度 commit した後にファイルをいじって、
最終的な commit をせずに
そのファイルをもってないブランチと switch しまくったときに
svn の方でなにかがおかしくなり、管理下から外れてしまった模様。
いじめてたのはあたしの方でした、ごめんなさい。
  
へこたれながらエラーメッセージを見たところ、
「local edit, incoming delete upon switch」とのこと。
スイッチ完了したらこれ消えちゃうよーってことらしい(たぶん)
それは困る。でも解決できない。困り果てた。
  
ここで同期を召喚する。(いつもほんとうにありがとう;;)
「他のディレクトリに作業コピーをチェックアウトし、
そこでファイルを最新のものに更新、commit でFA」とのこと。
やってみる。

mkdir して そこに svn co、最新のファイルに更新してcommit。
で き ま し た ◎
これでリポジトリのファイルはきれいに最新のものに整えられたぜいっ
  
でもでも、これでは終わりません。
あたしは新しいブランチで作業したいのです。
このままじゃ終われない。
  
さらに同期召喚。(ほんとにほんとにありがとう;;;;;;)
ディレクトリを戻し、新しいブランチに svn switch。
こっちではこのエラーもとのファイルはいらなかったので、該当ファイルを svn revert し、削除。
  
これでおしまいヾ(*´∀`*)ノキャッキャ
試しにもとのブランチに戻って svn st してもエラーは出ないし、
新しいブランチで消したファイルもこっちではちゃんと復活してましたーー!

やっとこさ通常運転、よかったよかった!

データ構造

いくつかあるので調べときなーと言われたので。簡単にしらべてみたぬん
  
  
Hash ハッシュ
連想配列のイメージ。キーとバリューをセットで格納し、キーをもとにバリューを取り出す。
  
  
Set セット
データの重複がないことが約束されたデータの集合。要素の順序について決まりがない場合に使う。
  
  
List リスト
リスト内の各要素をポインタによって連結したもの。要素にアクセスする差異、最初からその要素まで順に見ていくため、途中の要素を取り出したい時には不向き。要素は必要なときに作られるため、余分なメモリの確保がない。
参考サイト:ƒAƒ‹ƒSƒŠƒYƒ€‚ƃf[ƒ^\‘¢•Ò@‘æ‚P‚OÍ@üŒ`ƒŠƒXƒg
  
  
Queue キュー 待ち行列
FIFOを採用したデータ構造。データを入れた順に取り出す。
  
FIFO「最初に入ったものが最初に出てくる」データの入出力方式を First In First Out を略して FIFO と呼ぶ
  
  
Stack スタック
LIFOを採用したデータ構造。最後に入れたデータから取り出す。
  
LIFO「最後に入ったものが最初に出てくる」データの入出力方式を Last In First Out を略して LIFO と呼ぶ
  
  
Queue と Stack のJSでの実装方法が書いてあったので、参考にはりはり
参考サイト:JavaScript による一番簡単なスタックとキューの実装方法 - Web/DB プログラミング徹底解説
  
  
ひとえにデータ集合やらデータ構造といっても、そのデータたちをどう扱いたいかによって集め方が違うようだぬん。