Text
WSL の git-credential-manager
WSL で git-credential-manager を設定するというと Windows 版 git に付属してくる git-credential-manager.exe をWSLから利用するみたいな記事が見つかるところ、gpg と pass と組み合わせるLinux版の方を導入していた。
WSLg が有効で、wayland/xwayland 関連のパッケージが未導入で DISPLAY 環境変数が設定済みだと謎エラーが出てしまうので DISPLAY を消して利用する。
ミニマムに WSLgの wayland/xwayland を導入するのに最低限必要なパッケージを知りたい
0 notes
Text
if_python3 (difflib) で diff をとるプラグイン
普段から ynkdir/vimdiff は便利に使わせてもらっているのですが、難点があって、デカいソースコードのdiffとかを取ろうとするとかなり待たないといけない事があります。
Vim script で diff の計算をしているため、しかたのないところではあるのですが、時折、コーヒー(インスタントですよ念のため)をいれて席まで戻ってきてもまだ計算中、という��とがしばしばあったため、乗り換えを図りました。
候補は lambdalisue/vim-unified-diff で、git diff のpatience (もしくは histogram) を利用してdiffができれば、と思ったのですが、どうも比較対象のテキスト内に ^L みたいなコントロールコードが混じっていると、ちゃんとdiffをとってくれないようで、手元の msysgit のレベル (コマンドラインで git diff ...) で既にダメっぽくって、これまた diff が取れない場面があるということで、やむなく見送りに。
仕方がないので作るとして、外部コマンドが不要なもの(vimprocもできれば使いたくない)で…となると、手元でビルドした Vim で有効になっている if_py3 もしくは if_lua のみしか選択肢がありません。
lua は、外部ライブラリがない(LuaDist/diffはあるにあるけど、所望のものではない)し、イチからdiff を書くのもつらい感じだったので、if_py3 経由で、python3 の difflib を利用して ed 形式の diff を吐くようなプラグインを作りました。
https://github.com/sgur/vim-py3diff
使い方は、vimdiff 等と同様に、プラグインをインストール後にdiffexprを設定するだけです。
set diffexpr=py3diff#diffexpr()
だいたい、Vimscriptオンリー版に比べて、x5~x10くらいは速い感じです(たぶん python コードをうまく書けばもっと速くなる���ズ)。
1 note
·
View note
Text
Yet Another な EditorConfig プラグイン (完全な yak shaving)
最近(といってもちょっと前)のこと、同時に2つのプロジェクトのコードを触ることになったけど、それぞれのコードのインデントの規約が違っていてちょっと困ったことになってました。
Visual Studio 2013 以降であれば、ソリューション別にインデント設定できるとの話も聞きましたが、あいにく、それらのプロジェクトでは、Visual Studio 2012を使っていたため、そういうことはできません。
そこで、EditorConfig拡張を使って、プロジェクト毎にインデント設定を切り替えて作業をしました。
今まで、Vimで作業をする場合には、thinca/vim-localrcを使ってインデント等は設定していましたが、EditorConfigも使うとなると、設定ファイルを2つ(.local.vimrc と .editorconfig)も作らないといけなくなり、面倒なので、Vimの方もEditorConfigを導入しようとしました。
が、Vim用のEditorConfigプラグインが、とってもいただけないシロモノで、そんなに大した規模ではないのにPythonインタフェースもしくはPythonのコマンドのどちらかが必須で、しかもpython3は未対応といった有様。
こういう、起動時からロードしてくるタイプのプラグインはできるだけロード時間のかからないようにしたいところに、これはいただけない。
そんなこんなで、Vimscriptのみで書き直しました。
https://github.com/sgur/vim-editorconfig
使い方は、オフィシャルのものとほぼ同じで、.editorconfigが存在しているディレクトリ以下のファイルを開くと、設定が反映されるだけです。
一応、root = trueが指定された.editorconfig のあるディレクトリにlcdするオプションはつけました(.local.vimrcに lcd <sfile>:hっていつも書いてたので)。
サポートしているプロパティも、ベーシックなもののみです。Domain-Specific propertiesは、特にアイデアが湧かなかったので、何もしてません。
もし、複数のプロジェクト・エディタ間でインデント設定等を共用したい、といった場合があれば、お試しください。
0 notes
Text
自動でflake8するプラグイン作った
vim で flake8 するプラグインといえば、 vim-flake8やflake8-vimなどがありますが:
書き方が古くさい (vim-flake8)
保存時にシンタックスチェックしてくれなくて、自分で設定を書く必要がある (vim-flake8)
if_python にしか対応していないので python3 のとき困る (flake8-vim)
※ 2015/03/02 注記: いま確認したら flake8-vim は python3 も対応していました。
など問題がありました。
そこで、完全にyak shaving な領域ではありますが、 Yet Another なflake8プラグインを作ることにしました。
vim-f8
メリットは
if_pythonに依存してないので python2 でも python3 でも動く
compiler flake8 を作ったので :make % できる
&errorformat が若干しっかりしている
くらいかなー。実はあんまりメリットないかも。
やってる事は vim-flake8 あたりとかわらないし、flake8-vimはif_python使って非同期にチェックしてるみたいなので、不便がなければそれ使えばいいと思います。
0 notes
Text
カーソル下をハイライトする
追記: 祝!再公開!!機能もパワーアップしているようでめでたい。
カーソルを移動するたびにカーソル下の単語をハイライトするあれをプラグイン化した
osyo-manga/vim-brightest
以前、osyo-mangaさんがカーソル下の単語を常にハイライトするプラグインを公開されていたのですが、名前の問題か、公開をとりやめてしまわれたみたいなので、代替を作ってみました。
1ファイルだけなので、再公開までの繋ぎ、もしくは、軽量なものが欲しい片はどうぞ。
0 notes
Text
windows版のcscope.exeを使うときはsort.exeのパスに気をつける
vim等からC/C++のソースコードリーディングをする場合、cscopeがとても便利です。
ctags のように関数等の定義位置にジャンプするだけでなく、
ある関数がcallしている関数の定義場所へのジャンプ
ある関数に対して、その関数をcallしている場所へのジャンプ
あるファイルがインクルードしているファイルへのジャンプ
などの機能があり、コードリーディングをする上で、なくてはならないものになっています。
利用方法としては、CUIのインタフェースで、インタラクティブに使う方法と、 DBを作成しておいて、Vim等から使う、2種類があります。
Vimから利用する場合は、チュートリアル が参考になります。
簡単に説明すると、事前に cscope -bqR * 等で、 cscope.out (DBファイル)を生成しておき(-qオプションを利用すると、転置インデックスを生成し、検索を高速にできます)、Vimから :cs[cope] add コマンドで、DBファイルへ接続します。
その後、:cs find コマンドで、検索します。
cscope 自体は、Linuxの場合であれば、パッケージマネージャの類でインストールが可能でしょうし、Windowsでも cscope-win32 からバイナリを入手可能で��。
このようにWindowsでも使えて便利なcscopeですが、Windowsで使う場合、ひとつ落とし穴があります。
それは、cscope.exe が内部でsort.exeを呼んでいる、ということです。
カンの鋭い方にはピンと来たかもしれませんが、cscopeはLinux由来なので、GNU版の引数指定をして、sort.exeを呼んでしまいますが、当然Windowsのsortは引数の体系が全く違うので、エラーになってしまいます。
そのため、cscope.exe で cscope.out を生成しようとすると、
入力ファイルが 2 度指定されました。
のようなエラーが出力されてしまいます。
これを防ぐためにはgnuwin32のcoreutilsや、UnxUtilsから、sort.exeのバイナリを取得してきて、%PATH%中で、c:\windows\system32 より早い場所に起く必要があります。WIndowsの環境変数で設定する場合はシステム環境変数PATHの先頭に追加するか、NYAOSやPowerShellを利用している場合は、各初期化ファイルにて$PATHに追加してやるのがよいでしょう。
0 notes
Text
codic-vim を使ってスペル補完をするとかなり捗る
codic というサービスがあります。
プログラムのクラス名・メソッド名や変数名の名前をつけるとき、適切な単語が見つからなくて悩んだりすること、あると思います。
そんなとき、codicを利用すれば、類語辞典のように、適切な英単語を見つけることができます。
vimから利用する場合、codic-vim(紹介記事)を利用するのがよいでしょう。
:Codic 実行
等とすると、以下のように候補を知ることができます。

