Vim patchダイジェスト [2019/04]

[Vim](http://www.vim.org/)のリリースされた[patch](https://github.com/vim/vim/commits/master)の**平成最後**の説明です。patchの内容を確認し、必要であれば動作確認をおこなったうえで書いています。英語を忠実に訳すよりは、Vimを使っている人が理解しやすい文章になるように心がけています。
**新機能、大幅な仕様変更には、:four_leaf_clover:が付いています。**
([8.1.1100](https://github.com/vim/vim/commit/fd700393becfc35b6fad305221265b87a8564ddb) ～ [8.1.1240](https://github.com/vim/vim/commit/d96dbd6f95ea22f609042cc9c6272f14a21ff1a5))

* [8.1.1237](https://github.com/vim/vim/commit/52111f82318dfbeb6a0b06230c0609abff509250): :alien:ソースコードで使用している変数名`compl`がC++の予約済みキーワードのためコンパイルエラーになるのを修正しました。
* [8.1.1231](https://github.com/vim/vim/commit/67cf86bfff5fd5224d557d81cb146f46e33b831c): :four_leaf_clover:安全であると判断した場合はスワップファイルを自動的に削除するようにしました。
* [8.1.1230](https://github.com/vim/vim/commit/afde13b62b8fa25dac4635d5caee8d088b937ee0): :four_leaf_clover:Windows: vim.exe と gvim.exe の共通部分を vim.dll で共有できるようにしました。ビルド時に`VIMDLL=yes`を指定すると有効になります。(デフォルトは`no`) (関連patch: [8.1.1239](https://github.com/vim/vim/commit/a9dd2d3c759c1eafb9c0572c5707852ed3d38162))
* [8.1.1228](https://github.com/vim/vim/commit/45e18cbdc40afd8144d20dcc07ad2d981636f4c9): :four_leaf_clover:`tagfunc()`を追加しました。指定した関数でタグジャンプ時に使われるタグリストの生成の制御がおこなえます。
* [8.1.1226](https://github.com/vim/vim/commit/6c60f47fb9251e686217d51cf81847e14d0dd26d): :four_leaf_clover:helpテキストの`{not in Vi}`は邪魔なので、すべてのViオプションのリストを作成しました。(`:h vi-features`) ※まだ作業途中です。
* [8.1.1224](https://github.com/vim/vim/commit/f720d0a77e393990b2171a77210565bdc82064f2): :four_leaf_clover:Windows: `'guifont'`に`W`を追加しました。font weightが指定できます。(関連patch: [8.1.1238](https://github.com/vim/vim/commit/a0e67fc1663c9d5317022ea3bf252e08574c9f6f))
* [8.1.1221](https://github.com/vim/vim/commit/ad6dc49a7564a99fca36c1928e3865787d3bd5b2): :four_leaf_clover:`:filter`の対応コマンドに`:marks`を追加しました。
* [8.1.1218](https://github.com/vim/vim/commit/00aa069db8132851a91cfc5ca7f58ef945c75c73): :four_leaf_clover:タブローカルディレクトリ機能を追加しました。`:tcd`と`:tchdir`で設定します。情報は`getcwd()`で取得可能です。
* [8.1.1215](https://github.com/vim/vim/commit/49543fbcedb19a1db0d2144737efc0266057ff1d): :alien:`make clean`が生成した`src/po`ファイルを削除していないのを修正しました。(関連patch: [8.1.1213](https://github.com/vim/vim/commit/e13a3901cae0afb4d2af30d497696af08029fd81))
* [8.1.1210](https://github.com/vim/vim/commit/ac9fb18020d7e8bf16d02d45fbb02cf47328aaf7): :four_leaf_clover::alien:user_commands機能を常に有効にしました。user_commands関連機能のソースコードを新規ファイル usercmd.c に集約しました。(関連patch: [8.1.1211](https://github.com/vim/vim/commit/e61e548dd6a20471fd81160b1c2a16089505ec8c))
* [8.1.1205](https://github.com/vim/vim/commit/a68e59590905da9b4448ff1fcac929ad1a18da9e): `BufReadPre`がトリガーするとカーソルが移動することがあるのを修正しました。
* [8.1.1201](https://github.com/vim/vim/commit/725310d89e1ba268bf410472b7de054c6c260161): :four_leaf_clover:`:command`の出力結果が見づらいので各項目の表示カラム幅を調整しました。(関連patch: [8.1.1204](https://github.com/vim/vim/commit/a561a41a70db7a9367f883c1dbb14e69b3364d08))
* [8.1.1198](https://github.com/vim/vim/commit/958eabe5e53673fc39186432ff98b3656663beeb): Vim終了後に端末エミュレータがbracketed paste modeになってしまうことがあるのを修正しました。
* [8.1.1196](https://github.com/vim/vim/commit/7bde95a461fafaa15cc45a006eaa4d0f3c2dfe92): 並列ビルドが失敗することがあるのを修正しました。
* [8.1.1195](https://github.com/vim/vim/commit/eead75c5e8e1f965548c55ee3a9388b2cb3afc36): :alien:Vim scriptのデバック機能関連のソースコードを新規ファイル debugger.c に集約しました。
* [runtimeファイル更新](https://github.com/vim/vim/commit/911ead126903aeb9564bad89e46a147ed4959896): [Todo](https://github.com/vim/vim/commit/911ead126903aeb9564bad89e46a147ed4959896)更新。helpファイル更新。他。
* [8.1.1189](https://github.com/vim/vim/commit/abc7c7fc5a098374f5543a237e6c9dd918848b34): インサートモードを抜けた時にステータスラインの`-- INSERT --`表示が残ったままになることがある件を修正しました。
* [8.1.1188](https://github.com/vim/vim/commit/d2e716e6dfd50b605867c7c684373384c8edf707): :four_leaf_clover:scriptversion 3以降ではVim定義済み変数(`:h v:`)のアクセスに`v:`プレフィックスが必須になりました。(関連patch: [8.1.1190](https://github.com/vim/vim/commit/93a4879c2008bbd26aac072e7cdc65b3ce7c32a3))
* [8.1.1177](https://github.com/vim/vim/commit/1a4dce7cad4af4de347853aad6d671da2df662ad): :four_leaf_clover:拡張子`.ts`のファイルタイプをxmlからTypeScriptに変更しました。
* [8.1.1174](https://github.com/vim/vim/commit/8dc4c7292364d31cfb8afa8a67984b78b657b192): if_ruby:Ruby 1.8でビルドできない件を修正しました。
* [8.1.1159](https://github.com/vim/vim/commit/a8d22e3a40483cd1fa9c6e45dcf383f49f16833a): :four_leaf_clover:Windows:[インストーラー](https://github.com/vim/vim-win32-installer/releases)はインストール/アンインストールのサイレントモード時に`$VIM/_vimrc`を削除しないようにしました。
* [8.1.1158](https://github.com/vim/vim/commit/04af19637c14045fa33b99576de4eea1e3524edb): Jsonでエンコードされた文字列が時々最後のNULが欠けていることがあるのを修正しました。。
* [8.1.1157](https://github.com/vim/vim/commit/f9b89b467965802b8d14251c0dd944343796edcd): :four_leaf_clover:[Unicode 12.0.0](https://unicode.org/versions/Unicode12.0.0/)に対応しました。
* [8.1.1156](https://github.com/vim/vim/commit/d489c9801b3aaf284d42643507bbfb9ce3bc0f2f): 認識可能なUnicode emojiを追加しました。
* [8.1.1149](https://github.com/vim/vim/commit/26096cc96fc402db45948b3b662a380281585649): msgfmtコマンドが古いとdesktopファイルのビルドに失敗する件を修正しました。(関連patch: [8.1.1150](https://github.com/vim/vim/commit/29a9baa0779c21f3d055a7b119d6d5650f4ae56e), [8.1.1154](https://github.com/vim/vim/commit/496555fd18219cb902d7683b3f08dd2e47cbdc1a))
* [8.1.1146](https://github.com/vim/vim/commit/ef8c83c550e2562362c4385f0823e41ae67cfada): Windows: コンソール版でterminalウィンドウの色がおかしかったのを修正しました。
* [8.1.1140](https://github.com/vim/vim/commit/46ad288b9b2a6eb0430cf802ff5ce68a58629897): :four_leaf_clover:`winnr()`の引数{arg}にカレントウィンドウ基準の相対位置を指定できるようにしました。例: `'1j'`で1つ下のウィンドウ番号を、`'2l'`で右2つ目のウィンドウ番号を返します。
* [8.1.1138](https://github.com/vim/vim/commit/d7f246c68cfb97406bcd4b098a2df2d870b3ef92): :four_leaf_clover:`CompleteChanged`を追加しました。インサートモードの補完ポップアップメニューが変更された時にトリガーされます。
* [runtimeファイル更新](https://github.com/vim/vim/commit/62e1bb4a111e7ce570c30965f40a68a07a9da5b0): [Todo](https://github.com/vim/vim/commit/62e1bb4a111e7ce570c30965f40a68a07a9da5b0#diff-38d7929bd26d74d92ceddf984bbfc8db)更新。helpファイル更新。他。
* [8.1.1125](https://github.com/vim/vim/commit/fa1e90cd4d1bebd66da22df4625f70963f091f17): VimがlibvtermへCSIハンドラを渡していなかったために、libvtermがウィンドウ位置レポートを扱えていなかった件を修正しました。(関連patch: [8.1.1127](https://github.com/vim/vim/commit/6bc9305a02f77136e65347951618575b2033cbc9), [8.1.1128](https://github.com/vim/vim/commit/94a7242ad1c41cc2a5377535f81d29a5b374b983), [8.1.1131](https://github.com/vim/vim/commit/16c34c37659e6afca74169969bdacb6b866548c9), [8.1.1132](https://github.com/vim/vim/commit/616aeef21f2abd0bc51dd98e641ade9bbc29a078), [8.1.1141](https://github.com/vim/vim/commit/1b55797e90c5fe41691afe43aed8afffbbcebeb9))
* [8.1.1123](https://github.com/vim/vim/commit/73655cf0ca37a9aa8f56fc51bb853a8b1f7b43d4): :four_leaf_clover:`complete()`の第2引数{matches}に指定する補完項目リストの辞書のエントリーに`equal`を追加しました。この値が非ゼロの項目は常に補完候補として表示されます。
* [8.1.1122](https://github.com/vim/vim/commit/9d40128afd7fcd038ff6532722b55b1a8c189ce8): :four_leaf_clover:`str2list()`と`list2str()`を追加しました。文字列から文字コードのリスト変換、および逆変換がおこなえます。
* [8.1.1120](https://github.com/vim/vim/commit/543c9b1921d7605498b54afdef518e312f1b4515): :four_leaf_clover:`readdir()`を追加しました。既存の関数`glob()`より複雑なことがおこなえます。(関連patch: [8.1.1186](https://github.com/vim/vim/commit/334ad415040f9592451ec99498cd99f90d6e33e6))
* [8.1.1119](https://github.com/vim/vim/commit/577fadfc100ff8fa569a34b89f5ad055ad726646): :four_leaf_clover:Windows: ARM64をサポートしました。
* [8.1.1116](https://github.com/vim/vim/commit/558ca4ae55096f8763ab8515a304cda9c57f18a7): :four_leaf_clover:`:scriptversion`を追加しました。Vim scriptバージョンが 2以上の場合は、`.` による文字列連結がエラーになります。(関連patch: [8.1.1114](https://github.com/vim/vim/commit/0f248b006c2574abc00c9aa7886d8f33620eb822))
* [8.1.1114](https://github.com/vim/vim/commit/0f248b006c2574abc00c9aa7886d8f33620eb822): :four_leaf_clover:文字列の連結用に `..`演算子と`..=`演算子を追加しました。AST(抽象構文木)化できるようにするための変更です。(関連URI: [vim-jp/issue/1225](https://github.com/vim-jp/issues/issues/1225))
* [8.1.1113](https://github.com/vim/vim/commit/eb93f3f0e2b2ae65c5c3f55be3e62d64e3066f35): :four_leaf_clover:`:autocmd`に`++once`引数を追加しました。指定時は1回実行されるとコマンドが削除されます。また、"nested" の別名として`++nested`を追加しました。
* [8.1.1111](https://github.com/vim/vim/commit/fda1bff39f89775b20a2d88ef3903656d52f66ad): :four_leaf_clover:`isinf()`を追加しました。正の無限大、負の無限大かどうかを返します。
* [8.1.1110](https://github.com/vim/vim/commit/e5e4e22c1c15c8c22b14935affe969569acc8df9): `'listchars'`が設定されていると、スペース上の文字合成の表示が間違っている件を修正しました。(関連patch: [8.1.1078](https://github.com/vim/vim/commit/5f8069bbf5d989936a2f4d7a76ae42434017e3a2))
* [runtimeファイル更新](https://github.com/vim/vim/commit/723dd946f94856be94a943876945fb1bd8169059): [Todo](https://github.com/vim/vim/commit/723dd946f94856be94a943876945fb1bd8169059#diff-38d7929bd26d74d92ceddf984bbfc8db)更新。helpファイル更新。他。
* [8.1.1103](https://github.com/vim/vim/commit/0eb035c974c47e65d32439b48e5a056b370ad429): :alien:Windows: 常にwide Windows APIを使用するようにしました。
* [8.1.1100](https://github.com/vim/vim/commit/fd700393becfc35b6fad305221265b87a8564ddb): ファイルの最後に改行のないタグファイルが動作しなくなった件を修正しました。(関連patch: [8.1.1094](https://github.com/vim/vim/commit/5209334c551778fe6f76945f373ee14fcac96f52))

---
#### 凡例

|表記|意味|
|:------|:------|
|:four_leaf_clover:|新機能、大幅な仕様変更|
|:alien:|Vim開発者向けの追加、変更|
|`'hoge'`|オプション (`:h options`参照)|
|`:hoge`|Exコマンド (`:h :index`参照)|
|`hoge()`|組み込み関数 (`:h functions`参照)|
|`v:hoge`|Vim定義済変数 (`:h v:`参照)|
|`+hoge`|feature (`:h +feature-list`参照)|

---
#### 方針
[こちら](http://qiita.com/h_east/items/23cd0d10932505072e6b#%E6%96%B9%E9%87%9D)を参照。