mabulog

このブログは、mabuの平凡な日常を淡々と描く物です。 過度な期待はしないでください。 あと、部屋は明るくして、 モニターから3メートルは離れて見やがってください。

vim-regexperを作った

追記あり

先日、2つのホットエントリーが話題になり、Vimでそういった機能はないものかと調べて、
無さそうだったため、簡易ではあるがVimでも正規表現の実装結果をサクッと確認できるようにした。

まだ調整中のため、helpなど作っていませんが、
もう少し汎用性を高めてhelp追加したいと思います。
現状、JavaScript正規表現のみ対応している感じです。

ソース

使い方

  • :RegexperExecute <第1引数>

    第1引数へはチェックする正規表現

設定例

動作

regexper.comをforkしてherokuにたてたサイトにリクエストするだけのシンプルなものです。
直リンクするのは良くないだろうから、妥当な落とし所?かなと。

これから

可能であればherokuへリクエス卜せずに済ませたいと思っています。 (g)Vim上で表示するのはJavaScriptとか画像の表示が苦手なVimでは難しそうなので後回しです。

(2014/11/25 12:00 追記)
ヘルプとローカルアプリへの対応完了。

TODO: 各OSでの動作検証 TODO: 複数言語対応

previmの設定を見なおした

Windowsでもprevimを使う機会が出来たので、
これを機にprevimの設定を見なおしました。

previm setting

感想

Windowsのファイルパスについては、previm側で対応しているようですが、
うまく動きませんでした。
そこはopen-browser.vimでいい感じになりました。

VimConf 2014 に参加した

f:id:kazuomabuo:20141109091952p:plain

mixiさんビルです!!
mixiさんはモンス卜で盛り上がっていますが、エンジニアとしては圧倒的にdeploygateに興味がありますね。
mixiさんステッカー&deploygateのステッカー、キーホルダー(σ・∀・)σゲッツ!!

f:id:kazuomabuo:20141109092005j:plain

そして、初VimConf参加!!
sekicocoに登録して、いざ、オープニングから発表開始。
発表資料はこちらにまとめリンクがあります。

Identity of the Vim

@KoRoN (MURAOKA Taro) さん

1つの言語でのみ開発をするのなら、その言語に特化したエディタ/IDEを使えば良く、
Vimマルチプラットフォームでいろいろな言語に触る場合に真価を発揮するというところに、
すごく共感でき、同じような理由で去年からVimを使い始めました。
実際にはかなりIDE感溢れてて自分でメンテナンスできるという事実を知った事が変えた大きな理由ですが...。Web系にいる以上はJavaScriptHTML5RubyCoffeeScriptあたりはいつ書いてもおかしくない状況下だと思うんだよなぁ。

PM2

@ ujihisa さん

PM2のプロセス管理を良さ気にしてくるplugin、Vimスクリプトバリバリ書く方には便利なのかな〜といった印象を受けました。そこまで深く触れていないから若干ついていけなかった感。
ただ、普段使っているvim-quickrunには現行のPM(ProcessManager)が使われていたりと、身近に使われている印象。
あとはCiv5。ハマると抜け出せないCiv5。

f

@ Linda_pp さん

通常のVimマッピングで、f を全然使ってなかったけど、慣れると便利そうでした。
omapは第122回 vimrc読書会で話に出てきて導入しようと勉強最中なので、これは引き続きやります。
vim-shot-fclever-f.vimが良さ気で導入してみたいと思いました。
vim-shot-fはfを押した後に遷移できる所をハイライト表示して、ざっくりと移動する感じ。
clever-f.vimはmapの設定を簡潔にしてf連打することで目的の場所に数ストロークで近づく感じです。この設定がある事で、","と";"を普段使っている人は救われる感じで、私も救われる一人だという事は言うまでもありません。

Hey, Java! Vim is coming.

@ kamichidu さん

...Now Loading

VimJAVAを書く人という事で私の中で話題のkamichiduさんです。
JAVAのSourceそのものがでかく、その上でEclipseでメモリを喰らって辛いという話でした。
VimJAVAを書く時に便利なpluginを教えて頂いたので、是非書く際には活用したいです。

auto closing parenthesis

@ cohama さん

