タグ

ブックマーク / thinca.hatenablog.com (12)

  • Vim 駅伝、始動します - 永遠に未完成

    これは Vim 駅伝 の 1 目の記事です。 Vim 駅伝は、駅伝でタスキを繋ぐように Vim に関する記事を参加者で順番に書いていくイベントです。 発端 2023 年 2 月 6 日、vim-jp 内で Advent Calendar が話題に上がりました。 Advent Calendar は 12 月の 1 日から 25 日まで毎日参加者がトピックに関する記事を書いていくイベントです。 この時期になると大量の Advent Calendar が立てられ、それぞれのトピックで毎日記事が公開されます。 12 月に集中して大量の記事が公開され、お祭りのようなイベントとして毎年盛り上がります。 同じテーマの Advent Calendar がいくつも併走していることに対して、私が以下のような発言をしました。 見ての通り、「わかる」のリアクションがたくさん付きました。同じように感じている人は結

    Vim 駅伝、始動します - 永遠に未完成
  • ユーザ定義コマンドで [range] が与えられたかどうかを調べる方法 - 永遠に未完成

    最近発見した方法。 基礎知識 ユーザ定義コマンドを定義する際、-range= 引数を使うことで :[range]Command のように [range] を受け取ることができるようになる。 指定の仕方で無指定の場合のデフォルト値が変わり、-range で現在行、-range=% でファイル全体、-range=N で N 行目になる。 入力された行番号は、<line1> <line2> で取れる。 :command -range=% RangeTest echo <line1> <line2> " バッファが10行だったとすると… :RangeTest => 1 10 :%RangeTest => 1 10 :2,5RangeTest => 2 5 問題点 ユーザが範囲を無指定で実行したのか、デフォルト値と同じ範囲を指定したのかどうかが判断できない。 解決策 以下のようにする。 functi

    ユーザ定義コマンドで [range] が与えられたかどうかを調べる方法 - 永遠に未完成
  • vimproc に Windows の DLL ダウンロード機能を入れた - 永遠に未完成

    tl;dr 以下を vimrc の最初の方に書く。 let g:vimproc#download_windows_dll = 1 vimproc は外部プロセスを非同期実行するのに必要な Vim のライブラリ。これを利用しているプラグインも結構ある。 これはとても便利なのだけど、動的ライブラリを別途ビルドする必要がある。 LinuxMac OS X なんかの環境では、標準でビルド環境が整備されているのもあり、ここで苦労することはあまりないと思う。しかし、Windows だと標準ではビルド環境がないため、ビルドすること自体が難しい。 kaoriya 版の Vim に同梱されている vimproc には DLL も含まれているので、これを利用している人もいるのではないだろうか。 ただ、最新版が使いたかったり、複数 OS で同じ設定を使いたいという理由でプラグインマネージャで vim

    vimproc に Windows の DLL ダウンロード機能を入れた - 永遠に未完成
  • Vim に追加された assert 系の関数の紹介 - 永遠に未完成

    この記事は Vim script Advent Calendar 2015 の 3 日目の記事です。 はじめに 先月末に、Vim の組み込み関数に assert 系の関数が追加されました。 今回はこの関数について紹介します。 歴史 割とどうでもいいので読み飛ばし可です。 2015-11-29 Vim 7.4.944 assertEqual()、assertTrue()、assertFalse() が追加されました。また、一緒に使うための v:errors も追加されました。 しかし、関数名について苦情が多く出ました。 Vim script の組み込み関数の多くは、単語の区切りがなく1単語です。例えば deepcopy() や matchlist() などです。 一部の関数には _ が使われており、has_key() や complete_add() があります。 そして中には大文字を含む関

    Vim に追加された assert 系の関数の紹介 - 永遠に未完成
  • Vim プラグインを Windows 環境でテストする - 永遠に未完成

    最近は専ら Vim script 向けテスティングフレームワーク themis.vim を作っているわけですが、テストを書いたら当然実行しないと意味がないわけです。 しかし手動でテストするのは面倒。そこで CI。設定しておけばリモートのリポジトリに push した時に自動でテストを走らせてくれます。 Linux 環境用の CI サービスはたくさんあるので、Travis CI なり drone.io なり自由に使えば良いと思います。便利。 しかし Vim はマルチプラットフォーム。当然 Windows 環境でもテストしたいですよね。と言うわけで Windows 環境で CI できるサービスと、そこで themis.vim を使ってテストを走らせる設定例を紹介します。全部無料でできます。 と言うわけで CI サービス AppVeyor を使います。 Continuous Integration

    Vim プラグインを Windows 環境でテストする - 永遠に未完成
  • 本当にキモい Vim script - 型チェック編 - 永遠に未完成

    Vim Advent Calendar 2013 の 64 日目の記事です。 Vim script の変数には以下の型があります。 Number (数値) String (文字列) Float (浮動小数点数) List (リスト) Dictionary (辞書) Funcref (関数参照) このうち、String <=> Number 間と Number <=> Float 間では暗黙の型変換が行われます。 ある値が入っている変数に対して、暗黙の型変換が行われない別の型の値を代入しようとするとエラーになります。 " :help sticky-type-checking から抜粋 :let l = "string" :let l = 44 " 型が文字列から数値に変わる :let l = [1, 2, 3] " エラー! l はまだ数値である :let l = 4.4 " 型が数値から浮

    本当にキモい Vim script - 型チェック編 - 永遠に未完成
    AmaiSaeta
    AmaiSaeta 2014/02/04
    キモい
  • ref.vim に webdict と言うソースを追加した - 永遠に未完成

    ref.vim に webdict と言うソースを追加した。取り急ぎ版。 これは設定した Web サイト(主に辞書サイトを想定)を扱うソース。 例えば以下のように設定する。 let g:ref_source_webdict_sites = { \ 'wikipedia:ja': 'http://ja.wikipedia.org/wiki/%s', \ } これで以下のように使用できる。 :Ref webdict wikipedia:ja Vim やっていることは、指定サイトをテキストブラウザで表示した結果をそのまま出しているだけだ。 辞書を使うともう少し細かく設定できる。 let g:ref_source_webdict_sites = { \ 'wiktionary': { \ 'url': 'http://ja.wiktionary.org/wiki/%s', \ 'keyword_e

    ref.vim に webdict と言うソースを追加した - 永遠に未完成
  • スクリプトローカルな関数を手軽に呼び出す - 永遠に未完成

    この記事は Vim Advent Calendar 2011 の 28 日目の代打です。 急遽代打をやることになった*1けどネタが浮かばなかったので、適当に vimrc の中から便利かもしれない関数を晒すことにします。 スクリプトローカルな関数を呼び出したい Vim script を書いてると、スクリプトローカルな関数をコマンドラインモードから直接呼び出して挙動を確認したくなること、ないですか? デバッグで呼び出したい 既存プラグインを拡張したくなった 中身覗くの大好き なんか知らんけど急に呼び出したくなった まあそれなりにシチュエーションはあるかと思います。あることにします。 Vim script ではがんばればスクリプトローカルな関数を呼び出せますが、正直いちいちがんばりたくないです。 スクリプトローカルな関数を呼び出す関数 私の vimrc から抜粋した以下の関数を vimrc に書

    スクリプトローカルな関数を手軽に呼び出す - 永遠に未完成
  • dumper.vim 改め prettyprint.vim 作った。 - 永遠に未完成

    2009/06/26 追記: id:ka-nacht さんのアドバイスを受けて名称を変更しました。変えるなら早いうちに、と言うことで。 普通の人はまず必要ないだろう prettyprint.vim と言うプラグインを作った。 http://github.com/thinca/vim-prettyprint/tree/master prettyprint.vim とは Vim の変数を整形して出力するためのプラグインです。 見た方が早い 例えば QuickRun.vim をインストールしているときに*1、 PP g:QuickRunConfig などとすると、 { '*': { 'exec': '%c %s %a', 'output_encode': '&fenc:&enc', 'shebang': 1, 'split': '{winwidth(0) * 2 < winheight(0) *

    dumper.vim 改め prettyprint.vim 作った。 - 永遠に未完成
  • 'cursorline' を必要な時にだけ有効にする - 永遠に未完成

    問題 Vim には 'cursorline' というオプションがある。これを有効にすると、現在カーソルがある行がハイライト表示される。カーソルの位置を見失いにくくなるので便利なオプションだ。 しかし、デメリットがないわけではない。 微妙に重い。 背景色や一部の色が上書きされるので、カーソルのある行の背景色が見えなくなる。例えば、コメント内の TODO や 'list' で表示される文字など。 そもそも 'cursorline' は常に必要だろうか。編集中にカーソルを見失うことはそうそうないはず。見失うのはちょっと席を外したり別の作業に移って、戻ってきた時だ。必要な時だけ有効にすることはできないだろうか。 解決方法 以下のような設定を行うと、しばらく手を離した時だけ 'cursorline' が有効になる。 augroup vimrc-auto-cursorline autocmd! aut

    'cursorline' を必要な時にだけ有効にする - 永遠に未完成
  • Vimスクリプト基礎文法最速マスター - 永遠に未完成

    流行ってるみたいなので遅ればせながら便乗。需要?何それおいしいの? Perl基礎文法最速マスター - サンプルコードによるPerl入門 - Perlプログラミングの基礎から応用まで Route 477(2010-01-25) PHP基礎文法最速マスター - Shin x blog Python基礎文法最速マスター - LazyLife@Diary VBA基礎文法最速マスター - いろいろ解析日記 Java基礎文法最速マスター - いろいろ解析日記 Bash基礎文法最速マスター - いろいろ解析日記 Haskell基礎文法最速マスター - think and error Brainf*ck基礎文法最速マスター - このブログは証明できない。 VBScript 基礎文法最速マスター - CX's VBScript Diary - VBScript グループ JavaScript基礎文法最速マス

    Vimスクリプト基礎文法最速マスター - 永遠に未完成
  • cmd.exe のコマンドラインの仕様を解析してみた - 永遠に未完成

    cmd.exe の引数の扱いがあまりにもカオスだったのでちょっと頑張って調べてみた。 来ならここは公式の資料に当たるのが正しいアプローチだと思うけど、どうしても公式の資料が見つからなかったので、色々試して推測してみることに。 断片的な資料は見付けたけど、完全じゃない。一応URL貼っておく。Windows Server 2003 のヘルプだけど、恐らくそんなに変わらないと思う。 コマンド シェルの概要 コマンド リダイレクト演算子を使用する なので、以下で述べる内容は間違いを含む可能性があります。というか正確さは一切保証されないのであしからず。 検証方法 以下のような引数をただ表示するだけの簡単な C のプログラムを用意した。仮に args.exe とでもしておく。 #include <stdio.h> int main(int argc, char const* argv[]) { in

    cmd.exe のコマンドラインの仕様を解析してみた - 永遠に未完成
    AmaiSaeta
    AmaiSaeta 2010/02/11
    1つめのコメント参照。確か『コマンドラインの内容をベタで取得するWin32API』と言うのがあった気がする。『パースを行わない』(=プログラム側で好きに出来る)というのもいっそ清々しいか。うーん、そうか……?
  • 1