pockestrap

Programmer's memo

Vim

毎日日記を書く技術

最近、 https://commits.hatenablog.com で毎日日記を書いている。 この毎日というのは一日も欠かさずという意味で、実際日記を書き始めた2019-12-17から一日も欠かさずに続けている。1 これを続けるために2つ工夫していることがあるので紹介したい。1つは仕…

banner (1) をベースに、Vim scriptでbannerを出すプログラム vanner を実装した

Hello, Vanner! github.com 実装の動機 keycast.vim というプラグインを紹介した(keycast.vimをつくった - pockestrap)ところ、macOSでうまく動かないという報告をもらいました。 調べてみると、keycast.vimが依存しているbannerコマンドの挙動がプラットフ…

keycast.vimをつくった

Vimで入力した文字を表示するためのプラグイン、keycast.vimを作った。 github.com screencast 仕組み 入力されたキーをbannerコマンドで大きくして、popup windowに表示している。 キーの入力 最初、Vimでキーの入力を監視する方法が見つからなくて苦労した…

:terminal を使ってDenite.nvimのシンプルな代替Vimプラグインを作った

Problem Denite.nvim という便利なVimプラグインがあります。 Deniteの解説は他に譲りますが、私は主にファイル名のインクリメンタルサーチや、git grepに使っていました。 github.com Uniteの頃からとても便利に使っていたのですが、DeniteはPythonに依存し…

Vimでカーソル位置のRubyVM::AST::Nodeを表示する

quickrunを使って、RubyVM::ASTを使ってパースしたASTからカーソル下のノードをサッと表示できるようにしてみた pic.twitter.com/EkpYdP669j— Pocke(ぽっけ) SW-1309-2807-5790 (@p_ck_) May 27, 2019 次のコードをprint-focused-ast.rbとして適当なところに…

Vim in Vim しない :terminal

PoCを作っている。 なに Vimには:terminalという便利なコマンドがあり、これを実行するとVimの中でターミナルが開く。1 これは多分便利で、例えばターミナルからgfしやすかったりすると思う。 :terminalコマンドで開かれるのはターミナルなので、もちろんそ…

Cuculus.vimを作った

github.com なにこれ Rubyのdef-endなどの対応を%でジャンプするためのVimプラグイン。Parser gemを使っているので、Parser gemが正確にパースできるコードであれば正確な位置にジャンプできる。 動機 vim-jpのSlack1でmatchup.vimがうまく動かないという話…

VimでGoのコードをコントラスト高く表示する

Problem なんかGoを書いていると「のっぺりしている」と感じる。のっぺりしていて、どこが何をしているコードなのかパッと理解することがむずかしい。Rubyだとその正反対で、コードのコントラストがはっきりしているように感じる。この違いが言語自体なのかS…

Elegant collaboration of Vim and Ruby (VimConf 2018 CFP; rejected)

Abstract Ruby is an elegant programming language. However, Vim's Ruby interface was not elegant unfortunately. But we can find elegant collaboration of Vim and Ruby "now" (note: "now" is Nov. 24th, 2018)! I talk the elegant of the collabor…

VimConf 2017 で Syntax highlighter の話をした

Vim

speakerdeck.com また、作成に使っていたGoogle Slidesへのリンクはこちら。 The new syntax highlighter for Vim - VimConf2017 - Google スライド ボツになったスライドとか、メモとかが見れます。 何を話したのか 私が作っている、新しいVimのSyntax High…

vim-go + gocode でインポートしていないパッケージも補完したい

TL;DR Add let g:go_gocode_unimported_packages = 1 to your .vimrc 欲求 通常、gocode ではインポートしていないパッケージの関数等は補完されない。 例えば、strings.Spと打ってstrings.Split()が補完されるためには、import "strings"が必要である。 git…

ruby の begin-resuce-end で囲むVimプラグイン作った

こんな感じ Installation GitHub で公開されているので、NeoBundleなどを使用してインストールすることが出来ます。 github.com NeoBundle "kana/vim-operator-user" NeoBundle "pocke/vim-operator-ruby-rescue" Usage Vim の Operator プラグインとして動…

行末スペースを消すVim Operatorプラグインを作った

github.com Installation and Setting Example NeoBundle 'kana/vim-operator-user' NeoBundle 'pocke/vim-operator-trailing-space' map <Space><Space> <Plug>(operator-trailing-space) Demo わかりやすさのために、行末スペースを可視化しています。 何故作ったか 行末スペー</plug></space></space>…

Markdown 用 Operator Vim プラグインを作った

Markdown でヘッダレベルをいい感じに上げ下げするOperatorプラグインを作りました。 github.com 動画を見ていただくと、どのような動きをするのかわかると思います。 Operator とは 知らない方は、 Vim Advent Calendar 2013 97日目:モモンガでもわかるテキ…

Markdown 用 TextObject Vim プラグインを作った

Markdown のコードブロックを選択するVimプラグインを作りました。 github.com 動きは動画を見て頂くのが早いと思います。 TextObject とは Vim の「範囲を表す」概念です。 Vim Advent Calendar 2013 97日目:モモンガでもわかるテキストオブジェクトとオペ…