これだけでもかなり便利なのですが、今回、そこからさらに一歩踏みこんで、codic-vimを利用して入力補完の機能を作りました。
https://gist.github.com/sgur/4e1cc8e93798b8fe9621
見ての通り、codic-vimのcodic#search()関数を利用して、補完機能に仕立てています(故に、codic-vimがインストールされていることが前提です)。
英単語を入力しかけてから補完を開始すると、英単語の候補を表示しますし、

日本語を入力してから補完を開始すると、関連する英単語の候補を挙げてくれます。

僕の場合、以下のように、<C-x><C-t>にマップして、シソーラス補完のかわりに使っています。
inoremap <silent> <C-x><C-t> <C-R>=<SID>codic_complete()<CR>
45 notes
·
View notes
Text
Vim で実現する例のバックアップ管理
元ネタはこれ。
面倒くさくならないように履歴書にドラクエのサブタイトル付けてる pic.twitter.com/tnEZl9Hert
— マツコ LV.52 (@TN_matuko_) 2014, 6月 11
サブタイトル、手動でつけるとか面倒すぎます。
こういうのは、Vimにやってもらいましょう。
https://github.com/sgur/vim-bexsub
詳しくは、READMEを見てもらえばすぐわかると思いますが、backupext に某サブタイトルをつけて、自動的に複数バックアップをとっておくためのものです。
オマケとして、某信長の野望風のタイトル集もつけてみました。
let g:bexsub_theme = 'yabou'