終了括弧についての発表でした。Rubyを一時期使うかもと私の中で話題になった際に、vim-endwiseをいれたくらいで、
若干、痒い所に手が届いていないような気がしないでもないのですが、ultisnipsneocomplete.vimでそこまで気になっていなかったのかもしれない感じを受けました。
発表を聞いてvim-smartinputを入れてみたい感が湧いてきました。
また、lexima.vimは完全に勘違いしてました。vim-smartinputのインスパイアpluginで.(ドット)リピートが可能との事です。
私自身が、.(ドット)リピートを使った事がないので、まずはソコから感漂ってます。
leximaは前から知っていたのですが、Vim pluginだという事を知りませんでした。

私が誤認していた事は認めますが、まずはこちらを御覧ください

ご覧頂けただろうか、Lingrのvim-jp部屋では日常会話にさっそうと現れるleximaは皆の心を鷲掴みです。

怖くないマクロ入門

@ deris さん

今まで使った事がない機能で、とっても勉強になりました。
すぐに使う事は出来なそうですが、このプレゼンはいつか見返すだろう事は確信しました。
懇親会ではマクロでif文を使いたいとcdepillabout さんderis さんに質問していました。
検索等を駆使して行う事で、同様の事が出来そうと教えて頂いたので、ここに備忘録として残します。

Test for Vim script

@ thinca さん

Vimによるスライド発表でした。
Vim scriptにもTDDだって事でやはりテストコード大事、絶対て事ですね。
vim-themisvim-jp内でかなり盛り上がってる感じでいい感じです。

Let's talk about neovim

@ Shougo さん

暗黒美夢王 さんでした。
NeoVimは気になりつつも、私はディストリビューションにのるまでは静観する感じになりそうです。

私は何回か勉強会、カンファレンスに参加した事があるのですが、
Vimの勉強会ではShougo さんがライブをする事が硬い掟で定められています。
今回も熱く熱唱して頂きました。
ただ、宗教上の都合でUSTができなかったため、目下、対応策を検討中となります。

かなりすごい発表(かなり)

@ supermomonga さん

かなりすごかったです(かなり)
間の取り方など多くのテクニックと画像チョイスの冴え渡る発表でした(すごく)
幼女であるためにはあらゆる技術が必要なんだなと思い、羨望の眼差しで見ていました(かなり)

XVim with MacVim and smartgrep

@ pebble8888 さん

XVim は XCode上で 仮想Vimを動作させるものらしいです。
良さ気な感じだったけど、私がXcodeを使う機会が無さそうで残念な感じではあります。
Xcode使う機会があった際には検討したいと思います。

/-improved

@ haya14busa さん

/ をMotionとして、捉えると途端に難しくなるイメージだけど、使いこなすと便利。
以前、簡単な動作動作確認で入れてみましたがincsearch.vimが良さ気です。
f マッピング覚えた後に導入を検討したいです。
その前にWindowsでの開発環境何とかしないと、やる事多いな。

vim script初心者に使ってもらいたい、転ばぬ先の杖「Vint」

@ Kuniwak さん

Vintと他のLintの違い、Vintの特徴についての発表でした。
Vim script作る場合にあると便利な感じです。
Vintを使いながらVim script開発を行い、vim-themisでテストする感じが良い感じかな〜。

Jenkins + vimenv で 最新のVimを使おう!

@ raa0121(らぁ) さん

raa0121(らぁ) さん宅では9分毎にVimのバージョンをチェックして、更新があった場合には、autobuildしているとの事。
不具合パッチを探す時にvimenvがあると調査が捗る感じですね〜。

感想

知らない知識、知っているけど触った事がない知識が多くて大変勉強になりました。
いろいろと教えて頂いたので楽しかったで終わらせず、身につけれるようにこの記事を〆めたいと思います。

Installed VirtualBox + CentOS7.0

背景 Background

最近はMacで直接開発等を行っていたのですが、
CentOSで調査したい事があったため、CentOSをインストールしようとした所、
CentOS7が出ていたため、前回の『Installed VirtualBox + CentOS6.4』の違いを記録します。

手順 Operation

VirtualBox設定

