Humanity

Edit the world by your favorite way

Vim

git diff の出力を畳む Ex コマンド

Vim

foldmethod=expr は重いし filetype=diff とかじゃない捨てバッファ(例えば :r!git diff foo...bar して出力を取り込んだバッファ)でもサクッと畳みたいので作った。 :FoldDiff すると現在バッファの git diff の出力を畳みます。 command! FoldDiff call …

空白をスキップして縦に移動するマッピングを提供する Vim プラグイン作りました

Vim

github.com 空白をスキップして縦移動するマッピングを提供するシンプルなプラグインを作りました。 言葉で説明すると分かりにくいと思うのでそれぞれスクリーンショットを貼ります。 non-blank mappings 関数定義・if・while などブロック・ステートメント…

ターミナルウィンドウの出力があると通知する Vim プラグイン作った (macOS/Windows/WSL/Linux, Vim 8.1+/Neovim 0.5+ 対応)

Vim

github.com ターミナルウィンドウで 時間のかかるコマンドを実行する時 webpack とか watch する系のコマンドを実行する時 テストを実行する時 そんな時に通知を出せると便利なので作りました。 ターミナルウィンドウで :NotifyChanged コマンドを実行すると…

caw.vim v1.1 をリリースしました

Vim

caw.vim v1.1 をリリースしました。・多数のバグ修正・JSX/TSX のサポート・3gcc で3行コメントアウト可能にhttps://t.co/Yi04Tc89Ah— tyru (@_tyru_) 2020年3月24日 そういえば Twitter でつぶやいてばっかでブログにしてなかったけど、リリース情報こそブ…

Vim script で flatmap, fold

Vim

htsign.hateblo.jp 上記記事を見てブログに書き忘れてたことを思い出した。 以前からちょくちょく引き合いに出してたものの、Vim script での flatmap, fold 実装。 おそらく :for 使うより map() とか組み込み関数使う方が速いです。*1 gist.github.com ま…

セッション管理プラグインを作った結果あまりうまく運用できてない

Vim

github.com セッションの保存・復元 (プロジェクト等) 異常終了時のセッションの復元 を目的としたセッション管理プラグインを作った。 コミットログ見れば分かるけど深夜の勢いで書いたので雑な部分もあるけど普通に使えるはず。 下の例と合わせて読み取っ…

年末年始に送った PR や作った Vim の terminal 関連プラグインと振り返りとか

Vim

なんだかんだこういう振り返り記事を書いたの初めてかもしれません。 最近やったことを書く機会があって書き出したらいい感じに振り返り記事になったので丁度よかった(?)。 なぜ terminal 関連のプラグインのみなのかというと今自分の中で一番熱いからで…

Vim の terminal でも : や <Esc> でノーマルモードに移りたい。けど完全に潰したくはない

Vim

そんな方のための Hack をふと某 slack に公開したらウケが良かったのでブログに書いておきます。 一言で言うと 「シェルのプロンプトが空の場合は他のバッファと同じように振舞う」ようにしたら便利だった ついでにプラグイン化した という話です。 前置き …

Vim の terminal window でサッと別のタブに移動したい

Vim

※本記事は Vim Advent Calendar の記事ではありません 忙しいと文章書くの面倒になりますね。箇条書きでつらつらと書きます。 タブ移動 (gt, gT) は terminal window ではフォーカスを奪われるので使えない terminal window でも普通のバッファでも使えるよ…

tyru/sync-term-cwd.vim をちょっと便利にした

Vim

tyru.hatenablog.com ↑の記事で紹介した tyru/sync-term-cwd.vim に :SyncTermCwdConditionalCd を追加しました。 この長ったらしい Ex コマンドはグローバル変数 g:synctermcwd_cd_command に指定する使用例を想定しています。 let g:synctermcwd_cd_comman…

macOS Mojave で Vim のソースコード (C 言語) のデバッグをする (clang, lldb)

C Vim

もし lldb でも良いならそっちを使ったほうが良いです.leak detector は LLVM の msan とか使ってるのが最近は多い気がします— ドッグ (@Linda_pp) July 3, 2019 src/Makefile の CC, CFLAGS を変更 diff --git a/src/Makefile b/src/Makefile index 9c4a42…

macOS で Vim をソースコードからインストールする備忘録 (with LuaJIT)

--enable-lua しなければソースコードからもスルっと入ったけど +lua 付きがほしかった *1 ので。 ソースコードからインストールする ここら辺見て関連しそうなもの入れた。 余計なもの入ってたらすいません。 あと gpm 入れて再ビルドしてみたけど -mouse_g…

Vim で無名バッファを復元する方法

Vim

TL;DR スワップファイルを残したディレクトリに :cd して、 (:new 等で)無名バッファを開き、 :recover を実行する。 説明 デフォルトだと Vim はそのファイルを開いた時点に復元するかどうかのダイアログを表示すると思います。 というか自分はスワップフ…

Vim の端末ウィンドウから別のウィンドウに移る時にコマンドを実行中にしておく

Vim

tyru.hatenablog.com を書いた後 vimrc を整理していたら書きかけの設定があったのでこれも公開。 autocmd vimrc の vimrc は適当に変えてください(分からない人はそのままでもいいです)。 " Enter Terminal-Job mode when leaving terminal window autocm…

Vim で端末ウィンドウを複製する

Vim

Vim で端末ウィンドウを使ってるとスクロールされた出力を見たくなる時があると思います。 ただシェルでコマンド実行中なので、 <C-w>N すると出力も止まってしまう。なるべくなら出力を止めたくないと思います(たぶん)。 そういう時は以下を vimrc に貼り付け</c-w>…

quickrun.vim でバッファの Prolog コードを実行できるようにした