べんり。
1 note
·
View note
Quote
If they want to use a different editor, let them. If they want to try vim, help them and steal their arrow keys.
http://www.reddit.com/r/vim/comments/25sgig/how_do_you_convince_other_people_to_use_vim/
0 notes
Text
とんでもないバッテリー警告ダイアログが出る問題を解消した
備忘録その2。
これも、いつのタイミングからかわからないのだが、ログオン後しばらくしていると、
このリチャージャブルバッテリパックは使用できないか、正しく装着されていない可能性があります。 [OK]ボタンを押すと本機は休止状態に移行します。
というダイアログが出るようになった。
このダイアログには「OK」ボタンがついていて、このボタンをOKすると、そのまま休止状態に移行してしまう。
何度かバッテリーのつけはずしをしてみたのだが、一向に改善しないため、とりあえず、警告を出すプロセスを起動しないようにしていた。
ところが、VAIOのサポートサイトを漁っていたところ、Windows 8へアップグレード中にバッテリーについてのエラーメッセージが表示されるというページをみつけ、もしやと思ってデバイスマネージャを除いてみると、案の定、"ヒューマン インターフェース デバイス"には、"Sony Firmware Extension Parser Device"などなく、"不明なデバイス"が表示されていた。
上記ページを参考にSony Firmware Extension Parser Device のドライバをインストールし、再起動したところ、警告が出ることもなく、正常に動作している模様。いったいどこで消えていたんだろう。
1 note
·
View note
Text
Windows 8 になって壊れた VAIO SA の Switchable Graphics を直した
備忘録。
最近、 Windows 8 にアップデートした。
基本的には、Sonyのサイト に載ってる通りに、出荷状態に リカバリ→Vaio Update→Windows8インストール→Vaio Update でよかったのだけど、最近、使っていて、ひとつ不具合があるのに気付いた。
自分の使っている VAIO SA は、Intel HD Graphics 3000 と AMD Radeon HD 6630M を切り替えられるようになっているのだが、どうも Radeon 側のドライバインストールがうまくいっていないみたいで、デスクトップメニューからCatalyst Control Centerを開こうとしても、異常終了してしまうようになっていた。
おかげで、dxdiagの診断がコケるわ、STEAMの起動にコケるわ、OpenCL使うアプリが起動しないわで、なかなか不便になってしまった。
で、とりあえず、ドライバの再インストールをするべく、アップデータをダウンロードして実行してみたのだが、これは改善せず。
次に、コントロールパネルからドライバをアンインストールして、ドライバを再インストールしてみたが、これも改善せず。
最終手段で、AMD Clean Uninstall Utilityをダウンロードしてきて、セーフモードからこれを実行して、再起動後にドライバをインストールしたところ、正常に動作するようになった。
1 note
·
View note
Text
ビジュアル選択後のrによる置換のアレを改善する
Vimで行える操作の中に{Visual}r{char}という処理があります。
これは、
ビジュアル選択されたテキストを全て {char} に置き換える。
という意味です。
操作としては、vやVや<C-v>でビジュアル選択した後にrを押し、その後、置換したい任意のキーを押します。
これは、MarkdownやReStructuredTextでセクションを記述するのに便利で、
Some Section Header
というような、セクションにしたい文字列を書いた後、1行下にコピーし、
Some Section Header Some Section Header
2行目をビジュアル選択しておき、r=と入力すると
Some Section Header ===================
のように置き換えることができます。
このように便利なrによる置換なのですが、選択した文字列の文字幅は考慮せず、文字数のみで置換をするため、日本語等のマルチバイト文字列を含む場合、上記のような意図した動作にならず、
セクション1 ======
となってしまい、見た目的に残念です(一応Markdownではヘッダーと認識してくれるようですが)。
これを解決するには、次に挙げる方法があります。
<C-v>での矩形ビジュアル選択を利用する
vやVではなく、<C-v>による矩形選択をしておいて、rで置換すれば文字幅を考慮して置換してくれるのですが、本来vやVで選択すべきものに対して<C-v>で選択するのは億劫です。
vやVでの選択後、矩形ビジュアル選択モードに変更する
vやVで選択した状態で<C-v>を押すと、選択モードを矩形ビジュアル選択状態に変更できるので、その後でr<char>で問題なく置換することができます。
ただ、行選択をした後で気づいて<C-v>で矩形選択状態に切り替えたりは、なかなかできず、不便です。
vim-niceblock を利用する
kanaさんが作成された、vim-niceblockというプラグインがあります。
Vimのビジュアル選択の際の不便な点を解決してくれる便利なプラグインで、このプラグインを導入すると、vやVでビジュアル選択した状態でIやAを入力した場合でも、ちゃんと行頭や行末に文字列を挿入してくれるようになります。
このプラグインを利用し、.vimrcに以下のように設定((A)か(B)どちらかでいいです)しておくと、vやVでビジュアル選択した後にrを押した場合でも、置換前と同じ表示幅で置換を行ってくれるようになります。
2014-07-28 gistを更新
0 notes
Quote
585 :風と木の名無しさん:2011/11/08(火) 02:31:51.31 ID:v8TEX yh0 嫌なことあったとき「ムカつく!」となるより 「やれやれだぜ…」で済ませる方が気が楽だと気づいた
嫌なことあったとき: 喪ゲ女 (via eternityscape)
3K notes
·
View notes
Text
VimにWindows Aeroのすりガラス効果を適用する
Windows8 になってすっかり廃止されていましたが、Windows Vista/7 には Aero Glass という、すりガラス効果を与える機能があります。
Windows で通常に用いられる背景の半透明効果はただ背景を透過するだけで、透過した先のテキストをぼかしたりしてくれるわけではないので、わりと見づらかったりします。
ところで、Mac OSにはiTerm2というターミナルエミュレータがあり、その半透明効果として、通常の半透明の他に背景にブラーをかけることができ、かっこよさと見やすさを両立しています。
この、ブラーつきの半透明をWindowsでも再現できないかと考えていたところ、Aero効果のチューニングを行えば同等の表示にすることができそうなので、ではgVimのウィンドウにも、ということで、プラグインを書いてみました。
Vimには、制限つきではありますが、DLLでエキスポートされている関数を呼び出す機能が存在しているので (libcall)、それを利用して、DLL内からWindowsのDWM操作系のAPIコールを呼んでいます。
https://github.com/sgur/vim-aeroglass
Aero Glass を適用したgVimは、↓の様な表示になります。