新規

  • システム
  • メモリ

    2048MB

  • 起動順序
    1. CD/DVD-ROM
    2. ハードディスク
  • オーディオ

    無効化

  • ネットワーク

    ポートフォワーディング

    名前 プロトコル ホストIP ホストポート ゲストIP ゲストポート
    SSHD TCP (空) 2222 (空) 22
    HTTPD TCP (空) 2223 (空) 80

OSインストール後

  • システム
    • 起動順序
      1. ハードディスク

パスワードなしのsudo権限付与

# visudo
(アカウント名) ALL=(ALL)ALL

SELinuxの無効化

# getenforce
Enforcing
# vi /etc/sysconfig/selinux
SELINUX=disabled

インストール済パッケージ更新

# yum -y update

SSH自動起動設定

# chkconfig sshd on
# service sshd start

ローカルPCからSSH接続確認

(localPC)
$ ssh -l (アカウント名) -p 2222 localhost

再起動

(ウィンドウ無し)VM起動

(localPC)
$ VBoxManage startvm (host名) --type=headless

ローカルPCからSSH接続

(localPC)
$ ssh -l (アカウント名) -p 2222 localhost

SELinux確認

$ sudo getenforce
Disabled

作業領域設定

$ sudo chown -R (アカウント名):(アカウント名) /usr/local
$ mkdir -p $HOME/work

yumレポジトリ追加

epel

$ sudo rpm --import http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-7
$ sudo rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/7/x86_64/e/epel-release-7-2.noarch.rpm

ius

$ sudo rpm --import http://dl.iuscommunity.org/pub/ius/IUS-COMMUNITY-GPG-KEY
$ sudo rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64/ius-release-1.0-13.ius.centos7.noarch.rpm

remi

$ sudo rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
$ sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

rpmforge

$ sudo rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
$ sudo rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm

MySQL

$ sudo rpm -ivh http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm

リポジトリの設定状況確認

$ cd /etc/yum.repos.d

  各リポジトリの設定をチェック

公開鍵生成

GitHubに登録する。

$ cd
$ ssh-keygen
$ cat .ssh/id_rsa.pub

必要なパッケージインストール

$ sudo yum install \
    colordiff ctags \
    gcc \
    httpd \
    libcurl-devel lynx \
    make man-pages-ja mercurial \
    ncurses-devel \
    openssl openssl-devel \
    perl-core perl-devel php php-devel python-devel \
    ruby ruby-devel \
    tree \
    wget

dotfiles設定

GitHubに登録している設定ファイルを設置する

$ cd
$ git clone https://github.com/KazuakiM/dotfiles work/dotfiles
$ diff $HOME/work/dotfiles/.bash_logout  .bash_logout
$ diff $HOME/work/dotfiles/.bash_profile .bash_profile
$ diff $HOME/work/dotfiles/.ctags        .ctags
$ diff $HOME/work/dotfiles/.gitconfig    .gitconfig
$ diff $HOME/work/dotfiles/.vimrc        .vimrc

問題ない事を確認した上で適用する。

$ ln -sf $HOME/work/dotfiles/.bash_logout  .bash_logout
$ ln -sf $HOME/work/dotfiles/.bash_profile .bash_profile
$ cp $HOME/work/dotfiles/.bash_profile.local .
$ ln -sf $HOME/work/dotfiles/.ctags        .ctags
$ ln -sf $HOME/work/dotfiles/.gitconfig    .gitconfig
$ cp $HOME/work/dotfiles/.gitconfig.local .
$ ln -sf $HOME/work/dotfiles/.mplayer      .mplayer
$ ln -sf $HOME/work/dotfiles/.vim          .vim
$ ln -sf $HOME/work/dotfiles/.vimrc        .vimrc
$ cp $HOME/work/dotfiles/.vimrc.local .
$ ln -sf $HOME/work/dotfiles/.w3m          .w3m
$ exec $SHELL -l

アプリインストール

  1. git
  2. LuaJIT
  3. Vim
  4. NeoBundle for Vim

Vim pluginのQuickRunでPHPUnitを実行する

VimPHPUnitを実行する方法は『VimからPHPUnitを実行する環境を整える』を参考にしました。

設定

Vim setting for PHPUnit

設計思想

