various.txt For Vim バージョン 9.1. Last change: 2024 Dec 16
VIM リファレンスマニュアル by Bram Moolenaar
様々なコマンド various
1. 様々なコマンド various-cmds
2. less、more の代わりに Vim を使う less
==============================================================================
1. 様々なコマンド various-cmds
CTRL-L
CTRL-L 画面を消去して再描画します。すでに入力されているキーを
すべて処理してから再描画します。
:redr :redraw
:redr[aw][!] 画面をすぐに再描画します。! を付けたときは、画面を消去
してから再描画します。
スクリプトまたは関数 (または 'lazyredraw' が設定されて
いる場合はマッピング) で画面を再描画するために使用でき
ます。
:redraws :redrawstatus
:redraws[tatus][!] カレントウィンドウのステータスラインを再描画します。
! を付けたときは、すべてのステータスラインを再描画しま
す。
'statusline' に自動更新されない項目が含まれている場合
に、ステータスラインを更新するのに便利です。
コマンドラインの編集が開始すると再描画はその後にまで延
期されます。
:redrawt :redrawtabline
:redrawt[abline] タブページ行を再描画します。'tabline' に自動更新されな
い項目が含まれている場合に、タブページ行を更新するのに
便利です。
N<Del>
<Del> ノーマルモードで数値 (count) を入力しているときは、
数字の最後の桁を削除します。
Note: 同じことをするのに <BS> を使いたい場合は、次の
マップを .vimrc に追加してください:
{訳注: "CTRL-V <BS>"はCTRL-Vを押してから<BS>を押す。}
:as[cii] ga :as :ascii
ga カーソル位置の文字の文字コードを、10/16/8 進数で表示し
ます。
覚え方: Get Ascii value (ASCIIコードを取得)
カーソルが 'R' の上にあるときは次のように表示されます:
<R> 82, Hex 52, Octal 122
ASCII 以外の文字がオプション 'isprint' に設定されてい
て、表示可能になっている場合には、特殊な表示形式もいっ
しょに表示されます。
文字コードが 127 より大きいときには <M-x> という形式も
表示されます。例:
<~A> <M-^A> 129, Hex 81, Octal 201
<p> <|~> <M-~> 254, Hex fe, Octal 376
(<p> には実際の特殊文字が表示されます。)
ファイル中の <Nul> 文字は内部的には <NL> として保存さ
れていますが、次のように表示されます:
<^@> 0, Hex 00, Octal 000
合成文字も表示されます。'maxcombine' の設定は影響しま
せん。
文字がダイグラフとして入力されている場合、その文字を生
成するために使用できる 2 文字も出力します:
<ö> 246, Hex 00f6, Oct 366, Digr o:
これは、ö を入力するために CTRL-K o : とタイプすればよ
いことを意味しています。
g8
g8 カーソル位置の文字のバイト列を 16 進数で表示します。エ
ンコーディングが UTF-8 の場合のみ正しく機能します。
合成文字も表示されます。'maxcombine' の設定は影響しま
せん。
2 文字の合成文字が結合されている文字の表示例:
e0 b8 81 + e0 b8 b9 + e0 b9 89
8g8
8g8 カーソル以降の不正な UTF-8 バイト列を検索します。
次の二つの状況で機能します。
1. 'encoding' が 8-bit エンコーディングの場合。
2. 'encoding' が "utf-8" で、'fileencoding' が 8-bit
エンコーディングの場合。
UTF-8 のファイルを開いたはずが、不正なバイト列が含まれ
ていて、別の 8-bit エンコーディングとして開かれてし
まった場合などに使ってください。
検索がファイル末尾に達しても、ファイル先頭に戻って検索
を継続しません。
Note: カーソルがすでに不正なバイト列の上にある場合は、
カーソルは移動しません。
:p :pr :print E749
:[range]p[rint] [flags]
範囲 [range] の行を表示します (省略時は現在行を表示)。
Note: テキストファイルを印刷する方法については
:hardcopy を参照してください。GUI を使用している場合
は、メニューの File.Print から印刷できます。
[flags] については ex-flags を参照してください。
パターンにマッチした行だけを表示するのに、:filter コ
マンドを使うことができます。
:[range]p[rint] {count} [flags]
[range] の開始行から {count} 行を表示します([range]を
省略した場合は現在行から開始 cmdline-ranges)。
[flags] については ex-flags を参照してください。
:P :Print
:[range]P[rint] [count] [flags]
:print と同じです。シフトキーを長く押し続けてしまう人
のために追加されました。
このコマンドは Vim9 script ではサポートされません。
Note: ユーザーコマンドでこのコマンドを上書きできます。
[flags] については ex-flags を参照してください。
:l :list
:[range]l[ist] [count] [flags]
:print と同じですが、表示できない文字は '^'を付けて表
示し、行末に $ を置きます。表示は 'listchars' オプショ
ンの設定で変更できます。
[flags] については ex-flags を参照してください。
:nu :number
:[range]nu[mber] [count] [flags]
:print と同じですが、先頭に行番号を付加します。
(オプション 'highlight' と 'numberwidth' も参照)
[flags] については ex-flags を参照してください。
:#
:[range]# [count] [flags]
:number と同じです。
:#! vim-shebang
:#!{anything} 無視されます。そのため、次のようにして Vim script を実
行することができます:
新しい日記エントリを作成するために、スクリプトを実行可
能にして実行します。
:z E144
:[range]z[+-^.=][count] [range]に指定した行の周辺を表示します。[range] を省略
した場合は現在行の周辺を表示します。
行の範囲をどれだけ表示するかは [count] に指定します。
[count] を省略し、ウィンドウが一つだけなら 'scroll' オ
プションの 2 倍の数が、そうでなければカレントウィンド
ウの高さから 3 を引いた数が使われます。これは、下の表
の "画面" の値です。
[count] が指定された場合は 'window' オプションがその値
に設定されます。
:z はマークを付加して使うこともできます。次の効果があ
ります。
記号 開始行 終了行 新しいカーソル位置
---- ------ ------ ----------
+ 現在行 1画面先 1画面先
- 1画面前 現在行 現在行
^ 2画面前 1画面前 1画面前
. 半画面前 半画面先 半画面先
= 半画面前 半画面先 現在行
マークを省略した場合は、"+" が使われます。マークが "="
の場合は、現在行の周りにマイナス記号で作った線が表示さ
れます。
:z!
:[range]z![+-^.=][count]
":z" と同じですが、[count]が指定されてない時、デフォル
トでVimのウィンドウの高さ-1になります。
:[range]z[!]#[+-^.=][count] :z#
":z" や ":z!" と同じですが、行番号も表示します。
:=
:= [flags] 最終行の行番号を表示します。
[flags] については ex-flags を参照してください。
:{range}= [flags] {range} で指定した範囲の最終行の行番号を表示します。例
えば、次のコマンドは現在行の行番号を表示します:
:norm[al][!] {commands} :norm :normal
ノーマルモードコマンド {commands} を実行します。コマン
ドラインからノーマルモードのコマンドを実行できます。
{commands} は、ノーマルモードで入力されたときと同じよ
うに実行されます。{commands} による変更は、一回のアン
ドゥで取り消されます。
エラーが発生すると実行停止します。
[!] を付けた場合はマップは適用されません。
付けなかった場合、このコマンドが非再帰マップ
(:noremap) 内で使われたとしても、引数は再マップされ
ます。
{commands} は実行を完了する (ノーマルモードに戻る) 必
要があります。
{commands} が完了しない場合は、最後のコマンドが<Esc>
や <C-C> で終了したのと同じように動作します。
挿入モードも必ず完了します (挿入モードを開始するには
:startinsert を参照)。":" コマンドも必ず完了します。
"Q" や "gQ" を使って Ex モードを開始することはできませ
ん。
":normal" の実行中は画面は更新されません。
{commands} の最初にスペースは置けません。そうしたい場
合はスペースの前にカウント指定の 1 (数字の 1) を置いて
ください。"1 " は 1 つのスペースになります。
{command} の実行ではオプション 'insertmode' は無視され
ます。
'|' は :normal コマンドの一部として処理されるので、こ
のコマンドの後に他のコマンドを続けて書けません。
:normal コマンドは 'maxmapdepth' の制限内で再帰的に呼
び出すことができます。
:execute コマンドには Vim script の式を指定できるの
で、印字可能文字を使って制御文字を入力することもできま
す。
例:
:{range}norm[al][!] {commands} :normal-range
{range} の各行に対してノーマルモードコマンド{commands}
を実行します。{commands} はカーソルが行頭にある状態で
実行されます。その他は範囲指定の無い ":normal" コマン
ドと同じです。
:sh :shell E371
:sh[ell] シェルを起動します。シェルを終了 ("exit"コマンドを実行)
すると Vim に戻ってきます。オプション 'shell' に設定さ
れているシェルコマンドを使います。
E360
Note: Amiga では、コンパイラから QuickFix モードで Vim
が起動された場合には、コンパイラが標準入力を非対話型
モードにしてしまうので使用できません。
:!cmd :!
:!{cmd} シェルで {cmd} を実行します。'shell' と 'shelltype' も
参照。フィルターコマンドについては、:range! を参照。
Vim は、オプション 'shell'、'shcf'、'sxq'、'shq' を使
用して、次の順序でコマンドラインを構築する:
&sh &shcf &sxq &shq {cmd} &shq &sxq
したがって、'sxq' と 'shq' の両方を設定することは可能
だが、ほとんど役に立たない。{cmd} 内の追加のエスケー
プは、'sxe' オプションによるものである可能性もある。
また、{cmd} 内のすべての cmdline-special 文字は、シェ
ルに渡される前に Vim によって置き換えられる。
E34
{cmd} の中の '!' は以前使用した外部プログラムに置
き換えられます ('cpoptions' も参照)。'!' の前にバック
スラッシュがある場合はバックスラッシュが削除され '!'
は置き換えられません。
例: ":!ls" を実行後の ":!echo !\! \\!" は
"echo ls ! \!" と解釈、実行されます。
{cmd} の中の '|' はシェルに渡されます。'|' を使って
Vim コマンドを続けて書くことはできません。(:bar参
照)。
{cmd} が "%" を含んでいたらそれは現在のファイル名に展
開されます。"#" を含んでいたらそれは代替ファイル名に展
開されます。ファイル名に入っている特殊文字はエスケープ
されないので、特殊文字の特殊な意味を打ち消すにはクォー
トを使います:
うとより良いでしょう、ただしそれでうまくいくのはファイ
ル名にシングルクォートが入っていない場合だけです:
置きます。例えば、"%" で始まるファイルの一覧なら:
{cmd} の終わりを示す改行文字 (newline) 以降の文字は、
次の ":" コマンドとして解釈されます。改行文字の前に
バックスラッシュがある場合は、バックスラッシュは削除さ
れ、改行文字は {cmd} の一部として解釈されます。改行文
字の前にバックスラッシュがいくつあっても、一つだけが削
除されます。
Unix ではシェルを非対話型モードで起動します。対話型
モードで起動したい場合 (aliasを使いたい場合など) は、
'shellcmdflag' に "-ic" を設定してください。
Win32の場合は:!startも参照。
外部プログラムを実行した後で、開いているファイルのタイ
ムスタンプとサイズがチェックされます timestamp。
外部プログラムはメッセージを出力するかもしれないので、
外部プログラムを実行した後にスクリーンが再描画されます。
そのため、プログラムの出力を見逃してしまわないように、
hit-enter プロンプトが表示されます。プロンプトを表示し
たくない場合は、次のようにします:
かを出力した場合は CTRL-L や ":redraw!" で再描画できま
す。しかし、これは termcap の t_ti と t_te のエン
トリに何が設定されているかに依存します。
ヒント: Vim ウィンドウで {cmd} を実行する場合は、
:terminal コマンドを使用する。
:term ++shell ++close {cmd} は、:!{cmd} の機能に近
いものになる。
:!!
:!! 最後の ":!{cmd}" を繰り返します。
:ve :ver :version
:ve[rsion] エディタのバージョンを表示します。コンパイル時に
"__DATE__" が利用可能だった場合には、コンパイルされた
日時も表示されます。利用不可だった場合は、リリースの最
終修正日時が表示されます。
Vim の、どの機能が有効になっているかも表示されます。機
能名の前に '+' があれば、その機能は有効になっていま
す。'-' のときは無効になっています。
機能の有無を変えるには feature.h を編集して、Vim をコ
ンパイルし直す必要があります。Vim script から機能の有
無を確認するには has() を使います。以下に、機能の概
要を示します。
行頭の文字はその機能が含まれる最小構成です:
T tiny (常に含まれる)
N normal
H huge
m 手動で組み込むか他の機能に依存
- 削除された機能
(none) システム依存
例えば "N" と書いてあれば、その機能は
normal、huge バージョンの Vim に含まれます。
+feature-list
+acl ACL サポートを含む
+ARP Amiga のみ: ARP サポートを含む
H +arabic Arabic言語サポート
H +autochdir autochdir オプションをサポート
T +autocmd :autocmd, 自動コマンド実行。8.0.1564 以降は常に有効
H +autoservername 自動的に clientserver を有効にする
m +balloon_eval GUIでの balloon-eval サポート。GUI が有効で、
Netbeans/Sun Workshop (+sun_workshop) または +eval
が有効な場合に利用できます。
H +balloon_eval_term 端末での balloon-evalサポート、'balloonevalterm'
N +browse :browse コマンド
T ++builtin_terms 全部の組み込み端末 builtin-terms 9.0.0280 以降は常に
有効
N +byte_offset 'statusline'の'o'フラグ、go、:gotoをサポート
m +channel プロセス間通信 channel
T +cindent 'cindent', C言語インデント; 常に有効
N +clientserver UnixとWin32: リモート呼び出し clientserver
+clipboard clipboard サポートコンパイル済み
+clipboard_working clipboard サポートコンパイル済みかつ動作中
T +cmdline_compl コマンドライン補完 cmdline-completion
T +cmdline_hist コマンドライン履歴 cmdline-history
T +cmdline_info 'showcmd' と 'ruler'; 9.0.0657 以降は常に有効
S +cmdwin cmdline-window サポート
T +comments 'comments' サポート
N +conceal "conceal" サポート。conceal :syn-conceal 他 参照。
N +cryptv 暗号化サポート encryption
H +cscope cscope サポート
T +cursorbind 'cursorbind' サポート
m +cursorshape termcap-cursor-shape サポート
m +debug Vim がデバッグ用にコンパイルされた
N +dialog_gui :confirm のGUIダイアログをサポート
N +dialog_con :confirm のコンソールダイアログをサポート
N +dialog_con_gui :confirm GUIとコンソールダイアログをサポート
N +diff vimdiffと'diff'
N +digraphs digraphs E196
+directx Win32 GUI のみ: DirectX と 'renderoptions'
+dnd "~レジスタ quote_~を使ったDnDのサポート
H +emacs_tags emacs-tags ファイル
N +eval 式評価 {訳注: Vim script} eval.txt
T +ex_extra 今は常にオン、かつてVimの拡張Exコマンドのためにあった
N +extra_search 'hlsearch' と 'incsearch' オプション
- +farsi 削除済み; farsi 言語
T +file_in_path gf, CTRL-W_f と <cfile> 9.0.265 以降は常に有効
N +find_in_path include ファイル検索: [I、:isearch、
CTRL-W_CTRL-I、:checkpath、その他
N +folding folding
+footer gui-footer
+fork Unix のみ: fork シェルコマンド
+float 浮動小数点数サポート
N +gettext メッセージの翻訳 multi-lang
- +GUI_Athena Unix のみ: Athena GUI
+GUI_neXtaw Unix のみ: neXtaw GUI
+GUI_GTK Unix のみ: GTK+ GUI
+GUI_Motif Unix のみ: Motif GUI
+GUI_Photon QNX のみ: Photon GUI
m +hangul_input ハングル入力サポート hangul
+iconv iconv() 関数が組み込まれている
+iconv/dyn iconv-dynamic /dyn と同じ
T +insert_expand insert_expand 挿入モード補完
m +ipv6 IPv6 ネットワーク通信サポート channel
m +job job の開始と停止 job
T +jumplist jumplist; 8.2.3795以降は常に有効
H +keymap 'keymap'
N +lambda lambda と closure
H +langmap 'langmap'
N +libcall libcall()
N +linebreak 'linebreak'、'breakat' と 'showbreak'
T +lispindent 'lisp'
T +listcmds バッファリストや引数リストに対するVimコマンド
buffer-hidden :argdelete
T +localmap バッファローカルなマップのサポート :map-local
m +lua Lua インターフェイス
m +lua/dyn Lua インターフェイス /dyn
N +menu :menu
N +mksession :mksession
T +modify_fname filename-modifiers
T +mouse マウス操作 mouse-using
N +mouseshape 'mouseshape'
N +mouse_dec Unix のみ: Dec端末マウス操作 dec-mouse
N +mouse_gpm Unix のみ: Linuxコンソールマウス操作 gpm-mouse
m +mouse_gpm/dyn +mouse_gpm と同じだが、ライブラリへの依存がオプショ
ナル /dyn
N +mouse_jsbterm JSB マウスサポート jsbterm-mouse
N +mouse_netterm Unix のみ: nettermマウス操作 netterm-mouse
N +mouse_pterm QNX のみ: ptermマウス操作 qnx-terminal
N +mouse_sysmouse Unix のみ: *BSD コンソールマウス操作 sysmouse
N +mouse_sgr Unix のみ: sgrマウス操作 sgr-mouse
N +mouse_urxvt Unix のみ: urxvtマウス操作 urxvt-mouse
N +mouse_xterm Unix のみ: xtermマウス操作 xterm-mouse
T +multi_byte Unicodeサポート、16ビット、32 ビット文字 multibyte
+multi_byte_ime Win32 IMEサポート
N +multi_lang 多言語サポート multi-lang
m +mzscheme Mzscheme インターフェイス mzscheme
m +mzscheme/dyn Mzscheme インターフェイス mzscheme-dynamic /dyn
m +netbeans_intg netbeans
T +num64 64ビットの数値をサポート Number
8.2.0271以降は常に有効になっている。実際の数値のサイズ
を確認するにはv:numbersizeを使用すること。
m +ole Win32 GUI のみ: ole-interface
N +packages packages の読み込み
T +path_extra 'path'や'tags'での上下階の検索 9.0.0270 以降は常に有効
m +perl Perl インターフェイス perl
m +perl/dyn Perl インターフェイス perl-dynamic /dyn
N +persistent_undo 永続 undo undo-persistence
N +popupwin ポップアップウィンドウ popup-window
+postscript :hardcopy でPostScriptファイルの書き出し
N +printer :hardcopy コマンド
H +profile :profile コマンド
m +python Python 2 インターフェイス python
m +python/dyn Python 2 インターフェイス python-dynamic /dyn
m +python3 Python 3 インターフェイス python
m +python3/dyn Python 3 インターフェイス python-dynamic /dyn
m +python3/dyn-stable
Python 3 インターフェイス python-dynamic
python-stable /dyn
N +quickfix :make と quickfix コマンド
N +reltime reltime() 関数, 'hlsearch'/'incsearch' タイムアウト,
'redrawtime' オプション
H +rightleft 右から左へタイプ 'rightleft'
m +ruby Ruby インターフェイス ruby
m +ruby/dyn Ruby インターフェイス ruby-dynamic /dyn
T +scrollbind 'scrollbind'
N +signs :sign
T +smartindent 'smartindent'
H +sodium より良い暗号化サポートのために libsodium とコンパイル
されている
H +sound sound_playevent(), sound_playfile() 関数等
N +spell スペルチェックサポート spell
N +startuptime --startuptime 引数
N +statusline オプション'statusline'、'rulerformat'と、
'titlestring'と'iconstring'の特殊フォーマット
- +sun_workshop 削除済み; workshop
N +syntax 構文強調 syntax
+system() Unix のみ: +forkの反対
T +tag_binary タグファイル内の高速(二分探索)検索 tag-binary-search
- +tag_old_static 削除済み; 静的タグの方法 tag-old-static
- +tag_any_white 削除済み; タグファイル内の空白を許すためのものだった
m +tcl Tcl インターフェイス tcl
m +tcl/dyn Tcl インターフェイス tcl-dynamic /dyn
m +terminal ターミナルウィンドウのサポート terminal
+terminfo terminfoでtermcapを代替
N +termresponse t_RV と v:termresponse のサポート
N +termguicolors xterm互換端末での 24 ビット色のサポート
T +textobjects text-objects 選択。9.0.0222 以降は常に有効。
N +textprop text-properties
+tgetent 非Unix のみ: 外部termcapを使用可能
N +timers timer_start() 関数
T +title ウィンドウタイトルとアイコン設定 'title' 'icon';
常に有効
N +toolbar gui-toolbar
T +user_commands ユーザー定義コマンド user-commands
8.1.1210 からは常に有効。
H +vartabs 可変幅のタブストップ。'vartabstop'
T +vertsplit ウィンドウの垂直分割 :vsplit; 8.0.1118 からは常に
有効。
T +vim9script Vim9 script
N +viminfo 'viminfo'
T +virtualedit 'virtualedit' 8.1.826 からは常に有効
T +visual ビジュアルモード Visual-mode 7.4.200からは常に有効
T +visualextra 拡張ビジュアルモードコマンド blockwise-operators
T +vreplace gR と gr
+vtp MS-Windows コンソール上での 'termguicolors' のサポート
T +wildignore 'wildignore' 9.0.0278 以降は常に有効
T +wildmenu 'wildmenu' 9.0.0279 以降は常に有効
T +windows 複数ウィンドウ; 8.0.1118 からは常に有効
m +writebackup 'writebackup'がデフォルトで有効
m +xim Xインプットメソッド xim
+xfontset Xフォントセットサポート xfontset
N +xattr 拡張属性サポート付きでコンパイルされている (Linux のみ)
+xpm pixmap サポート
m +xpm_w32 Win32 GUI のみ: pixmap サポート w32-xpm-support
+xsmp XSMP(X session management)サポート
+xsmp_interact 対話型XSMP(X session management)サポート
N +xterm_clipboard Unix のみ: xtermクリップボード操作
m +xterm_save xtermのスクリーンを保存と復帰 xterm-screens
N +X11 Unix のみ: ウィンドウタイトルを復帰可能 X11
/dyn E370 E448
機能が動的ライブラリを利用する場合には機能名に"/dyn"
が付加されます。
:ve[rsion] {nr} 現在は無視されます。これはかつて .vimrc の中でバージョ
ン番号をチェックするために使われていました。現在は
":if" コマンドを使ってバージョン依存の振る舞いを記述で
きるので、削除されています。
:redi :redir
:redi[r][!] > {file} コマンドの出力 (メッセージ) を {file} にリダイレクトし
ます。メッセージは、リダイレクトを終了するまで、ファイ
ルに出力されます。メッセージは画面にも表示されます。
[!] を付けたときは、既存のファイルが上書きされます。
[!] を省略した場合は、すでに {file} が存在していると、
コマンドは失敗します。
":redir" を同時に複数使用することはできません。
":redir" を実行すると、新しいリダイレクトを開始する前
に、すでに実行されている他のリダイレクトは閉じられま
す。
再帰的に実行するには execute() を調べてください。
実行中のコマンドやメッセージがスクリーンに表示されない
ようにするには、コマンドを関数の中に書き、その関数を
":silent call Function()" と実行してください。
このコマンドの代わりに、オプション 'verbosefile' を使
うこともできます。":redir" と同時に使うこともできま
す。
:redi[r] >> {file} メッセージを {file} にリダイレクトします。
{file} が既に存在する場合は追記します。
:redi[r] @{a-zA-Z}
:redi[r] @{a-zA-Z}> メッセージをレジスタ {a-z} にリダイレクトします。レジ
スタ名が大文字 {A-Z} の場合は、そのレジスタに追記され
ます。レジスタ名の後ろの ">" は省略可能です。
:redi[r] @{a-z}>> メッセージをレジスタ {a-z} に追記します。
:redi[r] @*>
:redi[r] @+> メッセージをセレクションまたはクリップボードにリダイレ
クトします。互換性のため、レジスタ名の後ろの ">" は省
略できます。quotestar と quoteplus を参照。
:redi[r] @*>>
:redi[r] @+>> メッセージをクリップボードに追記します。
:redi[r] @"> メッセージを無名レジスタにリダイレクトします。互換性の
ため、レジスタ名の後ろの ">" は省略できます。
:redi[r] @">> メッセージを無名レジスタに追記します。
E1092
:redi[r] => {var} メッセージを変数にリダイレクトします。
旧来のスクリプトでは: 変数が存在しない場合は、作成され
ます。変数がすでにある場合は、空文字列で初期化されま
す。リダイレクトを開始した後で変数を変更したり、ロック
したり、変数タイプを変更したりすると、それ以降のコマン
ドがメッセージを出力するときにエラーが起こります。ロー
カルな変数(関数内での l:var あるいはスクリプト内での
s:var)を使用していて、別の :redir によって現在のもの
が終了した場合、スコープが異なることで代入が失敗するこ
とがあります。
Vim9 script では: 変数が文字列として宣言されている必要
があります。
リダイレクトが終了するまでは、変数は空のままです。
文字列変数のみ使えます。
コマンド1つの出力を取得するのにはリダイレクトの代わりに
execute() 関数を使うことができます。
:redi[r] =>> {var} メッセージを変数に追記します。文字列変数のみ使えます。
E1185
:redi[r] END メッセージのリダイレクトを終了します。
:filt :filter
:filt[er][!] {pattern} {command}
:filt[er][!] /{pattern}/ {command}
コマンドの出力を {pattern} に一致する行に制限します。
例として xml ファイルだけを一覧する場合には以下のよう
にします:
しない行に制限します。
{pattern} は Vim の検索パターンです。パターンを囲む
"/" は、{pattern} 内に使われない限り、非ID文字
('isident') で代用できます。パターンを囲む文字を省略
した場合は、パターンにバー文字 {訳注: "|"} を含むこと
はできなくなります。'ignorecase' は使われません。
パターンは出力に部分一致でマッチするので、行全体に
マッチするパターンを指定する必要はありません。一部のコ
マンドだけがフィルタリングをサポートしているので、サ
ポートしているかどうかは実際に試してみてください。フィ
ルタリングをサポートするコマンドの一部:
:# - 行全体をフィルタ
:clist - ファイル名かモジュール名でフィルタ
:command - コマンド名でフィルタ
:files - ファイル名でフィルタ
:highlight - ハイライトグループでフィルタ
:history - 履歴コマンドでフィルタ
:jumps - ファイル名でフィルタ
:let - 変数名でフィルタ
:list - 行全体をフィルタ
:llist - ファイル名かモジュール名でフィルタ
:marks - 現在のファイル内のテキストか他のファ
イルのファイル名でフィルタ
:oldfiles - ファイル名でフィルタ
:registers - レジスタの内容でフィルタ
(複数行は動作しない)
:set - オプション名でフィルタ
通常のメッセージだけがフィルタリングされ、エラー
メッセージはされません。 {訳注: 常に出力されます}
:sil :silent :silent!
:sil[ent][!] {command} {command} を静かに実行します。メッセージは表示されず、
メッセージ履歴にも残りません。
[!] を付けた場合は、エラーが起きたときでもエラーメッ
セージは表示されず、コマンドやマップは中断されません。
その場合でも v:errmsg はセットされます。
[!] を付けない場合は、エラーメッセージは通常どおりに表
示されます。
:redir によるリダイレクトは通常どおり機能します。
:silent を使うとコマンドの出力をスクリーンに表示する
ことなくリダイレクトすることができます。例:
マンドを使用します。例えばメッセージを表示することなく
文字列を検索するには:
きには便利ですが、エラーが無視されてしまいます。例:
ログラムを実行したとき、その出力は表示されたままになっ
てしまいます。その場合はCTRL-Lでスクリーンをきれいに
できます。
":silent menu ..." はコマンドをコマンドラインにエコー
しないメニューを定義できます。しかしメニューに割り当て
たコマンドのメッセージは表示されます。表示しないように
するにはそのコマンド自身に ":silent" を付けてください:
":silent menu .... :silent command"
:uns :unsilent
:uns[ilent] {command} {command} を静かでなく実行します。:silent コマンドが
使用されているときのみ違いがでます。
:silent が使われていてもメッセージを表示したいときに
使用します。次の例では、:silent を使ってファイル読み
込みに関するメッセージを抑制しつつ、:unsilent を使っ
て各ファイルの最初の行を表示できるようにしています:
:verb :verbose
:[count]verb[ose] {command}
'verbose' に [count] を設定した状態で {command} を実行
します。[count] を省略した場合は1が設定されます。
":0verbose" として 'verbose' をゼロにすることもできま
す。
":silent" と一緒に使用すると、メッセージは生成されます
が、表示はされません。
":silent" と ":verbose" を一緒に使用するとメッセージを
生成して v:statusmsg を確認することができます。例:
だけに適用されます:
verbose=0
メッセージをログファイルに出力するには 'verbosefile'
を使ってください。
:verbose-cmd
Vim のオプション、マップ、短縮入力、ユーザー定義関数、ユーザー定義コマンド、ハ
イライトグループ、自動コマンド、を表示するとき、'verbose' がゼロ以外だと、それ
が設定された場所も表示されます。手動で設定したときは "Last set" メッセージは表
示されません。関数、ユーザーコマンド、自動コマンド、を実行中に設定された場合に
は、そのコマンドを定義したスクリプトが表示されます。
{+eval が有効な場合のみ利用できます}
K
K カーソル位置のキーワードを調べるためのプログラムを実行
します。プログラムの名前はオプション 'keywordprg' (kp)
で設定します (初期設定は "man")。キーワードはアルファ
ベット、数字、'iskeyword' に設定された文字から構成され
ます。
カーソルの下、もしくは右側のキーワード使用されます。次
のコマンドで同じことができます:
す。"ref" という簡易スペルチェックプログラムです。
特別なケース:
- 'keywordprg' が ":" で始まるならば、それは Vim の Ex
コマンドとして [count] を伴って実行されます。
- 'keywordprg' が空の場合は、":help" コマンドが使われ
ます。検索しやすくするために 'iskeyword' に文字を追
加すると良いでしょう。
- 'keywordprg' が "man" もしくは ":" で始まる場合
は、"K" の前に入力されたカウントが "man" と
キーワードの間に挿入されます。例えば、"mkdir" に
カーソルがあって、"2K" を実行すると、結果はこのよう
になります:
れたカウントは "-s" の後に挿入されます。カウントを省
略した場合は、"-s" は除去されます。
v_K
{Visual}K "K" と同じですが、キーワードにはビジュアル選択されたテ
キストが使用されます。複数行を選択したときは機能しませ
ん。
[N]gs gs :sl :sleep
:[N]sl[eep] [N][m] [N] 秒間何もしません。[m] を付けると、[N] ミリ秒間ス
リープします。"gs" に指定する数値は常に秒単位です。省
略時は 1 秒間スリープします。
CTRL-Break)。"gs" は "goto sleep" の略です。
カーソルが表示可能な位置にある場合は、スリープしている
間、カーソルはテキスト中に表示されます。
スリープ中に受信した netbeans メッセージは処理されま
す。{+netbeans_intg 機能つきでコンパイルされたときの
み利用可能}
:sl! :sleep!
:[N]sl[eep]! [N][m] 上記と同じですが、カーソルが非表示となります。
:xrestore :xr
:xr[estore] [display] X11サーバーへの接続を再初期化します。Xサーバーが再起動
した後に便利です。例えば、screen/tmux内でVimを長時間実
行していて、異なるマシンから接続しているとき。
[display] は $DISPLAY 環境変数の形式にする必要がありま
す (例: "localhost:10.0")
[display] を省略すると、前回このコマンドの実行で使用し
たものと同じ値を使用して、X11サーバーへの接続を再初期
化します。値が指定されていない場合は、Vimの起動時と同
じ環境変数 $DISPLAY の値が使用されます。
{+clipboard 機能つきでコンパイルされたときのみ利用可
能}
g_CTRL-A
g CTRL-A MEM_PROFILING を define して Vim をコンパイルしたとき
み使えます (通常は使いません)。メモリ使用量の統計を表
示します。Vim をデバッグするときなどに使います。
ビジュアルモード時のインクリメントは v_g_CTRL-A を参
照。
==============================================================================
2. less、more の代わりに Vim を使う less
less や more ではファイルを構文強調表示できません。代わりに、Vim を使うことが
できます。それには、シェルスクリプト "$VIMRUNTIME/macros/less.sh" を使います。
このシェルスクリプトは Vim script "$VIMRUNTIME/macros/less.vim" を使って、
less のコマンドをシミュレートするためのマップを設定します。less コマンド以外は
通常どおり、Vim のコマンドを使うことができます。
完璧に同じ動作ではありません。例えば、短いファイルを表示する場合でも、Vim はス
クリーンを占有します。しかし、ほとんどの場合は十分に機能します。それにとにか
く、構文強調表示することができます。
"h" キーを押すと使用できるコマンドのショートヘルプが表示されます。
もし less を使っていて異なるオプションを設定したい場合は vimrc に LessInitFunc
を定義します。例:
vim:tw=78:ts=8:noet:ft=help:norl:
VIM リファレンスマニュアル by Bram Moolenaar
様々なコマンド various
1. 様々なコマンド various-cmds
2. less、more の代わりに Vim を使う less
==============================================================================
1. 様々なコマンド various-cmds
CTRL-L
CTRL-L 画面を消去して再描画します。すでに入力されているキーを
すべて処理してから再描画します。
:redr :redraw
:redr[aw][!] 画面をすぐに再描画します。! を付けたときは、画面を消去
してから再描画します。
スクリプトまたは関数 (または 'lazyredraw' が設定されて
いる場合はマッピング) で画面を再描画するために使用でき
ます。
:redraws :redrawstatus
:redraws[tatus][!] カレントウィンドウのステータスラインを再描画します。
! を付けたときは、すべてのステータスラインを再描画しま
す。
'statusline' に自動更新されない項目が含まれている場合
に、ステータスラインを更新するのに便利です。
コマンドラインの編集が開始すると再描画はその後にまで延
期されます。
:redrawt :redrawtabline
:redrawt[abline] タブページ行を再描画します。'tabline' に自動更新されな
い項目が含まれている場合に、タブページ行を更新するのに
便利です。
N<Del>
<Del> ノーマルモードで数値 (count) を入力しているときは、
数字の最後の桁を削除します。
Note: 同じことをするのに <BS> を使いたい場合は、次の
マップを .vimrc に追加してください:
:map CTRL-V <BS> CTRL-V <Del>
<Del> が望みどおりに機能しない場合には:fixdelを参照。{訳注: "CTRL-V <BS>"はCTRL-Vを押してから<BS>を押す。}
:as[cii] ga :as :ascii
ga カーソル位置の文字の文字コードを、10/16/8 進数で表示し
ます。
覚え方: Get Ascii value (ASCIIコードを取得)
カーソルが 'R' の上にあるときは次のように表示されます:
<R> 82, Hex 52, Octal 122
ASCII 以外の文字がオプション 'isprint' に設定されてい
て、表示可能になっている場合には、特殊な表示形式もいっ
しょに表示されます。
文字コードが 127 より大きいときには <M-x> という形式も
表示されます。例:
<~A> <M-^A> 129, Hex 81, Octal 201
<p> <|~> <M-~> 254, Hex fe, Octal 376
(<p> には実際の特殊文字が表示されます。)
ファイル中の <Nul> 文字は内部的には <NL> として保存さ
れていますが、次のように表示されます:
<^@> 0, Hex 00, Octal 000
合成文字も表示されます。'maxcombine' の設定は影響しま
せん。
文字がダイグラフとして入力されている場合、その文字を生
成するために使用できる 2 文字も出力します:
<ö> 246, Hex 00f6, Oct 366, Digr o:
これは、ö を入力するために CTRL-K o : とタイプすればよ
いことを意味しています。
g8
g8 カーソル位置の文字のバイト列を 16 進数で表示します。エ
ンコーディングが UTF-8 の場合のみ正しく機能します。
合成文字も表示されます。'maxcombine' の設定は影響しま
せん。
2 文字の合成文字が結合されている文字の表示例:
e0 b8 81 + e0 b8 b9 + e0 b9 89
8g8
8g8 カーソル以降の不正な UTF-8 バイト列を検索します。
次の二つの状況で機能します。
1. 'encoding' が 8-bit エンコーディングの場合。
2. 'encoding' が "utf-8" で、'fileencoding' が 8-bit
エンコーディングの場合。
UTF-8 のファイルを開いたはずが、不正なバイト列が含まれ
ていて、別の 8-bit エンコーディングとして開かれてし
まった場合などに使ってください。
検索がファイル末尾に達しても、ファイル先頭に戻って検索
を継続しません。
Note: カーソルがすでに不正なバイト列の上にある場合は、
カーソルは移動しません。
:p :pr :print E749
:[range]p[rint] [flags]
範囲 [range] の行を表示します (省略時は現在行を表示)。
Note: テキストファイルを印刷する方法については
:hardcopy を参照してください。GUI を使用している場合
は、メニューの File.Print から印刷できます。
[flags] については ex-flags を参照してください。
パターンにマッチした行だけを表示するのに、:filter コ
マンドを使うことができます。
:[range]p[rint] {count} [flags]
[range] の開始行から {count} 行を表示します([range]を
省略した場合は現在行から開始 cmdline-ranges)。
[flags] については ex-flags を参照してください。
:P :Print
:[range]P[rint] [count] [flags]
:print と同じです。シフトキーを長く押し続けてしまう人
のために追加されました。
このコマンドは Vim9 script ではサポートされません。
Note: ユーザーコマンドでこのコマンドを上書きできます。
[flags] については ex-flags を参照してください。
:l :list
:[range]l[ist] [count] [flags]
:print と同じですが、表示できない文字は '^'を付けて表
示し、行末に $ を置きます。表示は 'listchars' オプショ
ンの設定で変更できます。
[flags] については ex-flags を参照してください。
:nu :number
:[range]nu[mber] [count] [flags]
:print と同じですが、先頭に行番号を付加します。
(オプション 'highlight' と 'numberwidth' も参照)
[flags] については ex-flags を参照してください。
:#
:[range]# [count] [flags]
:number と同じです。
:#! vim-shebang
:#!{anything} 無視されます。そのため、次のようにして Vim script を実
行することができます:
#!vim -S
let mylogbook='$HOME/logbook.md'
exe $':e {mylogbook}'
$
put ='## ' .. strftime('%d. %b %Y')
norm! o
let mylogbook='$HOME/logbook.md'
exe $':e {mylogbook}'
$
put ='## ' .. strftime('%d. %b %Y')
norm! o
新しい日記エントリを作成するために、スクリプトを実行可
能にして実行します。
:z E144
:[range]z[+-^.=][count] [range]に指定した行の周辺を表示します。[range] を省略
した場合は現在行の周辺を表示します。
行の範囲をどれだけ表示するかは [count] に指定します。
[count] を省略し、ウィンドウが一つだけなら 'scroll' オ
プションの 2 倍の数が、そうでなければカレントウィンド
ウの高さから 3 を引いた数が使われます。これは、下の表
の "画面" の値です。
[count] が指定された場合は 'window' オプションがその値
に設定されます。
:z はマークを付加して使うこともできます。次の効果があ
ります。
記号 開始行 終了行 新しいカーソル位置
---- ------ ------ ----------
+ 現在行 1画面先 1画面先
- 1画面前 現在行 現在行
^ 2画面前 1画面前 1画面前
. 半画面前 半画面先 半画面先
= 半画面前 半画面先 現在行
マークを省略した場合は、"+" が使われます。マークが "="
の場合は、現在行の周りにマイナス記号で作った線が表示さ
れます。
:z!
:[range]z![+-^.=][count]
":z" と同じですが、[count]が指定されてない時、デフォル
トでVimのウィンドウの高さ-1になります。
:[range]z[!]#[+-^.=][count] :z#
":z" や ":z!" と同じですが、行番号も表示します。
:=
:= [flags] 最終行の行番号を表示します。
[flags] については ex-flags を参照してください。
:{range}= [flags] {range} で指定した範囲の最終行の行番号を表示します。例
えば、次のコマンドは現在行の行番号を表示します:
:.=
[flags] については ex-flags を参照してください。:norm[al][!] {commands} :norm :normal
ノーマルモードコマンド {commands} を実行します。コマン
ドラインからノーマルモードのコマンドを実行できます。
{commands} は、ノーマルモードで入力されたときと同じよ
うに実行されます。{commands} による変更は、一回のアン
ドゥで取り消されます。
エラーが発生すると実行停止します。
[!] を付けた場合はマップは適用されません。
付けなかった場合、このコマンドが非再帰マップ
(:noremap) 内で使われたとしても、引数は再マップされ
ます。
{commands} は実行を完了する (ノーマルモードに戻る) 必
要があります。
{commands} が完了しない場合は、最後のコマンドが<Esc>
や <C-C> で終了したのと同じように動作します。
挿入モードも必ず完了します (挿入モードを開始するには
:startinsert を参照)。":" コマンドも必ず完了します。
"Q" や "gQ" を使って Ex モードを開始することはできませ
ん。
":normal" の実行中は画面は更新されません。
{commands} の最初にスペースは置けません。そうしたい場
合はスペースの前にカウント指定の 1 (数字の 1) を置いて
ください。"1 " は 1 つのスペースになります。
{command} の実行ではオプション 'insertmode' は無視され
ます。
'|' は :normal コマンドの一部として処理されるので、こ
のコマンドの後に他のコマンドを続けて書けません。
:normal コマンドは 'maxmapdepth' の制限内で再帰的に呼
び出すことができます。
:execute コマンドには Vim script の式を指定できるの
で、印字可能文字を使って制御文字を入力することもできま
す。
例:
:exe "normal \<c-w>\<c-w>"
:{range}norm[al][!] {commands} :normal-range
{range} の各行に対してノーマルモードコマンド{commands}
を実行します。{commands} はカーソルが行頭にある状態で
実行されます。その他は範囲指定の無い ":normal" コマン
ドと同じです。
:sh :shell E371
:sh[ell] シェルを起動します。シェルを終了 ("exit"コマンドを実行)
すると Vim に戻ってきます。オプション 'shell' に設定さ
れているシェルコマンドを使います。
E360
Note: Amiga では、コンパイラから QuickFix モードで Vim
が起動された場合には、コンパイラが標準入力を非対話型
モードにしてしまうので使用できません。
:!cmd :!
:!{cmd} シェルで {cmd} を実行します。'shell' と 'shelltype' も
参照。フィルターコマンドについては、:range! を参照。
Vim は、オプション 'shell'、'shcf'、'sxq'、'shq' を使
用して、次の順序でコマンドラインを構築する:
&sh &shcf &sxq &shq {cmd} &shq &sxq
したがって、'sxq' と 'shq' の両方を設定することは可能
だが、ほとんど役に立たない。{cmd} 内の追加のエスケー
プは、'sxe' オプションによるものである可能性もある。
また、{cmd} 内のすべての cmdline-special 文字は、シェ
ルに渡される前に Vim によって置き換えられる。
E34
{cmd} の中の '!' は以前使用した外部プログラムに置
き換えられます ('cpoptions' も参照)。'!' の前にバック
スラッシュがある場合はバックスラッシュが削除され '!'
は置き換えられません。
例: ":!ls" を実行後の ":!echo !\! \\!" は
"echo ls ! \!" と解釈、実行されます。
{cmd} の中の '|' はシェルに渡されます。'|' を使って
Vim コマンドを続けて書くことはできません。(:bar参
照)。
{cmd} が "%" を含んでいたらそれは現在のファイル名に展
開されます。"#" を含んでいたらそれは代替ファイル名に展
開されます。ファイル名に入っている特殊文字はエスケープ
されないので、特殊文字の特殊な意味を打ち消すにはクォー
トを使います:
:!ls "%"
ファイル名が "$" を含んでいるならシングルクォートを使うとより良いでしょう、ただしそれでうまくいくのはファイ
ル名にシングルクォートが入っていない場合だけです:
:!ls '%'
次の例は常に機能します。ただし長い: :exe "!ls " .. shellescape(expand("%"))
"%" か "#" のリテラルを得るにはバックスラッシュを前に置きます。例えば、"%" で始まるファイルの一覧なら:
:!ls \%*
{cmd} の終わりを示す改行文字 (newline) 以降の文字は、
次の ":" コマンドとして解釈されます。改行文字の前に
バックスラッシュがある場合は、バックスラッシュは削除さ
れ、改行文字は {cmd} の一部として解釈されます。改行文
字の前にバックスラッシュがいくつあっても、一つだけが削
除されます。
Unix ではシェルを非対話型モードで起動します。対話型
モードで起動したい場合 (aliasを使いたい場合など) は、
'shellcmdflag' に "-ic" を設定してください。
Win32の場合は:!startも参照。
外部プログラムを実行した後で、開いているファイルのタイ
ムスタンプとサイズがチェックされます timestamp。
外部プログラムはメッセージを出力するかもしれないので、
外部プログラムを実行した後にスクリーンが再描画されます。
そのため、プログラムの出力を見逃してしまわないように、
hit-enter プロンプトが表示されます。プロンプトを表示し
たくない場合は、次のようにします:
:silent! !{cmd}
これでスクリーンは再描画されません。外部プログラムが何かを出力した場合は CTRL-L や ":redraw!" で再描画できま
す。しかし、これは termcap の t_ti と t_te のエン
トリに何が設定されているかに依存します。
ヒント: Vim ウィンドウで {cmd} を実行する場合は、
:terminal コマンドを使用する。
:term ++shell ++close {cmd} は、:!{cmd} の機能に近
いものになる。
:!!
:!! 最後の ":!{cmd}" を繰り返します。
:ve :ver :version
:ve[rsion] エディタのバージョンを表示します。コンパイル時に
"__DATE__" が利用可能だった場合には、コンパイルされた
日時も表示されます。利用不可だった場合は、リリースの最
終修正日時が表示されます。
Vim の、どの機能が有効になっているかも表示されます。機
能名の前に '+' があれば、その機能は有効になっていま
す。'-' のときは無効になっています。
機能の有無を変えるには feature.h を編集して、Vim をコ
ンパイルし直す必要があります。Vim script から機能の有
無を確認するには has() を使います。以下に、機能の概
要を示します。
行頭の文字はその機能が含まれる最小構成です:
T tiny (常に含まれる)
N normal
H huge
m 手動で組み込むか他の機能に依存
- 削除された機能
(none) システム依存
例えば "N" と書いてあれば、その機能は
normal、huge バージョンの Vim に含まれます。
+feature-list
+acl ACL サポートを含む
+ARP Amiga のみ: ARP サポートを含む
H +arabic Arabic言語サポート
H +autochdir autochdir オプションをサポート
T +autocmd :autocmd, 自動コマンド実行。8.0.1564 以降は常に有効
H +autoservername 自動的に clientserver を有効にする
m +balloon_eval GUIでの balloon-eval サポート。GUI が有効で、
Netbeans/Sun Workshop (+sun_workshop) または +eval
が有効な場合に利用できます。
H +balloon_eval_term 端末での balloon-evalサポート、'balloonevalterm'
N +browse :browse コマンド
T ++builtin_terms 全部の組み込み端末 builtin-terms 9.0.0280 以降は常に
有効
N +byte_offset 'statusline'の'o'フラグ、go、:gotoをサポート
m +channel プロセス間通信 channel
T +cindent 'cindent', C言語インデント; 常に有効
N +clientserver UnixとWin32: リモート呼び出し clientserver
+clipboard clipboard サポートコンパイル済み
+clipboard_working clipboard サポートコンパイル済みかつ動作中
T +cmdline_compl コマンドライン補完 cmdline-completion
T +cmdline_hist コマンドライン履歴 cmdline-history
T +cmdline_info 'showcmd' と 'ruler'; 9.0.0657 以降は常に有効
S +cmdwin cmdline-window サポート
T +comments 'comments' サポート
N +conceal "conceal" サポート。conceal :syn-conceal 他 参照。
N +cryptv 暗号化サポート encryption
H +cscope cscope サポート
T +cursorbind 'cursorbind' サポート
m +cursorshape termcap-cursor-shape サポート
m +debug Vim がデバッグ用にコンパイルされた
N +dialog_gui :confirm のGUIダイアログをサポート
N +dialog_con :confirm のコンソールダイアログをサポート
N +dialog_con_gui :confirm GUIとコンソールダイアログをサポート
N +diff vimdiffと'diff'
N +digraphs digraphs E196
+directx Win32 GUI のみ: DirectX と 'renderoptions'
+dnd "~レジスタ quote_~を使ったDnDのサポート
H +emacs_tags emacs-tags ファイル
N +eval 式評価 {訳注: Vim script} eval.txt
T +ex_extra 今は常にオン、かつてVimの拡張Exコマンドのためにあった
N +extra_search 'hlsearch' と 'incsearch' オプション
- +farsi 削除済み; farsi 言語
T +file_in_path gf, CTRL-W_f と <cfile> 9.0.265 以降は常に有効
N +find_in_path include ファイル検索: [I、:isearch、
CTRL-W_CTRL-I、:checkpath、その他
N +folding folding
+footer gui-footer
+fork Unix のみ: fork シェルコマンド
+float 浮動小数点数サポート
N +gettext メッセージの翻訳 multi-lang
- +GUI_Athena Unix のみ: Athena GUI
+GUI_neXtaw Unix のみ: neXtaw GUI
+GUI_GTK Unix のみ: GTK+ GUI
+GUI_Motif Unix のみ: Motif GUI
+GUI_Photon QNX のみ: Photon GUI
m +hangul_input ハングル入力サポート hangul
+iconv iconv() 関数が組み込まれている
+iconv/dyn iconv-dynamic /dyn と同じ
T +insert_expand insert_expand 挿入モード補完
m +ipv6 IPv6 ネットワーク通信サポート channel
m +job job の開始と停止 job
T +jumplist jumplist; 8.2.3795以降は常に有効
H +keymap 'keymap'
N +lambda lambda と closure
H +langmap 'langmap'
N +libcall libcall()
N +linebreak 'linebreak'、'breakat' と 'showbreak'
T +lispindent 'lisp'
T +listcmds バッファリストや引数リストに対するVimコマンド
buffer-hidden :argdelete
T +localmap バッファローカルなマップのサポート :map-local
m +lua Lua インターフェイス
m +lua/dyn Lua インターフェイス /dyn
N +menu :menu
N +mksession :mksession
T +modify_fname filename-modifiers
T +mouse マウス操作 mouse-using
N +mouseshape 'mouseshape'
N +mouse_dec Unix のみ: Dec端末マウス操作 dec-mouse
N +mouse_gpm Unix のみ: Linuxコンソールマウス操作 gpm-mouse
m +mouse_gpm/dyn +mouse_gpm と同じだが、ライブラリへの依存がオプショ
ナル /dyn
N +mouse_jsbterm JSB マウスサポート jsbterm-mouse
N +mouse_netterm Unix のみ: nettermマウス操作 netterm-mouse
N +mouse_pterm QNX のみ: ptermマウス操作 qnx-terminal
N +mouse_sysmouse Unix のみ: *BSD コンソールマウス操作 sysmouse
N +mouse_sgr Unix のみ: sgrマウス操作 sgr-mouse
N +mouse_urxvt Unix のみ: urxvtマウス操作 urxvt-mouse
N +mouse_xterm Unix のみ: xtermマウス操作 xterm-mouse
T +multi_byte Unicodeサポート、16ビット、32 ビット文字 multibyte
+multi_byte_ime Win32 IMEサポート
N +multi_lang 多言語サポート multi-lang
m +mzscheme Mzscheme インターフェイス mzscheme
m +mzscheme/dyn Mzscheme インターフェイス mzscheme-dynamic /dyn
m +netbeans_intg netbeans
T +num64 64ビットの数値をサポート Number
8.2.0271以降は常に有効になっている。実際の数値のサイズ
を確認するにはv:numbersizeを使用すること。
m +ole Win32 GUI のみ: ole-interface
N +packages packages の読み込み
T +path_extra 'path'や'tags'での上下階の検索 9.0.0270 以降は常に有効
m +perl Perl インターフェイス perl
m +perl/dyn Perl インターフェイス perl-dynamic /dyn
N +persistent_undo 永続 undo undo-persistence
N +popupwin ポップアップウィンドウ popup-window
+postscript :hardcopy でPostScriptファイルの書き出し
N +printer :hardcopy コマンド
H +profile :profile コマンド
m +python Python 2 インターフェイス python
m +python/dyn Python 2 インターフェイス python-dynamic /dyn
m +python3 Python 3 インターフェイス python
m +python3/dyn Python 3 インターフェイス python-dynamic /dyn
m +python3/dyn-stable
Python 3 インターフェイス python-dynamic
python-stable /dyn
N +quickfix :make と quickfix コマンド
N +reltime reltime() 関数, 'hlsearch'/'incsearch' タイムアウト,
'redrawtime' オプション
H +rightleft 右から左へタイプ 'rightleft'
m +ruby Ruby インターフェイス ruby
m +ruby/dyn Ruby インターフェイス ruby-dynamic /dyn
T +scrollbind 'scrollbind'
N +signs :sign
T +smartindent 'smartindent'
H +sodium より良い暗号化サポートのために libsodium とコンパイル
されている
H +sound sound_playevent(), sound_playfile() 関数等
N +spell スペルチェックサポート spell
N +startuptime --startuptime 引数
N +statusline オプション'statusline'、'rulerformat'と、
'titlestring'と'iconstring'の特殊フォーマット
- +sun_workshop 削除済み; workshop
N +syntax 構文強調 syntax
+system() Unix のみ: +forkの反対
T +tag_binary タグファイル内の高速(二分探索)検索 tag-binary-search
- +tag_old_static 削除済み; 静的タグの方法 tag-old-static
- +tag_any_white 削除済み; タグファイル内の空白を許すためのものだった
m +tcl Tcl インターフェイス tcl
m +tcl/dyn Tcl インターフェイス tcl-dynamic /dyn
m +terminal ターミナルウィンドウのサポート terminal
+terminfo terminfoでtermcapを代替
N +termresponse t_RV と v:termresponse のサポート
N +termguicolors xterm互換端末での 24 ビット色のサポート
T +textobjects text-objects 選択。9.0.0222 以降は常に有効。
N +textprop text-properties
+tgetent 非Unix のみ: 外部termcapを使用可能
N +timers timer_start() 関数
T +title ウィンドウタイトルとアイコン設定 'title' 'icon';
常に有効
N +toolbar gui-toolbar
T +user_commands ユーザー定義コマンド user-commands
8.1.1210 からは常に有効。
H +vartabs 可変幅のタブストップ。'vartabstop'
T +vertsplit ウィンドウの垂直分割 :vsplit; 8.0.1118 からは常に
有効。
T +vim9script Vim9 script
N +viminfo 'viminfo'
T +virtualedit 'virtualedit' 8.1.826 からは常に有効
T +visual ビジュアルモード Visual-mode 7.4.200からは常に有効
T +visualextra 拡張ビジュアルモードコマンド blockwise-operators
T +vreplace gR と gr
+vtp MS-Windows コンソール上での 'termguicolors' のサポート
T +wildignore 'wildignore' 9.0.0278 以降は常に有効
T +wildmenu 'wildmenu' 9.0.0279 以降は常に有効
T +windows 複数ウィンドウ; 8.0.1118 からは常に有効
m +writebackup 'writebackup'がデフォルトで有効
m +xim Xインプットメソッド xim
+xfontset Xフォントセットサポート xfontset
N +xattr 拡張属性サポート付きでコンパイルされている (Linux のみ)
+xpm pixmap サポート
m +xpm_w32 Win32 GUI のみ: pixmap サポート w32-xpm-support
+xsmp XSMP(X session management)サポート
+xsmp_interact 対話型XSMP(X session management)サポート
N +xterm_clipboard Unix のみ: xtermクリップボード操作
m +xterm_save xtermのスクリーンを保存と復帰 xterm-screens
N +X11 Unix のみ: ウィンドウタイトルを復帰可能 X11
/dyn E370 E448
機能が動的ライブラリを利用する場合には機能名に"/dyn"
が付加されます。
:ve[rsion] {nr} 現在は無視されます。これはかつて .vimrc の中でバージョ
ン番号をチェックするために使われていました。現在は
":if" コマンドを使ってバージョン依存の振る舞いを記述で
きるので、削除されています。
:redi :redir
:redi[r][!] > {file} コマンドの出力 (メッセージ) を {file} にリダイレクトし
ます。メッセージは、リダイレクトを終了するまで、ファイ
ルに出力されます。メッセージは画面にも表示されます。
[!] を付けたときは、既存のファイルが上書きされます。
[!] を省略した場合は、すでに {file} が存在していると、
コマンドは失敗します。
":redir" を同時に複数使用することはできません。
":redir" を実行すると、新しいリダイレクトを開始する前
に、すでに実行されている他のリダイレクトは閉じられま
す。
再帰的に実行するには execute() を調べてください。
実行中のコマンドやメッセージがスクリーンに表示されない
ようにするには、コマンドを関数の中に書き、その関数を
":silent call Function()" と実行してください。
このコマンドの代わりに、オプション 'verbosefile' を使
うこともできます。":redir" と同時に使うこともできま
す。
:redi[r] >> {file} メッセージを {file} にリダイレクトします。
{file} が既に存在する場合は追記します。
:redi[r] @{a-zA-Z}
:redi[r] @{a-zA-Z}> メッセージをレジスタ {a-z} にリダイレクトします。レジ
スタ名が大文字 {A-Z} の場合は、そのレジスタに追記され
ます。レジスタ名の後ろの ">" は省略可能です。
:redi[r] @{a-z}>> メッセージをレジスタ {a-z} に追記します。
:redi[r] @*>
:redi[r] @+> メッセージをセレクションまたはクリップボードにリダイレ
クトします。互換性のため、レジスタ名の後ろの ">" は省
略できます。quotestar と quoteplus を参照。
:redi[r] @*>>
:redi[r] @+>> メッセージをクリップボードに追記します。
:redi[r] @"> メッセージを無名レジスタにリダイレクトします。互換性の
ため、レジスタ名の後ろの ">" は省略できます。
:redi[r] @">> メッセージを無名レジスタに追記します。
E1092
:redi[r] => {var} メッセージを変数にリダイレクトします。
旧来のスクリプトでは: 変数が存在しない場合は、作成され
ます。変数がすでにある場合は、空文字列で初期化されま
す。リダイレクトを開始した後で変数を変更したり、ロック
したり、変数タイプを変更したりすると、それ以降のコマン
ドがメッセージを出力するときにエラーが起こります。ロー
カルな変数(関数内での l:var あるいはスクリプト内での
s:var)を使用していて、別の :redir によって現在のもの
が終了した場合、スコープが異なることで代入が失敗するこ
とがあります。
Vim9 script では: 変数が文字列として宣言されている必要
があります。
リダイレクトが終了するまでは、変数は空のままです。
文字列変数のみ使えます。
コマンド1つの出力を取得するのにはリダイレクトの代わりに
execute() 関数を使うことができます。
:redi[r] =>> {var} メッセージを変数に追記します。文字列変数のみ使えます。
E1185
:redi[r] END メッセージのリダイレクトを終了します。
:filt :filter
:filt[er][!] {pattern} {command}
:filt[er][!] /{pattern}/ {command}
コマンドの出力を {pattern} に一致する行に制限します。
例として xml ファイルだけを一覧する場合には以下のよう
にします:
:filter /\.xml$/ oldfiles
[!] を付けたときは、コマンドの出力を {pattern} に一致しない行に制限します。
{pattern} は Vim の検索パターンです。パターンを囲む
"/" は、{pattern} 内に使われない限り、非ID文字
('isident') で代用できます。パターンを囲む文字を省略
した場合は、パターンにバー文字 {訳注: "|"} を含むこと
はできなくなります。'ignorecase' は使われません。
パターンは出力に部分一致でマッチするので、行全体に
マッチするパターンを指定する必要はありません。一部のコ
マンドだけがフィルタリングをサポートしているので、サ
ポートしているかどうかは実際に試してみてください。フィ
ルタリングをサポートするコマンドの一部:
:# - 行全体をフィルタ
:clist - ファイル名かモジュール名でフィルタ
:command - コマンド名でフィルタ
:files - ファイル名でフィルタ
:highlight - ハイライトグループでフィルタ
:history - 履歴コマンドでフィルタ
:jumps - ファイル名でフィルタ
:let - 変数名でフィルタ
:list - 行全体をフィルタ
:llist - ファイル名かモジュール名でフィルタ
:marks - 現在のファイル内のテキストか他のファ
イルのファイル名でフィルタ
:oldfiles - ファイル名でフィルタ
:registers - レジスタの内容でフィルタ
(複数行は動作しない)
:set - オプション名でフィルタ
通常のメッセージだけがフィルタリングされ、エラー
メッセージはされません。 {訳注: 常に出力されます}
:sil :silent :silent!
:sil[ent][!] {command} {command} を静かに実行します。メッセージは表示されず、
メッセージ履歴にも残りません。
[!] を付けた場合は、エラーが起きたときでもエラーメッ
セージは表示されず、コマンドやマップは中断されません。
その場合でも v:errmsg はセットされます。
[!] を付けない場合は、エラーメッセージは通常どおりに表
示されます。
:redir によるリダイレクトは通常どおり機能します。
:silent を使うとコマンドの出力をスクリーンに表示する
ことなくリダイレクトすることができます。例:
:redir >/tmp/foobar
:silent g/Aap/p
:redir END
ノーマルモードコマンドを静かに実行するには:normalコ:silent g/Aap/p
:redir END
マンドを使用します。例えばメッセージを表示することなく
文字列を検索するには:
:silent exe "normal /path\<CR>"
":silent!" は失敗するかもしれないコマンドを実行するときには便利ですが、エラーが無視されてしまいます。例:
:let v:errmsg = ""
:silent! /^begin
:if v:errmsg != ""
: ... パターンは見つかりませんでした
":silent" は hit-enter プロンプトも抑制します。外部プ:silent! /^begin
:if v:errmsg != ""
: ... パターンは見つかりませんでした
ログラムを実行したとき、その出力は表示されたままになっ
てしまいます。その場合はCTRL-Lでスクリーンをきれいに
できます。
":silent menu ..." はコマンドをコマンドラインにエコー
しないメニューを定義できます。しかしメニューに割り当て
たコマンドのメッセージは表示されます。表示しないように
するにはそのコマンド自身に ":silent" を付けてください:
":silent menu .... :silent command"
:uns :unsilent
:uns[ilent] {command} {command} を静かでなく実行します。:silent コマンドが
使用されているときのみ違いがでます。
:silent が使われていてもメッセージを表示したいときに
使用します。次の例では、:silent を使ってファイル読み
込みに関するメッセージを抑制しつつ、:unsilent を使っ
て各ファイルの最初の行を表示できるようにしています:
:silent argdo unsilent echo expand('%') .. ": " .. getline(1)
:verb :verbose
:[count]verb[ose] {command}
'verbose' に [count] を設定した状態で {command} を実行
します。[count] を省略した場合は1が設定されます。
":0verbose" として 'verbose' をゼロにすることもできま
す。
":silent" と一緒に使用すると、メッセージは生成されます
が、表示はされません。
":silent" と ":verbose" を一緒に使用するとメッセージを
生成して v:statusmsg を確認することができます。例:
:let v:statusmsg = ""
:silent verbose runtime foobar.vim
:if v:statusmsg != ""
: " foobar.vim が見付からない
:endif
コマンドを連続させた場合は、":verbose"は最初のコマンド:silent verbose runtime foobar.vim
:if v:statusmsg != ""
: " foobar.vim が見付からない
:endif
だけに適用されます:
:4verbose set verbose | set verbose
verbose=4verbose=0
メッセージをログファイルに出力するには 'verbosefile'
を使ってください。
:verbose-cmd
Vim のオプション、マップ、短縮入力、ユーザー定義関数、ユーザー定義コマンド、ハ
イライトグループ、自動コマンド、を表示するとき、'verbose' がゼロ以外だと、それ
が設定された場所も表示されます。手動で設定したときは "Last set" メッセージは表
示されません。関数、ユーザーコマンド、自動コマンド、を実行中に設定された場合に
は、そのコマンドを定義したスクリプトが表示されます。
{+eval が有効な場合のみ利用できます}
K
K カーソル位置のキーワードを調べるためのプログラムを実行
します。プログラムの名前はオプション 'keywordprg' (kp)
で設定します (初期設定は "man")。キーワードはアルファ
ベット、数字、'iskeyword' に設定された文字から構成され
ます。
カーソルの下、もしくは右側のキーワード使用されます。次
のコマンドで同じことができます:
:!{program} {keyword}
Vim の tools ディレクトリにサンプルプログラムがあります。"ref" という簡易スペルチェックプログラムです。
特別なケース:
- 'keywordprg' が ":" で始まるならば、それは Vim の Ex
コマンドとして [count] を伴って実行されます。
- 'keywordprg' が空の場合は、":help" コマンドが使われ
ます。検索しやすくするために 'iskeyword' に文字を追
加すると良いでしょう。
- 'keywordprg' が "man" もしくは ":" で始まる場合
は、"K" の前に入力されたカウントが "man" と
キーワードの間に挿入されます。例えば、"mkdir" に
カーソルがあって、"2K" を実行すると、結果はこのよう
になります:
!man 2 mkdir
- 'keywordprg' が "man -s" の場合は、"K" の前に入力されたカウントは "-s" の後に挿入されます。カウントを省
略した場合は、"-s" は除去されます。
v_K
{Visual}K "K" と同じですが、キーワードにはビジュアル選択されたテ
キストが使用されます。複数行を選択したときは機能しませ
ん。
[N]gs gs :sl :sleep
:[N]sl[eep] [N][m] [N] 秒間何もしません。[m] を付けると、[N] ミリ秒間ス
リープします。"gs" に指定する数値は常に秒単位です。省
略時は 1 秒間スリープします。
:sleep " 1 秒スリープ
:5sleep " 5 秒スリープ
:sleep 100m " 100 ミリ秒スリープ
10gs " 10 秒スリープ
CTRL-C で割り込むことができます(MS-Windowsでは:5sleep " 5 秒スリープ
:sleep 100m " 100 ミリ秒スリープ
10gs " 10 秒スリープ
CTRL-Break)。"gs" は "goto sleep" の略です。
カーソルが表示可能な位置にある場合は、スリープしている
間、カーソルはテキスト中に表示されます。
スリープ中に受信した netbeans メッセージは処理されま
す。{+netbeans_intg 機能つきでコンパイルされたときの
み利用可能}
:sl! :sleep!
:[N]sl[eep]! [N][m] 上記と同じですが、カーソルが非表示となります。
:xrestore :xr
:xr[estore] [display] X11サーバーへの接続を再初期化します。Xサーバーが再起動
した後に便利です。例えば、screen/tmux内でVimを長時間実
行していて、異なるマシンから接続しているとき。
[display] は $DISPLAY 環境変数の形式にする必要がありま
す (例: "localhost:10.0")
[display] を省略すると、前回このコマンドの実行で使用し
たものと同じ値を使用して、X11サーバーへの接続を再初期
化します。値が指定されていない場合は、Vimの起動時と同
じ環境変数 $DISPLAY の値が使用されます。
{+clipboard 機能つきでコンパイルされたときのみ利用可
能}
g_CTRL-A
g CTRL-A MEM_PROFILING を define して Vim をコンパイルしたとき
み使えます (通常は使いません)。メモリ使用量の統計を表
示します。Vim をデバッグするときなどに使います。
ビジュアルモード時のインクリメントは v_g_CTRL-A を参
照。
==============================================================================
2. less、more の代わりに Vim を使う less
less や more ではファイルを構文強調表示できません。代わりに、Vim を使うことが
できます。それには、シェルスクリプト "$VIMRUNTIME/macros/less.sh" を使います。
このシェルスクリプトは Vim script "$VIMRUNTIME/macros/less.vim" を使って、
less のコマンドをシミュレートするためのマップを設定します。less コマンド以外は
通常どおり、Vim のコマンドを使うことができます。
完璧に同じ動作ではありません。例えば、短いファイルを表示する場合でも、Vim はス
クリーンを占有します。しかし、ほとんどの場合は十分に機能します。それにとにか
く、構文強調表示することができます。
"h" キーを押すと使用できるコマンドのショートヘルプが表示されます。
もし less を使っていて異なるオプションを設定したい場合は vimrc に LessInitFunc
を定義します。例:
func LessInitFunc()
set nocursorcolumn nocursorline
endfunc
set nocursorcolumn nocursorline
endfunc
vim:tw=78:ts=8:noet:ft=help:norl: