投稿

セキュリティ・ミニキャンプ in 東北 2014 に行ってきた話

タイトルの通り、9/13, 9/14に会津で行われたミニキャンプに参加しました。 その感想を書いていきたいと思います。 事前課題はオレオレSNSの脆弱性探しでした。 セキュリティ・ミニキャンプin東北は会津大学で!準備開始しています! #spcamp #seccamp pic.twitter.com/jZ1yzUM8DO — security_camp (@security_camp) September 13, 2014 まず1日目ですが、各講師の講義を受けました。 中でも園田講師の「情報セキュリティの今そこにある危機」が印象に残っています。 サービス提供者の求める情報とユーザの持つ情報のどこまでが個人情報でどこからが個人情報ではないのか、また、単体では意味をなさない(個人情報足り得ない)ものでも、データマイニング的に複合化すれば様々なことを知ることが出来る。 なので、最近のスマートフォンに始まり、ウェアラブルデバイス(なんとかウォッチですね※妖怪ではない)が持つ情報などを駆使して、抽象的な人格コピーが可能になる日も近いのでは?事前に集積したデータから、その人が何かを感じて、思考となる前に機会側で推測することが出来るのでは?といった意見が大変興味深かったです。 続いて宮本講師による「情報セキュリティ人材は本当に不足しているのか?」でした。 この講義によると、2004年に登場したウィルスが未だに大量に報告されている、というものがあり、少々意外に思いました。ウィルス意外にも古い脆弱性はまだまだ残っているそうです。ただそういったものはアップデートや最新版を使えば何も問題無いケースが多いとのこと。 そして、情報セキュリティ人材は数万人規模で足りないらしいです。 情報セキュリティに携わっている人でも力不足な人も結構いるとか。 その後、少しの休憩を挟み、西村講師(イケメンだった)による「スマートフォンのセキュリティ概論」と「HTML5のセキュリティ」でした。 前者は「マルウェア」「リスクウェア」「脆弱性のあるアプリ」の3つについて詳しくお話しいただきました。 後者はHTML5に段々と移行していく中で、脆弱性を作りこまないようにするにはどうするかなど具体例も多くあってわかりやすかったと思います。 特に動的ページ...

2014版 VAIO Pro (SVP1322A1J) で Arch Linux と Windows 8.1 を デュアルブートする

イメージ
VAIO Pro 13インチを買いました。 こいつです 初めてのWindows8.1です。 そして、ひとしきり楽しんだ後はやっぱりLinuxを入れたいですね。 そんなときはArch Linuxがおすすめです。 しかし、VAIO ProにArch、もといLinuxを入れるのはなかなか手こずるようで 自分も苦労しました。 なので、メモ書きとして残しておきます。 さて、まずはWindowsを普通に起動してパーティションの縮小です。 自分はWindows 100GB, Arch 100GBくらいにしました。 この時に、 高速スタートアップを無効 にしておきます。 これをしておかないとインストールはできますがインストール後に一度Windowsを起動するとArchもWindowsも起動できなくなってしまいます。 場所は、 コントロールパネル→電源オプション→カバーを閉じた時の動作の選択(左側)→シャットダウン設定 の中にあります。 ここでチェックボックスのチェックを外しておきましょう。 基本的には Installation Guide (日本語) を参考に進めていきます。 インストール用のUSBインストールディスクを作ります。 isoからddコマンドとかで普通に作れば問題ないです。 そして、BIOS設定で AT Support System: disabled Secure Boot: disabled External Media: enabled に変更します。 更にブート順序をExternal Mediaを一番上にします。 これらを保存してUSBを挿した状態で起動するとUSBからブートすることができます。 この時に稲妻マークのUSBポートだとうまくできないとかなんとか。 さて、ここで大事なポイントがありまして、ブートローダのオプションとして 一瞬の選択画面で"e"を押して、 libata.force = noncq を追加してください。 これがないとSSDがエラーを起こしてすごく遅くなります。 起動後に縮小してできたあまりのエリアをgdiskで切り分けましょう。 gdiskはfdiskのGPT版らしいです。 そのあと、 % mkfs.ext4 /dev/sdaX...

lightline.vimのバッファ履歴表示コンポーネントをかいた

イメージ
この記事は Vim Advent Calendar 2013 103日目の記事になります。 今回はlightline.vimのコンポーネントを作ってみました。 基本的な部分については作者様直々に記事を執筆していらっしゃるのでそちらを参考にしてください。 作者が教える! lightline.vimの設定方法! ~ 初級編 - コンポーネントを作ってみよう 普段Vimを使っていてバッファ一覧が常に見える位置にあるのは何かと便利です。 ちらっと見てから、直ぐに:b2とかで移動できますからね。 ですが、あまり場所を取ってほしくはありません。 それに、ただのバッファ一覧ではなくてVimFilerとかUniteとかのバッファは除外してほしい。 しかも、開いた順に表示したい。 そこでlightline.vimのコンポーネントを書きました。 ぜひ活用してやってください。 また、バグがあれば気軽に教えて下さい。

Vim で .c/.cpp と.h/.hpp とかを相互に開くPluginをつくったじゃんよ

イメージ
この記事は  Vim Advent Calendar 2013  94日目の記事になります。 はい、今回は自作Pluginの紹介です。 mopp/next-alter.vim 自分は、ねくすとおるたーと呼んでいます。 このプラギンは対になるファイルをササッと開くためのプラギンです。 同様なプラギンはあったのですがうまく動かなかったので作りました。 具体的に説明をしていきましょう。 みなさんも実装ファイルをいじっている時にヘッダを開きたくなるのはよくあるはずです。 例えば、 "hoge.c" をエディット中にそれと対を成す "hoge.h" を一瞬で開くことができます。 動作例は以下です。 このプラギンは以下のコマンドとマッピングの2つを提供します。 : OpenNAlter < Plug >( next - alter - open ) また、開くときに縦に開きたいとか横に開きたいとか、その日の気分によって変わります。 そんな時のために、コマンドはオプションで開き方を変更することができます。 便利ですねー(かなり) マッピングでは、以下の変数に設定しておくことで動作を変更可能です let g :next_alter#open_option = 'vertical topleft' 詳しくはgithubのREADME.mdを見てください。 さて、次はどんなプラギンをつくろうか…

君の知らないVimレジスター

この記事は  Vim Advent Calendar 2013  90日目の記事になります。 どうも、一足早い春休みに突入したもぷりです。 しかし春と言っても、まだまだ、寒いですねー。 先日からneovimの話題でもちきりですが、Vim本体についての紹介です。 今回はレジスタの話です。 まずは、ヘルプを見てみましょう。 :help registers レジスタには 9 種類ある: *registers* *E354* 1. 無名レジスタ "" 2. 10個の番号付きレジスタ "0 から "9 3. 小削除用レジスタ "- 4. 26個の名前付きレジスタ "a から "z または "A から "Z 5. 4個の読み取り専用レジスタ ": と ". と "% と "# 6. expression 用レジスタ "= 7. 選択領域用レジスタ "* と "+ と "~ 8. 消去専用レジスタ "_ 9. 最終検索パターン用レジスタ "/ 意外と種類がありますね。 詳しくはそのままヘルプを読めばわかると思います。 そして、このレジスタはなんとインサートモードから呼び出すことが可能です。 やり方はインサートモードで <C-R> レジスタ です。 これを使ったテクニックを紹介します。 まずは、実践Vimにも記述されているものです。 <C-R>={何か式} インサートモードにて入力すると、コマンドモードに=が現れて続けて入力ができます。 例えば、四則演算などの簡単な式を埋め込みたいときなどに有用です。 メモリアドレスの計算なんかしたいときなど 「<C-R>=0xA000 - 0x0909」 と打てば 「38647」 と表示されます。 おっと、これは10進数です。メモリアドレスなんだから当然16進数がいいですね。 ここで、入力できるのは計算式ではなくVimにとっての式であるというのが便利ポイントです。 「<C-R>=printf('0x%x',...

.vimrcでありがちなミスとかおすすめとか