そういう Pull Request を送ってマージされました。 github.com 述語が多くなってくると REPL で確認するのも面倒になってくるかと思いますが、 そういう時はおもむろに新しいバッファを作って :setf prolog して :QuickRun すると実行した結果が別バッファ…

Windows Subsystem Linux で動かしてる端末版 Vim のバッファの内容をクリップボードにコピーしたい

ので書いた。 さっと書いた雑クオリティなので GitHub - kana/vim-fakeclip: Vim plugin: Provide pseudo "clipboard" registers 使うのが良いんだと思います。 help ちらっと見たら WSL にも対応してるっぽいので、OS 間で統一して扱いたいとかいう人はそち…

VSCodeVim に次送ろうと思ってる PR リスト

tyru.hatenablog.com 送ったものはマージされたものの、まだやり残した事がいくつかあって、 p コマンドのリファクタリング パフォーマンス改善 漢字仮名交じり文の上で w, b, e, ge を押した時に漢字、ひらがな、カタカナの区切りで止まるようにする 1 はす…

VSCode の Vim 拡張 (VSCodeVim) をより Vim っぽくする PR を送った

随時追加中。送った PR はこちら。 Pull Requests · VSCodeVim/Vim · GitHub あんまり一度に送りすぎてもアレなので温存してるブランチもまだあります… 送った PR の内容 注:まだマージされてない PR もあります。 全てマージされました。次のリリースが楽…

Go で struct をそのまま公開するのはあんまり良くないんじゃないか

と思った。理由は以下の通り。 ずっと地味に困ってた事があって、ある struct をコンストラクタ的な関数 (例えば Foo って struct だったら NewFoo って名前の関数) 経由で生成したい、と思っても、 Go の言語仕様上普通にこんな感じで struct を作れてしま…

neosnippet でプレースホルダがある場合は展開よりジャンプを優先させる

Vim

今週の Vim の細道見てて neosnippet で困った挙動があるのを思い出して、重い腰上げて help 見て設定したら解消した。 <Tab> にこんな感じで割り当ててたけど imap <expr> <Tab> neosnippet#expandable_or_jumpable() ? \ "\<Plug>(neosnippet_expand_or_jump)" : "\<Tab>" smap <expr> <Tab> neos</tab></expr></tab></plug></tab></expr></tab>…

ロガー用 vital モジュールを作った (ただし Vim 8 専用)

Vim

まだ vim-jp/vital.vim には PR してないけど十分使える (使えてる)。 https://github.com/tyru/nesk.vim/blob/0775e7d6fb3502ce52b64911d84b19cde32825aa/autoload/vital/__nesk__/Nesk/Log.vim https://github.com/tyru/nesk.vim/tree/0775e7d6fb3502ce52b…

最近の Vim で入った面白 Vim script 関数

Vim

:h eval.txt を眺めてたら結構色々関数追加されてるなーと思ったのでまとめてみた。 (追記: 結構古くからある関数も交じってた…) 基本的に詳細な仕様は書くつもりはありません (古くなるかもしれないし help 見た方が正確)。 wordcount() g<C-g> を押すと現在のバ</c-g>…

Vim script で Chrome Debugging Protocol を扱うライブラリを作りたい

Vim

github.com タイトルの通りなのですが、Chrome Debugging Protocol (以下 CDP) を扱うためには、 CDP は WebSocket ベースなので WebSocket を実装しなきゃならない バイト列をパースする際にヌルバイトを Vim では扱えない となって悩んでいます。 ヌルバイ…

netupvim で Windows でも最新の Vim を追いかけよう

これは Vim Advent Calendar 2017 その2 の21日目の記事です。 github.com 内容は上記リポジトリの README.md のパクリです。 netupvim 便利だよ!って事が言いたかった。 序文 Windows で Vim を使っているとふと最新の Vim を欲しい時があります。 そんな…

Vim 8 時代のがんばらないプラグイン管理のすすめ

Vim

これは Vim Advent Calendar 2017 の20日目の記事です。 皆さん Vim しておられるでしょうか。 Yes と答えた方、プラグインマネージャーは使っていますか? 巷では Vim のプラグイン管理にはプラグインマネージャーを入れる必要があるかのような勢いで「まず…

:terminal コマンドが使える Windows 版 Vim の配布状況 (2017/09/15 時点)

Vim

tyru.hatenablog.com この記事を書いた後 Windows でも :terminal コマンドが使える Vim が配布されるようになったのでその配布状況をメモしておく。 Vim バイナリの配布 URL 一覧 まず初めに Vim のバイナリへのリンク集を vim-jp では提供しているので貼っ…

open-browser.vim で Windows Subsystem for Linux 上の Vim から URL 開けるようになった

Vim

github.com これで WSL 上であろうとなかろうと意識せず URL を開けるはずです。 最近は WSL の Vim ばっかり使ってるので個人的にうれしい機能追加です(追加したの自分だけど)。 WSL は Windows の世界と分断されてると思い込んでたのですが、 /mnt で Wi…

Vim の :terminal がもたらすもの

Vim

追記 本記事を書いた後いろいろ状況が変わって :terminal コマンドが使える Vim が配布されるようになったので、 とりあえず現時点(2017/09/15)での状況を書きました。 tyru.hatenablog.com 序文 今絶賛開発中の Vim の :terminal コマンドについて書こう…

Vim script に ECMAScript の Observable がほしい

タイトルは前記事からの流用。 最近 Vim script で Java 8 の Stream API を実装する、ということをしている。 tyru.hatenablog.com github.com Vim 8 でも lambda が入ったので、メソッドチェインでどんどん処理を繋げるスタイルの書き方ができると嬉しいと…