ただし、前提がいろいろあって、次のような工夫をしてやる必要があります。
background=dark なカラースキームじゃないとうまく表示されない
標準の色設定だと Aero Glass の効果が強すぎるので、
Windowsの「ウインドウ色の設定」で、 "色の濃度"を濃いめに設定するか、
AeroTunerというソフトウェアで、"Blur Balance"と"Aero Stripes"を弱める。
0 notes
Text
vimの番号付きレジスタをちょっとだけ使いやすくする
Vimには0から 9までの番号付きレジスタがあります。
"0のレジスタには、コピー(ヤンク)された文字列が順次保存されています。
いっぽう、"1~"9までのレジスタには、 削除や変更したテキストが順番に保存されていきます。 何度も削除・変更していると、そのテキストがキューのように保存されているので、ちょっとした履歴として利用できます。
ただし、"1~"9には難点もあって、それは、「削除や変更したテキストが1行に満たない場合は、この番号つきレジスタに保存されない」ということです。
この場合、かわりに、"-という、小削除用レジスタに保存されるのですが、履歴もとれず、ちょっと不便です。
まぁ、1行に満たないような内容は、わざわざペーストするよりも書いてしまった方が速いので、とっておくだけ無駄、ということなんでしょうが、1行未満でも、意外と 残しておきたくなったりします。
そこで、以下のような設定���.vimrcに書いておくことで、1行に満たない修正内容も番号つきレジスタに保存するようになります。
1 note
·
View note
Quote
ここがパナソニック(のカメラづくり)と決定的に違う点だ。そういう意味でいえばパナソニックのカメラには夢も希望も未来も、ぼくには感じられない。パナソニックのカメラは使うたびに、「カメラなんてそこそこ写りゃイイんだ、夢? 写真文化? ばかなこと言うんじゃないよ、ガキじゃあるまいし…」、という作り手側の冷めた声が聞こえてきて悲しくなる。
Photo of the Day
0 notes