この記事は  Vim Advent Calendar 2013  82日目の記事になります。 \アドベント!/ 今回は、みんなの大好きなvimrcの話です。 人のvimrcを見ているととても面白いですが、「あ、これはこうしたほうがいいよな〜」なんて思うことが稀にあります。 そんな間違いや個人的にこうしたほうがいいよって言うものをまとめて見ました。 1. ファイル形式別機能の有効無効設定 これはかなり頻繁に見かける間違いです。 間違い filetype plugin indent on filetype indent on 正しい filetype plugin indent on  これはhelpを引けばわかります。 :help :filetype-overview 有効無効の設定は一括でできます。 2. カラースキームとシンタックスの有効 これは自分もハマりました。 間違い colorscheme mopkai syntax enable 正しい syntax enable colorscheme mopkai 順番が大事なのです、逆にするとうまく色がつかない場合があります。 原因は不明です… 3. インデント この記事を書いていて自分のvimrcのミスに気が付きました 間違い set smartindent set cindent 正しい set smartindent or set cindent これはこちらに書いてあります。 :help smartindent smartindentはcindentかindentexprが有効なときは意味が無いようです。 4. nocompatible set nocompatible これはvimrcを書き始めたらまず書くと思います。 別に間違いではありませんが、これは不要です。 :help compatible を見てみると、「既定では オン、ファイルvimrcまたはgvimrcが発見されたらオフ」とあります。 つまり、vimrcを書いた時点でn...

Vimの:makeの引数補完機能付き:Makeを作った。

イメージ
この記事は  Vim Advent Calendar 2013  80日目の記事になります。 書かぬなら、私が書こう、アドベント はい、もぷりです。 今回も、自作Pluginの紹介です。 Vimには:makeというコマンドがあります。 意外と知らない人もいるかも知れませんので軽く説明を。 このコマンドはいろいろ設定出来るのですが、何も設定しない状態で実行すると $ make を実行したのと同じ動作をします。 つまり、Vimを終了せずとも自分で書いたMakefileを実行出来るわけです。 これだけでも結構便利ですね。 しかし、自分の環境では:makeはファイル名の補完しか行ってくれません。 Makefileは生成ファイル名を書くのだからこれでもまあ、悪くはないのですが $ make clean $ make all $ make run とかの.PHONYをつけるようなターゲットも補完してほしいわけです。 更に、READMEなどもファイルなので候補に上がりますが、個人的に出てきてほしくないです。 なのでPluginを作りました。 こちらです。 mopp/makecomp.vim ちょっとわかりづらいですがこんなかんじで動きます。 これでmakeしやすくなりましたー

つくったVim PluginとつかったVim scriptのはなし

イメージ
この記事は Vim Advent Calendar 2013 の 12日目の記事です。 もう12月も半ばですね。 みなさまは年の暮れに向けていかがお過ごしでしょうか。 私の場合、Plugin作りがなかなか進まず、苦しい年末が近づいております。 さて、今回は自分で作ったPlugin4つの紹介とその時に知ったVim scriptについてのことを書こうと思います。 まずは一つ目です。 Vim scriptをVim Pluginとするにはディレクトリを分けるなど Vim Pluginとしてのルールがあります。 ですが、「あっ、これPluginにしよう!」と思った時にmkdirやtouchコマンドを連打するのは面倒です。 :help write-plugin にもある通り、Pluginとするにはディレクトリを分ける必要があります。 直ぐにパッと作って行きたい、Pluginを作りはじめるまでをカイゼンしようというわけです。 そんなときに使うために作ったのがこれです。 mopp/layoutplugin.vim Vimからディレクトリ、スクリプトファイル、README.mdをパッと作ってくれます。 スクリプトファイルの中身もテンプレ的に出力してくれます。 2つ目です。 githubをふらふらしていた時にたまたま見つけた、 数年前にmattnさんが作った googlesuggest-complete-vim をneocomplete.vim向けにラップしました。 mopp/googlesuggest-source.vim 自動でgoogle補完力で入力ができます。 個人的に5分で出来たにもかかわらずなかなか面白いなあと感じております。 ただ少々不安定なのは通信をするからでしょうか… そういうときはインサートモードで<C-U>するとよいです。 3つ目です。 molokaiのような色合いが好みなのですが コメントの色など不満が幾つかあったのでmolokaiを元に自分のカラースキームを作りました。 mopp/mopkai.vim もぷかいと読んでやってください。 molokaiよりも強めのカラーリングのつもりです。 自分のためのカラースキームなのでこ...

OSの超簡単なメモリ管理を実装するおはなし