phpunit.xmlを使用しない設計としました。phpunit.xmlはプロジェクト全体で使っているため、
個人用にカスタマイズするのは現実的ではありません。
そこで、"--no-configuration"を使用します。これはphpunit.xmlを読み込めるディレクトリにいたとしてもphpunit.xmlを読み込みません。 読み込まない事によるエラーは個別で対処します。
Laravelでは"--bootstrap '〜'"を設定する必要がありました。
ココらへんのオプションなどは"phpunit --help"とプロジェクトにあるphpunit.xmlを見比べれば察する事が出来ます。 あとは実行結果をsyntax highlightで良さ気にすれば完成です。

今回は通常のPHPファイルを開いている場合には全てのテストを実行し、PHPTestファイルを開いている場合は個別に実行するという、自然な感じにしたつもりです。
問題点、改善点などありましたら、コメント頂けると助かります。

Vim でSQLの整形

VimSQLを整形する方法を探していた所、Perlを利用するのが良さ気だったため、
試しに導入してみました。
最新版はSQL-Beautify-x.xxをご確認下さい。

SQL-Beautify設定

Perlを使った事が無いため、スマートでないかもしれません。

$ mkdir -p $HOME/.vim/SQL-Beautify
$ cd /tmp
$ wget http://search.cpan.org/CPAN/authors/id/J/JK/JKRAMER/SQL-Beautify-0.04.tar.gz
$ tar -zxvf SQL-Beautify-*.tar.gz
$ rm -f SQL-Beautify-*.tar.gz
$ mv SQL-Beautify-*/* $HOME/.vim/SQL-Beautify
$ cd $HOME/.vim/SQL-Beautify
$ perl Build installdeps
$ perl Build.PL
$ perl Build

Perl スクリプト と .vimrc設定

Perlスクリプトのパスを.vimrcに設定しています。

SQL pretty print

感想

Alignを使用している場合にはSQLUtilitiesで簡単に整形できます。ただ、私は使いやすさからvim-easy-alignを使用しています。Alignvim-easy-align共存させようとしましたが競合しているのかうまくいきませんでした。そこで今回の設定がいい感じに機能するわけです。
Perl初見さんなため、エライ疲れますた。。。

(追記 2014/09/15 12:05)
vim-easy-alignの設定不足が原因でAlignが悪さをしていている様に見えていた事が発覚しました(検証大事、絶対)
なので、普通にSQLUtilitiesを使った方がスマートかと思われます。

参考

.vimrcのミニマイズについての考察

先日、LingrVimが遅いという話になり、
KoRoNさんのVimの起動が遅い場合の原因と対策ページが紹介されたのをROMってました。
私の.vimrcは自分なりにチューニングを行って早くしているつもりではありますが、
可読性を意識して設定しているため、遅くなる設定になっていました。
ただ、遅くなるのは望んだ結果ではないため、JavaScript/CSSでよく見るミニマイズを行うとどうなるのか興味がわいたので調べました。

検証方法は以前ネットサーフィンをしている際に見つけた id:thincaさんのvimrc のどこが重いのかを調べるもう1つの方法のページに記載れている方法で試したいと思います。

まずはプログラムを組まずに手頃に出来る"set"処理部分のみをミニマイズしました(手動力)
その結果を見る限りでも起動を短縮出来ている事が伺えます。
まだ、誰もやっていないか調べて、やって無さそうだったら(なぜやらないのか)も含めて調べて
コード書いてみようかなと思います。

サンプルコード

.vimrc profiling. 100 startup total average time.

検証結果

.vimrc_normal

MBA $ sh vimrcStartTimeChecker.sh
.000596
MBA $ sh vimrcStartTimeChecker.sh
.000597
MBA $ sh vimrcStartTimeChecker.sh
.000598

.vimrc_min

MBA $ sh vimrcStartTimeChecker.sh
.000535
MBA $ sh vimrcStartTimeChecker.sh
.000507
MBA $ sh vimrcStartTimeChecker.sh
.000484

感想

50行程度のset処理でゴクゴク僅かではありますが、処理時間に差異が出ました。
予想どうり雀の涙程度でしたが...。
もう少し処理する行数を増やせばいい感じに効果が期待できるかもです。