はじめに Vim9 scriptが本体にマージされてスコープ事情がややこしくなって来ましたので、視覚的な判別をしやすくするためにスコープ別に色を付けるプラグインを作成しました。 wordijp/vim-vimscript-scope-syntax vim-plugをお使いの方は以下をvimrcに追加して:PlugInstallでインストールするだけで動きます。 デモ カラースキーム slate での比較です。 適用前はすべての変数が同じ色になっているため、Vim scriptへの慣れが必要です。 こちらが、下のようにスコープ別に色が付きます。 Vim9 scriptでは文法が若干変わったため、それらへの対応がまだとなっています。 少し触ったところまだバグがあるようでしたので1、落ち着いたころに対応しようかと思います。 Vim9 script登場によるスコープ事情について Vim9 scri
流行ってるみたいなので遅ればせながら便乗。需要?何それおいしいの? 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 Advent Calendar 2011 43日目の記事となります。 もはや Advent Calendar がなんなのかわからなくなってきましたね。 明日以降、誰が書くか未定なので、もし書いた or 書きたい人がいれば ATND のコメントに投稿して下さい。 特にもう日付を気にする必要はないと思うので、気が向いたときにでも気軽に参加してもらえればと思います。 [まえがき] さて、3回目となる今回は Vim script について書きたいと思います。 Vim script は動的型付け言語です。 なので普段はあまり型を意識することがないと思いますが、ちょっと型について書いてみようと思います。 [Vim script で型] Vim script では型を書くことはありませんが、type({expr}) で変数から型番号を取得することが出来ます。 現在、Vim script で定義さ
なんかvimでゲームを作るのがブームのようなので(w,いくつかvimscriptでゲームを作ってみて分かったことをまとめようと思います. 最初に言っておくと,これはゲーム作成に限りませんが,vimscriptを書くコツはいかに他のvimscriptから似たような処理を見つけて抜き出してくるかだと思います. Redirecting… にいくつか紹介されているので,それのソースを見るのが一番速いと思います^^; ・バッファ作成 もしバッファが作成されていなければ画面を分割して新たにバッファを作り,バッファがあればそのバッファに移動します.(この例では ==MineSweeper== ) let winnum = bufwinnr(bufnr('==MineSweeper==')) if winnum != -1 if winnum != bufwinnr('%') exe "normal \<
なぜ作ったのか 基本的には思いつきが全て。 ただ理由を挙げるとするなら、最近vimでいろいろプラグインを使って遊んでたりするので、 自分でも作ってみようかなぁとか思ってたのが大きい。 今回、プラグインではなくコマンドを作成したのは、ここ(C++でゲームプログラミング 【Vim Advent Calendar 2012】Vim プラグインを github で公開するまで【1日目】を読んだから。 なので、そのうちプラグイン化するつもり。 vimスクリプトについて調べるのには、下の3つの情報源が本当に役立った。 ありがとうございました。 名無しのvim使い Vimスクリプトリファレンス 永遠に未完成 Vimスクリプト基礎文法最速マスター BigSky モテる男のVim Script短期集中講座 解説(というか自分のためのメモ) コマンドの定義 ユーザコマンドの定義は次の書式 :command[!
現在のカーソル行の文字列を取得するには getline('.') とすればよく,さらに現在のカーソル列は col('.') で取得することができる*1ので echo getline('.')[col('.')-1] とすればカーソル位置の文字が表示される. というのはシングルバイト文字の場合でしか成立せず,カーソル位置にマルチバイト文字があると違う値が表示される. UTF-8 環境で日本語なら あたりが表示されたりするんじゃないだろうか. というのも,col('.') によって得られるのはバイト列と見たときのインデックスであり,文字列 str を str[idx] と参照したときも idx はバイトインデックスとして解釈されるからだ. Vim では基本的に文字列はバイト列として扱われると考えて問題無いと思う.strlen('あ') == 3 である. ただし.正規表現マッチのときはマルチバ
カーソル位置にテキストを入力 :let input = "INSERT TEXT" :let pos = getpos(".") :execute ":normal i" . inserttext :call setpos('.', pos) "# => カーソル左の位置に「INSERT TEXT」のテキストが入る :let input = "APPEND TEXT" :let pos = getpos(".") :execute ":normal a" . inserttext :call setpos('.', pos) "# => カーソル右の位置に「APPEND TEXT」のテキストが入る pを使用してテキストをペースト :let tmp = @a :let @a = "PUTTING TEXT" :execute 'normal "ap' :let @a = tmp "# =>
この記事は Vim Advent Calendar 2013 110日目の記事になります。 1つ飛んでいるような気がしますが書きたい方がいれば教えて下さい。 さて、今回は Vim script からキー入力を呼び出す方法について簡単に書きます。 [:normal {commands} を使う] {commands} を実行します。 これは {commands} がノーマルモードからキー入力され時と同じように実行されます。 " カーソル行を "a に保存する " ! を付けた場合はマップを展開しない normal! "add " 特殊キーを含める場合は execute "\" を利用する必要がある execute "normal! :echo 42\<CR>" " <Plug> したキーマップを呼び出したり execute "normal \<Plug>(hoge)" 基本的にはこのコマンド
expandを使う :echo expand("%") "# => カレントファイルの名前を出力 :echo expand("%:p") "# => カレントファイルのフルパスを出力 :echo expand("%:r") "# => カレントファイルの名前、拡張子抜きを出力 :echo expand("%:e") "# => カレントファイルの拡張子を出力 fnamemodifyを使う :let filepath = "C:/var/articles/code/io/file-path.html" :echo fnamemodify(filepath, ":t") "# => file-path.html :let filepath = "C:/var/articles/code/io/file-path.html" :echo fnamemodify(filepath, ":t:r")
vimのスクリプトでreadfile/writefileでファイルの読み書きをリストオブジェクトを通して出来ると知り、そのへんをいじっていて「ディレクトリの存在を知りたい」と考えるようになりました。 しかし、そのような関数はざっと見たところ見つからないです。 http://d.hatena.ne.jp/dullhiko/20091008#p1 あります。 let tmp = isdirectory('hoge') ついでにファイル関係のチェックをする関数の紹介。 ディレクトリが存在するかどうか isdirectory({dir}) 上で紹介したやつ。mkdir({name}) って関数もあるのでなかったら作るとかもこの組み合わせで可能。 ファイルが読み込み可能かどうか filereadable({file}) ファイルの存在チェックもするので、fileread() で読めるかをチェックした
以下のコマンドは、2番のウィンドウを閉じます。 :CloseSomeWindow v:val == 2 以下のコマンドは、ヘルプを開いている(3番の)ウィンドウを閉じます。 :CloseSomeWindow getwinvar(v:val, '&filetype') ==# 'help' 以下のコマンドでは、閉じるべきウィンドウ番号を貴方に問い合わせます。 :CloseSomeWindow! getwinvar(v:val, '&filetype') ==# 'vim' 例えば、以下のようにして利用する事を薦めます。 " Quickfixリスト或いはヘルプを表示しているウィンドウを閉じます。 nnoremap <C-h> :<C-u>CloseSomeWindow \ (index(['qf','unite','vimtest'], getwinvar(v:val,'&filetype')
help.txt For Vim バージョン 9.1. Last change: 2022 Dec 03 VIM - メインヘルプファイル k 移動: カーソルを使用するか、"h" で左、"j" で下、 h l "k" で上、"l" で右に移動できます。 j ヘルプの終了: ":q<Enter>" とタイプします。 Vim の終了: ":qa!<Enter>" とします(注意! 変更はすべて破棄されます)。 項目へジャンプ: タグ (例: bars) にカーソルを合わせ、CTRL-] を押します。 マウスでジャンプ: ":set mouse=a" と入力してマウスを有効にしてください (xterm or GUI で利用可)。タグ (例: bars) をマウスの左ボ タンでダブルクリックすると、項目にジャンプできます。
備忘的なVimプラグイン入門。 最近やっとVim scriptを書き始めて、プラグインの形でもってGithubにて公開というところまで辿り着きました。 いろいろと足りない部分は多いんですが、それでも初のプラグインであり初のオープンソースです。 で、こういう「初めて」の頃の感覚や手順って、後々になると覚えていなかったりするのでまとめておきます。 プラグインのヘルプはまだ書いてないから、「出来上がって」はいないんですけどね。 事前準備 日本語版のヘルプを手に入れましょう。 ヘルプは必須です。これがなければ始まりません。 英語が読める人は英語でもいいと思いますが、ぼくはすらすら読めないので日本語版を入れています。 どこかで「日本語ヘルプが許されるのは初心者まで」というのを見た気がしますが、ぼくはまだ初心者なので問題ありません。 インストールにあたっては、今だとここが最新情報なのかな? HowTo
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く