この記事は  Aizu Advent Calendar 2013  6日目の記事です。 前日は「 Aizu Advent Calender 5日目(ダイエット成功したかも知れません) 」でした。 おはようございます。 もぷりです。 最近すっかり寒いですが、皆様いかがお過ごしでしょうか。 私は今、胸部に痛みを感じつつキーを叩いております。 さてさて、今年もAdventな季節がやってまいりました。 今回は自分の作ってるOSで とりあえず 実装した 簡単なメモリ管理 について書きます。 間違いなどの指摘があれば@Mopp_jpでもissuesでもなんでもよいのでぜひ言ってください。 リポジトリはこれです。 もぷりんOS まず、メモリの管理とは 「OS内でハードウェアからのメモリ情報を使って 動的なメモリ確保を行えるようにする。」 ということです。 もっと簡単に言うと 使っているのか使っていないのかを自動で判断してメモリ割り当てをしてくれる って意味です。 順を追って説明をします。 まず、OSはブートローダというOSを起動するだけ+αのソフトウェアから起動されます。 具体的にはgrubとかLILOですね。 で、このブートローダはBIOSが起動します。 BIOS → ブートローダ → OS → ζ*'ヮ')ζ<うっうー このように起動していきます。 ちなみに、もぷりんOSでは色々とめんどかったのでgrubから起動されること前提で作っています。 先に言ったように、ブートローダはOSを起動するだけ+αです。 ですが、とても大切ですので簡単に説明します。 OSの実行ファイルをデバイスから探す ↓ OSの実行ファイルをメモリに読み込む ↓ ハードウェア情報、BIOSコールの戻り値などをメモリに置いておく ↓ 読み込んだOSの実行ファイル先頭部分へジャンプ この4ステップです。 シンプルですねー(※1ステップ目以外) このOSが起動した時点で、メモリについて考えてみます。 はい、なにもないですね。 ですので、とりあえずOSはセグメントというものを設定します。 セグメント...

VimConf2013 に行ってきた話

11/16にクックパッドにて行われた VimConf2013 に参加してきました。 疲労感高まる帰りの新幹線内ですが、つらつらと感想を書いてみます。 まず、暗黒美夢王やthincaさん(ニャル子さんクリアファイルもらった!!)、ujihisaさん、ももんが(すごい)さん、derisさんをはじめとする、 ちったーやlingrでお世話になっている方々とお話させていただいたので、とても感極まりました。 また、プレゼン発表では香り屋さんの「How to suggest new features for Vim」がとてもお上手でなるほどなあと感じることが出来ました。 相手を十分に説得するに足る理由を持つこと、Bram氏へのパッチに限った話ではないので参考になります。 他の方々からももちろん、Vimへの想いを感じました。 懇親会では、うわさに聞いていた暗黒美夢王の歌も聞くことが出来ましたし、 ああ、やっぱりこの人は変態(へんしゅう)だなと再認しました。 自分も早く登壇者側にまわりたいものです。 Pluginも大量に作らなくてはいけませんですし… 今回参加できなかった人はまた次回のVimConfが行われるはずですので ぜひ参加しましょう。 最後に一言。 まったく、Vimは最高だぜ!!

「実践Vim」レビュー

イメージ
先日、kaoriyaさんから抽選で実践Vimを頂けるという企画に応募したところ 抽選して、一足先に実践Vimを手に入れました! http://www.kaoriya.net/blog/2013/08/24/ その条件としてレビューを書くことになっていますので、読んでみた感想を簡単に書いていきます。 慣れていないので拙いところはご勘弁下さい。 さて、きっとこの記事を読んでいるあなたはもう既にVimがなんなのか程度は知っていることでしょう。 結論から言います。 実践Vim 買いましょう。 とても良い本だと思います。 TIP集となっていて、目次からばーっと見て探しやすく、Vimの操作はコマンドとカーソルの動きが表形式で表されており見やすいですし、その表のおかげで試し易いです。 背面に[初級技術者向け]と書いてありますが、ある程度「Vimゥ…Vimゥ…」と言い始めた人なら手元に置いて損はしない本です。 正直に言って、私は「まあ、初心者Vimmerでは無いだろ、Vim力も575あるし」と思っていました。 ですが、読み始めて、初心者用の解説部分にさり気ないところへ手がとどくコマンドも併記していて「アッ」となることが多々ありました。 例えばビジュアルモード時のoコマンドがそうです。これは選択範囲の終点と始点をトグルしてくれます。 恥ずかしながらこれを読むまで知りませんでした。 本書は、全体的に如何にエディットするか?といったことに重点をおいているようです。 だからでしょうか、最初に「ドットの公式」といってドットコマンドについて述べています。 「Vimってこんな機能でこんなことができるんですよー」というスタイルではなく、 「Vimmerっていうのはな、こういう時はこうするのがクールなんだぜ」 という印象です。 まさに、実践的なVimの書というわけです。 個人的には第3部第8章「モーションによるファイル内の移動」がお気に入りです。 w,b,e,ge などの基本から自動マークまで書いてあります。 特に「 Vimの強力な移動手段は致死レベルの正確性で目標に到達する 」というテキストオブジェクト部分が面白いです(ニンジャの絵もありますからね)。 約7ページですがテキストオブジェクトについてきちんとわかりやすく、図...

