タグ

VimScriptに関するryochackのブックマーク (13)

  • Introduce unit testing to Vim plugin development with vim-vspec - while (“im automaton”);

    Previously, I introduced how to “Use Travis CI for Vim plugin development”. CI requires well-developed test suites to achieve advantages. But I did not describe much about how to write unit tests for Vim plugin development in the article. If you try to write unit tests for a Vim plugin, you will be faced with problems like the following: Run a Vim process without any customization to reproduce sam

  • 選択範囲に一括ペーストできる fitpaste-vim 書いた

    ryochack
    ryochack 2012/09/05
    書いた。
  • ユーザ定義コマンドで [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] が与えられたかどうかを調べる方法 - 永遠に未完成
    ryochack
    ryochack 2012/07/11
    -range=について
  • vi compatibleオプションがONでも問題なく動作させる — 名無しのvim使い

    ユーザのvimエディタ環境のcompatibleオプションがONになっている場合、 vim特有の機能を利用したスクリプトは動作しない可能性がある。 そこで、次のようにユーザのオプションを一度ローカル変数に逃がして、 後でユーザの設定を戻してあげると、トラブルの種をつぶせる。 " ユーザの設定を変数に逃がす :let s:save_cpo = &cpo :set cpo&vim " ↓スクリプトの処理実行後 " ユーザの設定を元に戻す :let &cpo = s:save_cpo スクリプトで必要となる、他の処理も入れた最終的な形は、 次のようになる。 :if exists("g:loaded_hello") :finish :endif :let g:loaded_hello = 1 :let s:save_cpo = &cpo :set cpo&vim :function Hello()

    ryochack
    ryochack 2012/07/09
    みんなのプラグインの先頭にあるおまじないの意味。
  • 君にも書けるVimプラグイン

    テーマ Hello Worldを表示するだけの簡単なプラグイン Hello World自体は簡単 題はUIの提供方法とプラグイン固有の事情 実用的なものはこれからの皆さんに期待 予定 プラグインのファイル構成 ドキュメントを書く プラグインの雛形 関数の定義 Exコマンドの定義 Key mappingsの定義 autocmdの定義 その他いろいろ まとめ プラグインのファイル構成 (ふつうの)最小構成は以下の通り: doc/hello.txt ドキュメント :helpで読める plugin/hello.vim プラグイン体 中身はVim scriptの羅列 詳細: :help 'runtimepath'

    ryochack
    ryochack 2012/07/08
    Vimプラグイン作成Tips
  • Vimで選択範囲の文字数をカウントする - さわだのノート

    ライター/編集に必須の文字数チェック 原稿やブログの記事を書くときは、いつもVim(GVim)を使っています。 原稿をちょこちょこっと直したり、正規表現で文字列を修正したりといったことがスムーズにできるのがいいですね。 しかし、ライティングになくてはならない文字数のカウント機能がVimにはありません。また、論理行数も目視で数えないといけません。行数が多くなるとこれも面倒です。 ウェブの記事では、正確に文字数や行数を求められることはあまりありません。一方、1ページあたりのスペースが有限な書籍では、結構シビアに文字数を調整する必要があります。特に、フォーマットががちがちに決まったカタログものでは必須です。 Vimスクリプトだけど、Perlで文字数と行数を計算 以上のような理由で、選択範囲の文字数と論理行数を計算するVimスクリプトを書いてみることにしました。ただ、Vimスクリプト上で2バイト文

    Vimで選択範囲の文字数をカウントする - さわだのノート
    ryochack
    ryochack 2012/07/05
    選択範囲の行数をカウントする方法。vimのhelp見てもなかったので、参考になる。そうか、perlを使うのか
  • 文字列型 — 名無しのvim使い

    「"(ダブルクォート)」か「'(シングルクォート)」で囲むと、文字列として扱われる。 :echo "Hello World" "# => Hello World :echo 'Hello World' "# => Hello World 「"(ダブルクォート)」「'(シングルクォート)」では、文字列中の「\」の扱いが違う。 :echo "Hello\ World" "# => Hello World :echo 'Hello\ World' "# => Hello\ World 正規表現を含む文字列を扱う場合、「\」が頻出するので「'(シングルクォート)」を使うと良い。 :let str = 'Hello Hello Hello' :let found = match(str, '\( Hello\)\{2}', '') :echo found "# => 5 文字列の操作 文字列を連結す

    ryochack
    ryochack 2012/07/05
    文字列型”(ダブルクォート)と'(シングルクォート)の扱いの違い
  • 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スクリプト基礎文法最速マスター - 永遠に未完成
  • vital.vim のモジュールの作り方 - 永遠に未完成

    前回vital.vimの紹介をしたので、vital.vim のモジュールの作り方を解説します。暫定版です。 モジュールのソースコードのファイルを作る autoload/vital/__latest__/ 以下にモジュールのソースを置きます。vital はモジュールを階層で管理する予定ですが、モジュール名の命名規則はまだきちんと決まってません。とりあえずはいつでも移動できると高を括り、適当に置いてしまうとよいです。 コードを書く モジュールが提供するのは関数群です。モジュールの Vim スクリプトで定義されたスクリプトローカルな関数は全て、最終的には辞書+Funcrefの形で vital モジュールとして使えるようになります。つまり、vital モジュールを作るにはスクリプトローカルな関数を定義していくだけです! ただし、2つほどルールがあります。 _ で始まる関数はモジュール関数として使用

    vital.vim のモジュールの作り方 - 永遠に未完成
  • vital.vim 開発中 - 永遠に未完成

    現在、チームで vital.vim と言うのを開発しています。ある程度形になってきたので、簡単に紹介。 vital.vim とは? Vim プラグイン作者をサポートするための組み込み式のライブラリです。よって、プラグインを作らない人は知る必要はまったくないです。 Vim プラグインを書くとき、似たような関数を何度も書いたりしていませんか? vital.vim は、このようなよく使う処理をライブラリ化し、自作したプラグインに簡単に組み込めるような仕組みを提供します。 ライブラリはプラグインに同梱されるので、ユーザにライブラリを入れてもらう必要がありません。 使い方 以下から最新版が取得できます。 https://github.com/ujihisa/vital.vim 取得は必ず git clone で行ってください。git 必須です。 vital を入手したら、中にある vitalize.

    vital.vim 開発中 - 永遠に未完成
  • Vim プラグインの開発スタイルのお話 - 永遠に未完成

    Vim のプラグインって作ってる最中は Vim 自体の動作も不安定になりがちだし、普段の環境と同じ環境で作ってるとなにかと弊害が起きがち。ちょっとした変更ならまだしも、大規模な変更は 1 度の作業で終わらないこともあるし、作業中断して別のことをやることになったりするとさらに面倒。 または、VCS でプラグインを管理したくて、プラグインごとにリポジトリを独立したいけど環境分けるのが面倒だとか。 というわけで私が普段やってる Vim プラグインの開発スタイルを晒してみようと思う。 設定 私の vimrc には最後の方に以下の記述がある。 " Load settings for each location. augroup vimrc-local autocmd! autocmd BufNewFile,BufReadPost * call s:vimrc_local(expand('<afile

    Vim プラグインの開発スタイルのお話 - 永遠に未完成
  • Big Sky :: あなたはVim scriptを知らない

    この記事はsuginoy氏のブログ杉風呂2.0 - A Lifelog -の記事"あなたはJavaScriptを知らない"をパロったものです。suginoyさんの許可を得て公開します。原文は2011年11月17日にポストされました。私自身のVim scriptの学習は適当で、ネタ仕込みの指摘等はコメントを下さると助かります。 あなたはJavaScriptを知らない この記事はMichael Woloszynowicz氏のブログWeb 2.0 Development And Business Lessonsの記事"You Don’t Know JavaScript"を翻訳したものです。人の許可を得て公開します。原文は2011年4月16日にポストされました。私自身のJavaScriptの学習が浅く、誤訳の指摘等はコメントを下さると助かります。 http://d.hatena.ne.jp/su

    Big Sky :: あなたはVim scriptを知らない
  • Big Sky :: モテる男のVim script短期集中講座

    ここで関数リファレンスのみ格納先の変数の先頭が大文字になっていますが、これはVim script特有の制限になります。 数値は一般的な言語と同じ様に四則演算できます。文字列については.を用いて連結します。 また文字列は添え字によるアクセスが可能で、pythonの様に echo "hello"[1:3] という記述が出来ます。その他文字列操作関数については:help evalに詳しく記述されています。 また型同士の比較についてはthincaさんの記事が役立ちます。 Vimスクリプト基礎文法最速マスター - 永遠に未完成 Vimスクリプト基礎文法最速マスター vim 流行ってるみたいなので遅ればせながら便乗。需要?何それおいしいの? Perl基礎文法最速マスター - サンプルコードによるPerl入門 Route 477... http://d.hatena.ne.jp/thinca/20100

    Big Sky :: モテる男のVim script短期集中講座
    ryochack
    ryochack 2011/12/03
    autoload: "最近のVim Scriptはpluginではコマンドやキーマップのみを宣言するのが最近の流儀です"
  • 1