とりあえず雑多に。
1. msys2 での環境を再構築した
僕の場合、本格的に Linux 環境が必要になる場合には NixOS on Hyper-V を使ってるんですが、 なんちゃって UNIX-like 環境で十分な場合だったり、あるいは、GVim (+kaoriya) で必要になるコマンドラインツールを揃える、という目的で、今日、MSYS2 の環境を真面目に構築していたりしました。
それで、一応 Shell 環境としては、
zsh
+tmux
+mintty
と言う組み合わせなんですが、mintty
は最新の Version を使う様に時前ビルドをしていて、
かつ、tmux
は wcwidith-cjk
の wcwidth.c
を tmux
の utf8.c
に丸っと移植する、
っという荒技とか使って、Ambiguous Width と NERDFont の Private Area の Symbols が 2 で表示される環境を作ってます。
なお、一応僕が使ってる PKGBUILD
の定義を貼っておくと、大体こんな感じ:
# Maintainer: Alexey Pavlov <alexpux@gmail.com> pkgname=tmux-git pkgver=2.6.64.g6f3b6c8d pkgrel=1 pkgdesc='A terminal multiplexer' url='https://tmux.github.io/' arch=('i686' 'x86_64') license=('BSD') provides=('tmux') conflicts=('tmux') depends=('ncurses' 'libevent' 'wcwidth-cjk') makedepends=('git' 'ncurses-devel' 'libevent-devel') source=("${pkgname}"::'git+https://github.com/tmux/tmux.git' https://raw.githubusercontent.com/Alexpux/MSYS2-packages/master/tmux-git/msys-platform.patch https://raw.githubusercontent.com/Alexpux/MSYS2-packages/master/tmux-git/no-check-dirs-permission.patch https://gist.githubusercontent.com/waltarix/1399751/raw/4db15139bcbf2d36993ef700b43a69eb0392aaf2/tmux-do-not-combine-utf8.patch https://gist.githubusercontent.com/waltarix/1399751/raw/4db15139bcbf2d36993ef700b43a69eb0392aaf2/tmux-pane-border-ascii.patch https://raw.githubusercontent.com/fumiyas/wcwidth-cjk/master/wcwidth.c ) sha256sums=('SKIP' 'cf7e0f642d43fc97f7c55be41c693cceab5c891f81fcee687e918075e55cd533' '8f1938c9bcb99fba5441e11379a193c17eee582a03c04f1bde8089d58a84f44f' '55476ee1a324abf796b4595d92ed64af06b030143d3663b2e5dfd7865319f264' '9256114cd818e7070d27e44a725f28169ae1264587a65fd49f0c8f51233423e2' '9cb413f922779f63d2bc81c125a7c299ec186575c98bc8d971b15f44e5ebfed1') pkgver() { cd "${srcdir}"/$pkgname git describe --tags | sed -e 's|-|.|g' -e 's|v||g' } prepare() { cd "${srcdir}"/$pkgname patch -p1 -i "${srcdir}"/msys-platform.patch patch -p0 -i "${srcdir}"/no-check-dirs-permission.patch patch -p1 -i "${srcdir}"/tmux-do-not-combine-utf8.patch patch -p1 -i "${srcdir}"/tmux-pane-border-ascii.patch cp osdep-cygwin.c osdep-msys.c mv utf8.c utf8.c.orig cat "${srcdir}"/wcwidth.c >utf8.c cat utf8.c.orig >>utf8.c rm utf8.c.orig msg2 "Running autogen.sh" ./autogen.sh } build() { cd "${srcdir}"/$pkgname ./configure \ --disable-dependency-tracking \ --build=x86_64-pc-msys \ --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ CPPFLAGS="${CPPFLAGS} -I/usr/include/ncursesw -U_XOPEN_SOURCE" \ LDFLAGS="${LDFLAGS} -lwcwidth-cjk" make } package() { cd "${srcdir}"/$pkgname make DESTDIR="${pkgdir}" install install -d "${pkgdir}"/usr/share/licenses/tmux install -m 644 COPYING "${pkgdir}"/usr/share/licenses/tmux #install -d "${pkgdir}"/usr/share/tmux #install -m 644 examples/* "${pkgdir}"/usr/share/tmux #install -d "${pkgdir}"/usr/share/vim/vimfiles/syntax #install -m 644 examples/tmux.vim "${pkgdir}"/usr/share/vim/vimfiles/syntax #install -d "${pkgdir}"/usr/share/bash-completion/completions/tmux #mv "${pkgdir}"/usr/share/tmux/bash_completion_tmux.sh "${pkgdir}"/usr/share/bash-completion/completions/tmux }
あと、これはライセンス的には MSYS2 のモノを継承するんで、再利用を考えている方は そっちを参照 してください。
2. MyricaM M の Fontlink を調整した
上記の MSYS2 の環境を整備したコトと関連して、僕が普段使っている Monospace Font の MyricaM M
に、
NERFFont の Glyph を表示するために Fontlink しているフォントを、
Symbols-1000-em Nerd Font Complete.ttf
に変更したりもしていました。
それで、この Symbols-1000-em Nerd Font Complete.ttf
ってなんじゃい? と言うと、これは、
NERDFont の Unicode Private Area に入ってる Symbol Fonts のみのフォント
で、 NERDFont のリポジトリのこの辺り から見付けてきて使っています。
まぁ、最初は Inconsolata Nerd Font
を ttf に変換して無理矢理使っていたのですが、
mintty
で Glyph が欠けて見た目がキモいことになるのを修正しようと試行錯誤して散々失敗した末に、
あ、NERDFont の Private area だけのフォントあるじゃん……
となったのは、ここだけの話です。はい。
3. blogsync + pt (the platinum searcher) とか使ってブログ記事の修正をしていた (WIP)
そして、これが本来の本題……と言うか、 MSYS2 の環境を整えていた理由の一つなんですが、
僕のこのブログ (カラクリサイクルの事です) 、あっちこっち引っ越したり、あるいは、
大量にあった他のブログを Merge したりして、結構過去の記事が壊れてたりするんで、
その辺りの修正を、blogsync
と pt
(the platinum searcher) とか色々使って修正していました。
それで、作業の流れとしては、
blogsync
で はてなブログから記事の Markdown を pullblogsync pull
が終わったら、一度 Git repository に commitpt
を使って問題のありそうな記事を検索するpt
での検索条件が定まったら shell のコマンド繋ぎで一括置換するgit status -s | cut -d' ' -f3
とかを繋いで一括でblogsync push
- 最終的に処理が終ったら変更を git commit
と言う感じでやってました。
なお、blogsync
と pt
と言うコマンドは、
という辺りのコマンドですね。はい
以上
と言うコトで、今日はそんな感じの事をしていました、と言う話でした。はい。