vim-airline に乗り換える5つの理由

イメージ
この記事は  Vim Advent Calendar 2012  の  263  日目の記事です。 今回はつい先日 かなり素晴らしいPluginがリリースされて、大分人気になっているようでしたので紹介します。 vim-airline ってなに? https://github.com/bling/vim-airline  より引用 https://github.com/bling/vim-airline/wiki/Screenshots  よりいくつか引用 dark theme with powerline symbols light theme solarized light 上の画像を見ればお分かりでしょう。 Vimのステータスラインをかっこ良くしてくれるPluginです。 以前までは、ステータスラインのカスタマイズといえばset statuslineをいじる、powerline(新版), vim-powerline(旧版) くらいの選択肢でした。 airlineはここに新たな選択肢を加えてくれました。 1. Vim script のみで実装     新しいバージョンのpowerlineではvim以外のzshなどに適用させるためかpythonが必須となり、重くなってしまいました。 対して、airlineは高速です。 ※powerlineがpythonを使う利点はしっかりとあります。 2. 他のpluginに対応     現在、airlineは  bufferline ,  fugitive ,  unite ,  ctrlp ,  minibufexpl , gundo , undotree ,  nerdtree ,  tagbar ,  syntastic , lawrencium  の Pluginに対応しています。 これらがstatuslineに表示する情報を上書きしません。 また、ここで自分のpluginに対応させたいときも簡単に設定出来るようです。 詳細は:help ai...

あなたの Vim は もっと Smart に Input できる

この記事は  Vim Advent Calendar 2012 の 222 日目の記事です。 みなさま、こんにちは もぷりです。 私の住む地域では、まだまだ梅雨が続いているにもかかわらず 連日が30度超とふざけてるのか?と思うくらいにジメジメと暑いです。 「這いよれ!ニャル子さんW」も無事放送終了し、少し残念な気持ちに浸っているところになんて天気でしょうかね。 さてさて、本日の内容は Kanaさんこと、偉大なるVim神(グレートヴィムゴッド) によって作成された SmartInput SmartChr この2つのPluginについてです。 数多のVim Pluginの中でもかなり強力なPluginだと思います。 単体でも十二分に有用ですが、それぞれの出来る事がきちんと分かれています。 それら2つを良い感じに 組み合わせて使用する 方法を紹介します。 組み合わせることで以下が出来るようになります。 SmartChrに条件を追加出来る SmartInputに繰り返させる 早速、コード例は以下です。 NeoBundleLazy 'kana/vim-smartchr', { 'autoload' : {'insert' : '1'} } NeoBundleLazy 'kana/vim-smartinput', { 'autoload' : {'insert' : '1'} } " Smartinput let s:bundle = neobundle#get('vim-smartinput') function! s:bundle.hooks.on_source(bundle)  " ***ここから!*** call smartinput#map_to_trigger('i', '%', '%', '%') call smartinput#define_rule({ \ 'at' ...

ターミナルからvim-refでmanが見たい

vim-ref というthincaさんの作ったPluginがあります。 各種言語のリファレンスを見ることが出来るプラグインでpydocやmanをVimから見たり、Wikipediaを検索したり、Weblioを引いたりできます。 今日、ふと ターミナルからmanで調べていたのですがVimでみたいなー と思いました。 毎回、 $ Vim :Ref man hoge と打つのは少々めんどっちいのです。 なので.zshrcに以下の関数を追加しました。 function vimman() { vim -c 'Ref man '$1 -c 'winc j' -c 'q' } これでターミナルから $vimman hoge で見れます。 ちょっとだけ便利ですね(。・ω・。)