Serverspec を書きやすくする Vim プラグインをつくった

github.com 経緯 会社で Serverspec 作成 GUI アプリケーションを作る Serverspec 作成補助アプリケーションをリリースしました | サバカン屋テックブログ ↓ 幼女「GUIめんどい、Vimだったら使う」 @p_ck_ ごくまれに書くー 記事を読んだ感想だと、全く新規…

Vim で Go 言語を書いている時、Neosnippet でいい感じに if する

今回は、Neosnippet x Go x if にフォーカスを当てた話をしようと思います。 Neosnippet とは? みなさん、Neosnippet を知っていますか? && 使っていますか? Neosnippet はいい感じに snippet を展開してくれる Vim プラグインです。 Neosnippet 自体につい…

DentooLT で Vim についてはなした

Vim

Level up Vim with text-object and operator pocke/slide-level_up_vim · GitHub 私「Vim知ってる人ー?」 → 会場のほぼ全員が手をあげる 私「Vim使ってる人ー?」 → 会場の半数ぐらいは手をあげる 私「Vimのプロフェッショナルの人ー?」 → 誰もいない 結論は…

My NeoComplete settings

普段 NeoComplete にとてもお世話になっているので、自分の設定を晒そうと思います。 参考にしてくれる人がいれば嬉しいです。 Plugins Shougo/neocomplete.vim · GitHub 言わずと知れた補完ブラグイン。 今回の主題 NeoBundle 'Shougo/neocomplete' if neob…

Vim で Ruby を書くならこれを使え!

私は開発環境を整えるのが大好きなのですが、今まであまり発信をすることがなかったのでこの記事を書きました。 少しでも Vim で Ruby を書くのが快適になれば幸いです。 なお、煽り気味のタイトルですが、それだけ私の独断と偏見で便利だと思っているもので…

Vim で GitHub の Issue 番号を補完できるプラグインを作った

GitHub には、コミットメッセージに「Closed #3」などと書くと3番の Issue を閉じられる機能があります(Closing issues via commit messages - User Documentation)。 この機能は便利なのですが、コミットする時に Issue 番号を覚えられていることは少ないと…

vim から環境変数を削除する

結論 silent !unset '$HOGEHOGE' で$HOGEHOGE環境変数を削除できた。 やりたかったこと vim-scripts/javacomplete · GitHub をいれたけど、Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on ってWarning(?)がでるせいでエラー扱いされてうまく補…

watchdogs.vim で golint を使う

watchdogs.vim は、Vimのシンタックスチェックプラグインです。また、golint はGo言語の Lint ツールです。 watchdogs.vim はGo言語に対応していますが、golintには対応していなかったので設定を書きました。 let g:quickrun_config['watchdogs_checker/goli…

vimでクリップボード連携を有効にした話

前提 +clipboardなターミナル上のVim GNU / Linux +clipboardがついていない場合(vim --versionで確認できます)は、vimをコンパイルしましょう。コンパイル楽しい!! やったこと ターミナル上のCUIのVimでyankした時、それがクリップボードに入るようにした。…

neocomplete用のjQueryの辞書を作った

辞書の使い方とかはneocomplete用にRubyの辞書を作った(るりま編) - pockestrapを見れば良いと思います。 Script require 'open-uri' require 'json' url_base = 'https://api.github.com' owner = 'jquery' repo = 'api.jquery.com' ep_base = "#{url_base}…

neocomplete用にRubyの辞書を作った(るりま編)

vim用にrubyの辞書が欲しかったので用意した | blog: takahiro okumura などを読んでRubyの辞書を作りたくなりました。 しかし、先ほどのコードはrbenv前提であり私はrbenvを使っていないため、るりまから辞書を作成しました。 「辞書」とは 単語を改行区切…

TweetVim で mikutter の様にふぁぼ通知を鳴らす

hookがあるのでそれを使ってやれば実現できます。 TweetVimのドキュメントを見てみると、このように記述があります。 HOOKS *tweetvim-hooks* You can use hooks by tweetvim#hook#add(name, func_name). notify_fav favorite event in userstraem write_scr…

Arch Linuxで最新のVimをパッケージ化した

最新のVimを使いたかったのですがPacmanでは最新でないVimしかなかったため、自分で最新のものをパッケージにしました。 PKGBUILD を落とす まずは、PKGBUILDが必要です。yaourtかabsで落としてきましょう。 $ yaourt -G vim $ cd vim # もしくは $ sudo abs…

:nohlsearch に少しハマった

結論だけ言うと、「:nohlsearch はautocmdとユーザー定義関数内で使用できない」 私はvim-watchdogsというシンタックスチェックプラグインを愛用しています。 また、vim-hierというプラグインを使って、エラー箇所をハイライトしています。 そして、nnoremap <Esc><Esc></esc></esc>…

Vimで標準入力から読み込まれているかを判別する

数日悩んだのでメモ。 vim は、標準入力をバッファとして読み込むことが出来ます。 $ echo 'hoge' | vim - のように-をつけて起動すると、標準入力がバッファとして読み込まれます。 上の例では、バッファにhogeが入った状態でVimが起動します。 この標準入…