LoginSignup
13
5

More than 5 years have passed since last update.

Vim 8.0 Advent Calendar 18 日目 新しい関数 ~情報取得編~

Posted at

この記事は Vim 8.0 Advent Calendar の 18 日目の記事です。

今回は新しく追加された関数の中から、情報を取得するものを中心に紹介します。

wordcount()

現在バッファの統計情報を辞書で取得します。
この情報は g<C-g> コマンドで表示できるものですが、表示だけだとスクリプトから扱うのが困難であるため、関数が追加されました。

辞書には以下の情報が含まれます。

キー 説明
bytes バッファ内のバイト数です。
chars バッファ内の文字数です。
words バッファ内の単語数です。
cursor_bytes カーソル位置より前のバイト数です。ビジュアルモードでない場合のみ存在します。
cursor_chars カーソル位置より前の文字数です。ビジュアルモードでない場合のみ存在します。
cursor_words カーソル位置より前の単語数です。ビジュアルモードでない場合のみ存在します。
visual_bytes ビジュアル選択領域内のバイト数です。ビジュアルモードの場合のみ存在します。
visual_chars ビジュアル選択領域内の文字数です。ビジュアルモードの場合のみ存在します。
visual_words ビジュアル選択領域内の単語数です。ビジュアルモードの場合のみ存在します。

getbufinfo([{expr}]) getbufinfo([{dict}])

バッファの情報を辞書の配列で取得します。引数を与えない場合、全てのバッファの情報を取得します。
配列の各要素の辞書は、以下のエントリーを持っています。

キー 説明
bufnr バッファ番号です。
changed バッファが変更されているなら('modified' がオンなら) TRUE になります。
changedtick バッファが変更された回数(b:changedtick の値)です。
hidden 隠れバッファであるなら('hidden' がオンなら) TRUE になります。
listed バッファがバッファリストに表示されるなら('buflisted' がオンなら) TRUE になります。
loaded バッファがロード済みなら TRUE になります。
name バッファ名(バッファのファイルのフルパス)です。
signs サインの情報のリストです。リストの各要素は辞書で、以下の要素を持ちます。
キー 説明
id サインの ID
lnum 行番号
name サインの名前
variables バッファローカル変数を参照する辞書です。
windows バッファを表示しているウィンドウのウィンドウ ID のリストです。

引数を渡した場合は、取得したいバッファの条件を指定することで絞り込みができます。詳細は help を参照してみてください。

getwininfo([{winid}])

ウィンドウの情報を辞書の配列で取得します。引数を与えない場合、全てのタブページのウィンドウの情報を取得します。
配列の各要素の辞書は、以下のエントリーを持っています。

キー 説明
bufnr ウィンドウが開いているバッファのバッファ番号です。
height ウィンドウの高さです。
loclist このウィンドウがロケーションリストだった場合は 1 です。
quickfix このウィンドウが quickfix ウィンドウだった場合は 1 です。
tabnr ウィンドウがあるタブページのタブページ番号です。
variables ウィンドウローカル変数を参照する辞書です。
width ウィンドウの幅です。
winid ウィンドウ ID です。
winnr ウィンドウ番号です。

引数にウィンドウ ID を渡した場合は、指定したウィンドウ ID の情報のみを含む配列を取得できます。

gettabinfo([{arg}])

タブページの情報を辞書の配列で取得します。引数を与えない場合、全てのタブページのウィンドウの情報を取得します。
配列の各要素の辞書は、以下のエントリーを持っています。

キー 説明
tabnr タブページ番号です。
variables タブページローカル変数を参照する辞書です。
windows タブページで表示されているウィンドウのウィンドウ ID のリストです。

引数にタブページ番号を渡した場合は、指定したタブページ番号の情報のみを含む配列を取得できます。

getcharsearch() setcharsearch({dict})

文字検索の情報を取得、設定できます。文字検索とは、f F t T で行う、指定した文字やその手前に飛ぶ機能のことです。
文字検索の情報を持つ辞書を取得、および設定できます。この辞書は以下の要素を持ちます。

key 説明
char 検索文字です。空文字列にすると、文字検索を解除します。
forward 検索方向です。1 ならば前方、0 ならば後方です。
untill 検索の種類です。1 の場合は、文字の手前(tT)、0 の場合は文字自体(fF) の検索です。

getcmdwintype()

getcmdtype() のコマンドラインウィンドウ版です。
q: q/ q? でコマンドラインウィンドウを開いている時に、現在のコマンドラインウィンドウがどのタイプかを返します。戻り値は : / ? のいずれかで、コマンドラインウィンドウが開かれていない場合は空文字列を返します。

getcompletion({pat}, {type} [, {filtered}])

コマンドラインの補完の結果を取得できます。{type} は以下のうちのどれかです。

{type} 説明
augroup autocmd のグループ名です。
buffer バッファ名です。
behave :behave Ex コマンドの引数です。
color カラースキームです。
command Ex コマンドです。
compiler :compiler Ex コマンドの引数です。
cscope :cscope Ex コマンドの引数です。
dir ディレクトリ名です。
environment 環境変数です。
event autocmd のイベント名です。
expression Vim の式です。
file ファイル名とディレクトリ名です。
file_in_path 'path' にあるファイル名とディレクトリ名です。
filetype ファイルタイプの名前です。
function 関数名です。
help help の項目です。
highlight ハイライトグループです。
history :history Ex コマンドの引数です。
locale ロケールの名前(locale -a の出力)です。
mapping キーマッピングの名前です。
menu メニューです。
option オプションです。
shellcmd シェルコマンドです。
sign :sign Ex コマンドの引数です。
syntax syntax ファイルのファイル名です。
syntime :syntime Ex コマンドの引数です。
tag tags ファイルから読み取れるタグです。
tag_listfiles tag と同じです。
user ユーザー名です。
var Vim script の変数です。

{pat} で候補を絞り込めます。コマンドラインに入力されている文字列を渡します。
{filtered} に 1 を渡すと、'wildignore' オプションを結果に適用します。

arglistid([{winnr} [, {tabnr}]])

Vim には引数リストという機能があります。これはグローバルなものが 1 つあり、それとは別にウィンドウ毎にローカルなものが作成できます。
引数リストの使い方についてはここでは省略しますが、この関数はこの引数リストの ID を取得できます。
指定したウィンドウにローカルな引数リストがなく、グローバルなものが使用されている場合は 0 を返します。引数が無効だった場合は -1 を返します。

13
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
5