カーソルキーさん@つかわない インサートモード編

この記事は Vim Advent Calendar 2012   104日目の記事になります。 103日目は@ujihisaさんの unite-build でした。 Vimッ!  使わずにはいられないッ! カーソルキーでエディット? 貧弱貧弱ゥ!! はい、すいません。 というわけで 以前、書いた記事にも似たようなことをチラッと書きましたが、改めてきちんと書きなおしてみます。 Vimmerであればノーマルモードにおいて、息をするよりも簡単にhjkl移動をすることだと思います しかし、インサートモードではどうでしょう? 案外カーソルキーに手を伸ばしがちですね。 私もVimを使い始めたばかりの頃はそうでした。 そもそも、インサートモードにおいてカーソルキーを連打ってしまうくらいの移動ならば <ESC>してノーマルモードで移動すべきだと思います。 Vimは音ゲーでは無いので連打なんてするべきではないのです。 標準では以下のように与えられています。 下の行へ <C-G><C-J> <C-G>j 上の行へ <C-G><C-K> <C-G>k これでは物足りませんね(゜.゜) そこで、この上記に加えるといいであろう設定を列挙します。 <C-A> - 行頭 <C-E> - 行末 <C-F> -  右 <C-B> -  左 noremap! <C-A> <Home> noremap! <C-E> <End> noremap! <C-F> <Right> noremap! <C-B> <Left> noremap! <C-D> <Del> emacsライクに設定しています 私がこの設定にしている理由はMacを常用しているからです。 Macだと結構な割合でemacs移動バインドがテキストボックス内で使えるので案外役に立つのではないでしょうか。 あと、emacsも最低限の動作は覚えてお...

Vim から zsh を呼ぶ プラギン 紹介

イメージ
Advent Carender ぶっちぎってしまいましたねすいません(´・ω:;.:... この記事は Vim Advent Calendar 2012 : ATND 80日目の記事になります。 79日目は @rbtnnさんの 「Vimの正規表現`\%`は結構便利だよ」という話 ProVimmerの方々はVimShellをお使いのことと思いますが 既存のshellと同様に使うには最初に幾分かの設定が必要だったりします。 shellスクリプトも異なっているようですし。 自分も一時期使っていましたが、なかなか慣れずに Console Vim派でもあるので<C-Z>か:shell、普通に一旦閉じるに戻ってしまいました。 しかし、先日 なかなか良さげなプラギンを見つけたので紹介します。 Conque というターミナルのインターフェースのような感じのものです。 shell以外にもターミナル上のもの(例えばemacsなど呼び出せます) zshもzshrc, zshenvの設定のままで使えます。 ((((;゚Д゚)))) とりあえず設定を以下に NeoBundleLazy 'http://conque.googlecode.com/svn/trunk/', { 'autoload' : { 'commands' : ['ConqueTerm', 'ConqueTermSplit', 'ConqueTermTab', 'ConqueTermVSplit'] } } " Conque let g:ConqueTerm_ReadUnfocused = 1 let g:ConqueTerm_CloseOnEnd = 1 let g:ConqueTerm_StartMessages = 0 let g:ConqueTerm_CWInsert = 1 noremap <silent> <Leader>sh :ConqueTermVSplit zsh<CR> " Conque function! s:delete_ConqueTerm(buff...

VimのイカしたPowerLineが新しくなってた

はい、なってましたね VimだけじゃなくてShellまでかっこよく出来るようになるとかなんとか しかし、思ったより手間だったのでメモ 以下はMacです 加えてFontへのパッチはうまく出来ませんでした fontforgeのためにhomebrewに変えるのがめんどうで… 環境は以下 Mac OS X Lion Python27(Mac標準のAppleのやつ) iTerm2 MacPorts 基本的に ここ に書いてあるとおりにすれば問題は無いはずです。 Python版のVimについては MacPortsもしくはHomeBrew、自分でビルドのどれかで入れます。 いつもどおりビルド しました。 以下の手順はドキュメントのコピペです。 portで使うpythonをappleのものに変更 もしかすると上の3つも変更後にやったほうがいいかもです Pythonを使うのでpipなるパッケージマネージャを入れて、PowerLineのインストール 上の3つはオプションでらしいですが入れておきます。 sudo port select python python27-apple pip install --user pygit2 pip install --user mercurial pip install --user psutil pip install --user git+git://github.com/Lokaltog/powerline ここでも、よくわからないのですがMacPortsでインストールしたgcc48とかだと pipのinstall時にコンパイラオプションかなんかのエラーでできませんので Mac標準のgcc42の方でやるとインストール出来ます。 pygit2はヘッダファイルあたりの関係でインストールできなかったのでしてません 一応動いたし多分大丈夫… 次に以下を.vimrcへ書き込みます " NeoBundle 'git://github.com/Lokaltog/powerline.git' python from powerline.bindings.vim import source_plugin; source_plugin() sourc...

痒いとこに手が届く(気がする) Vim Plugin 作った

vimrcで書いていた関数が大きくなったのでPlugin化しました もぷり's 孫の手 https://github.com/mopp/backscratcher vim的には良くないのかもしれませんが なんか、便利そうなVim Scriptを書いたら追記して行こうと思います お陰でvimrcがかなりすっきりしました。

またVimのビルドした

先日、技術書の添付ディスクないのファイルを開く際、そのファイルがsjisでして、しかもオレオレビルドVimのiconvが無効になっており、という…_:(´ཀ`」 ∠):_ 加えて、どうもMac標準のgccとMacPortsとかで入れたgccだと違いがあるようだったので 改めてまとめ直すことにしました。 基本的にはMac環境ですが多分Unix系ならほとんど同じはず… ソースとパッチをダウンロードして、パッチを当ててからmakeします ソースは http://www.vim.org/sources.php パッチは ftp://ftp.vim.org/pub/vim/patches/7.3/ からダウンロードします 今回はpluginで必要だったのでPythonも有効にします Pythonは全くわからないで、ただMacPortsから突っ込んだだけです さて、通常のMac環境ならパッチを当ててmakeするだけでいいのですが MacPortsでインストールしたgcc48を使ってみようと思います 正直、使ってみたかっただけなのに少し面倒だった… 環境変数はこんな感じに設定してます。 PATHの設定はむずかしい # MacPorts export PATH=/opt/local/bin:/opt/local/sbin:$PATH export MANPATH=/opt/local/man:$MANPATH # For Compiler export BOOST_ROOT=/opt/local/include/boost export CPLUS_INCLUDE_PATH=/opt/local/include:/usr/include export CPLUS_LIBRARY_PATH=/opt/local/lib:/usr/lib export C_INCLUDE_PATH=/opt/local/include:/usr/include export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib:/usr/lib export LD_LIBRARY_PATH=/opt/local/lib:/usr/lib export LIBRARY_PATH=/opt/local/lib:/usr/lib #...

VimScriptで区切り文字までをサクサク削除できるやつ書いた

はい、タイトルの通りです。 普段、かなり使うコマンドの一つに以下のものがあります。 dfX - 文字Xまで削除 (Xを含む) dtX - 文字Xの前まで削除 (Xを含まない) cfX - 文字Xまで削除し、インサートモードへ (Xを含む) ctX - 文字Xの前まで削除し、インサートモードへ (Xを含まない) ランダムなアルファベットの時などは別によいのですが コードを書いていてセミコロンの前まで消したい時、閉じ括弧の前まで消したい時などがあります。 そんな時に毎回毎回同じようなコマンドを打つのは面倒です。 "."は使いますがそれでもVimを開くたびに打ち直すのすら面倒_(:3」∠ )_ ということで、現在のカーソル位置から予め設定した、任意の区切り文字まで上記の4つのコマンドを実行出来るVimScript書きました。 VimScriptの練習にもなっていいことです(・∀・)。 " 区切り文字までを削除する " @isInsert 削除後に挿入するか否か " @isInclude 区切り文字を含むか否か function! g:deleteDelimitChar(isInsert, isInclude) " 区切り文字リスト 優先順位はリストの並びごとに高→低 let l:delimitList = [';', ':', ')', '}', ']', '.', '"', ''''] let l:cursolPos = getpos('.') " 現在カーソルのある列、以降の文字列を取得(カーソル文字も含む) let l:afterCursolStr = strpart(getline(line('.')), remove(l:cursolPos, 2) - 1) " 区切り文字のいずれかがあるか検出 for l:i in l:delimitList " 区切り文字が存在すれば削除処理開...