[
  {
    "path": ".gitignore",
    "content": "tags\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "有兴趣加入本项目的话，请关注下面的认领列表，选择相应的章节翻译，或者协助校验正在翻译的项目。如果有兴趣加入，可以fork本项目，开始翻译后提交PR，便于我们协助校验，不必翻译结束后才提交PR.\n\n## 认领方式\n\n**开issue**\n\n```md\n章节名称：*****\n译者：******\nPR: PR的链接\n```\n\n## 提交方式\n\n每个章节独立翻译，并提交至 [chapter/](chapter/) 文件夹，文件名为英文标题小写，以`-`链接单词。例如翻译`What is Vim？`章节， 文件名即为`chapter/what-is-vim.md`. 合并到主仓库后，将定期将这些章节文件合并到`README.dm`。\n\n## 章节列表\n\n基于[mhinz/vim-galore@d50d48b](https://github.com/mhinz/vim-galore/tree/d50d48bce40bbbd99a0528a2893b00cf54a6f4b9), 后期如果有改动，定期在更新。\n\n|章节名称|认领状态|PR链接|\n|:------|:------|:------|\n| [Intro](https://github.com/mhinz/vim-galore#intro) | [wsdjeg] | [#4] |\n| [What is Vim?](https://github.com/mhinz/vim-galore#what-is-vim) | [wsdjeg] | [#4] |\n| [The Vim Philosophy](https://github.com/mhinz/vim-galore#the-vim-philosophy) | [wsdjeg] | [#4] |\n| [First steps](https://github.com/mhinz/vim-galore#first-steps) | [wsdjeg] | [#4] |\n| [Minimal vimrc](https://github.com/mhinz/vim-galore#minimal-vimrc) | [wsdjeg] | [#4] |\n| [What kind of Vim am I running?](https://github.com/mhinz/vim-galore#what-kind-of-vim-am-i-running) | [wsdjeg] | [#4] |\n| [Cheatsheets](https://github.com/mhinz/vim-galore#cheatsheets) | [wsdjeg] | [#4] |\n| [Basics](https://github.com/mhinz/vim-galore#basics-1) | [wsdjeg] | [#4] |\n| [Buffers, windows, tabs](https://github.com/mhinz/vim-galore#buffers-windows-tabs) | [wsdjeg] | [#4] |\n| [Active, loaded, listed, named buffers](https://github.com/mhinz/vim-galore#active-loaded-listed-named-buffers) | [wsdjeg] | [#4] |\n| [Argument list](https://github.com/mhinz/vim-galore#argument-list) | [wsdjeg] | [#4] |\n| [Mappings](https://github.com/mhinz/vim-galore#mappings) | [wsdjeg] | [#4] |\n| [Mapleader](https://github.com/mhinz/vim-galore#mapleader) | [星星丶S1nG] | [#7] |\n| [Registers](https://github.com/mhinz/vim-galore#registers) | [星星丶S1nG] | [#7] |\n| [Ranges](https://github.com/mhinz/vim-galore#ranges) | [星星丶S1nG] | [#7] |\n| [Marks](https://github.com/mhinz/vim-galore#marks) | [星星丶S1nG] | [#7] |\n| [Completion](https://github.com/mhinz/vim-galore#completion) | [星星丶S1nG] | [#7] |\n| [Motions, operators, text objects](https://github.com/mhinz/vim-galore#motions-operators-text-objects) | [星星丶S1nG] | [#7] |\n| [Autocmds](https://github.com/mhinz/vim-galore#autocmds) | [星星丶S1nG] | [#7] |\n| [Changelist, jumplist](https://github.com/mhinz/vim-galore#changelist-jumplist) | [星星丶S1nG] | [#7] |\n| [Undo tree](https://github.com/mhinz/vim-galore#undo-tree) | [星星丶S1nG] | [#7] |\n| [Quickfix and location lists](https://github.com/mhinz/vim-galore#quickfix-and-location-lists) | [星星丶S1nG] | [#7] |\n| [Macros](https://github.com/mhinz/vim-galore#macros) | [星星丶S1nG] | [#7] |\n| [Colorschemes](https://github.com/mhinz/vim-galore#colorschemes) | [星星丶S1nG] | [#7] |\n| [Folding](https://github.com/mhinz/vim-galore#folding) | [星星丶S1nG] | [#7] |\n| [Sessions](https://github.com/mhinz/vim-galore#sessions) | [星星丶S1nG] | [#7] |\n| [Locality](https://github.com/mhinz/vim-galore#locality) | [星星丶S1nG] | [#7] |\n| [Usage](https://github.com/mhinz/vim-galore#usage-1) | [hotleave] | [#13] |\n| [Getting help offline](https://github.com/mhinz/vim-galore#getting-help-offline) | [hotleave] | [#13] |\n| [Getting help offline (alternative)](https://github.com/mhinz/vim-galore#getting-help-offline-alternative) | [hotleave] | [#13] |\n| [Getting help online](https://github.com/mhinz/vim-galore#getting-help-online) | [hotleave] | [#13] |\n| [Autocmds in practice](https://github.com/mhinz/vim-galore#autocmds-in-practice) | [hotleave] | [#13] |\n| [User events](https://github.com/mhinz/vim-galore#user-events) | [hotleave] | [#13] |\n| [Nested autocmds](https://github.com/mhinz/vim-galore#nested-autocmds) | [hotleave] | [#13] |\n| [Clipboard](https://github.com/mhinz/vim-galore#clipboard) | [hotleave] | [#13] |\n| [Clipboard usage (Windows, OSX)](https://github.com/mhinz/vim-galore#clipboard-usage-windows-osx) | [hotleave] | [#13] |\n| [Clipboard usage (Linux, BSD, ...)](https://github.com/mhinz/vim-galore#clipboard-usage-linux-bsd-) | [hotleave] | [#13] |\n| [Restore cursor position when opening file](https://github.com/mhinz/vim-galore#restore-cursor-position-when-opening-file) | [hotleave] | [#13] |\n| [Handling backup, swap, undo, and viminfo files](https://github.com/mhinz/vim-galore#handling-backup-swap-undo-and-viminfo-files) | [hotleave] | [#13] |\n| [Editing remote files](https://github.com/mhinz/vim-galore#editing-remote-files) | [hotleave] | [#13] |\n| [Managing plugins](https://github.com/mhinz/vim-galore#managing-plugins) | [hotleave] | [#13] |\n| [Block insert](https://github.com/mhinz/vim-galore#block-insert) | [hotleave] | [#13] |\n| [Running external programs and using filters](https://github.com/mhinz/vim-galore#running-external-programs-and-using-filters) | [hotleave] | [#13] |\n| [Cscope](https://github.com/mhinz/vim-galore#cscope) | [hotleave] | [#13] |\n| [MatchIt](https://github.com/mhinz/vim-galore#matchit) | [hotleave] | [#13] |\n| [Tips](https://github.com/mhinz/vim-galore#tips-1) | [星星丶S1nG] | [#15] |\n| [Saner behavior of n and N](https://github.com/mhinz/vim-galore#saner-behavior-of-n-and-n) | [星星丶S1nG] | [#15] |\n| [Saner command-line history](https://github.com/mhinz/vim-galore#saner-command-line-history) | [星星丶S1nG] | [#15] |\n| [Saner CTRL-L](https://github.com/mhinz/vim-galore#saner-ctrl-l) | [星星丶S1nG] | [#15] |\n| [Disable audible and visual bells](https://github.com/mhinz/vim-galore#disable-audible-and-visual-bells) | [星星丶S1nG] | [#15] |\n| [Quickly move current line](https://github.com/mhinz/vim-galore#quickly-move-current-line) | [星星丶S1nG] | [#15] |\n| [Quickly add empty lines](https://github.com/mhinz/vim-galore#quickly-add-empty-lines) | [星星丶S1nG] | [#15] |\n| [Quickly edit your macros](https://github.com/mhinz/vim-galore#quickly-edit-your-macros) | [星星丶S1nG] | [#15] |\n| [Quickly jump to header or source file](https://github.com/mhinz/vim-galore#quickly-jump-to-header-or-source-file) | [星星丶S1nG] | [#15] |\n| [Quickly change font size in GUI](https://github.com/mhinz/vim-galore#quickly-change-font-size-in-gui) | [星星丶S1nG] | [#15] |\n| [Change cursor style dependent on mode](https://github.com/mhinz/vim-galore#change-cursor-style-dependent-on-mode) | [星星丶S1nG] | [#15] |\n| [Don't lose selection when shifting sidewards](https://github.com/mhinz/vim-galore#dont-lose-selection-when-shifting-sidewards) | [星星丶S1nG] | [#15] |\n| [Reload a file on saving](https://github.com/mhinz/vim-galore#reload-a-file-on-saving) | [星星丶S1nG] | [#15] |\n| [Smarter cursorline](https://github.com/mhinz/vim-galore#smarter-cursorline) | [星星丶S1nG] | [#15] |\n| [Faster keyword completion](https://github.com/mhinz/vim-galore#faster-keyword-completion) | [星星丶S1nG] | [#15] |\n| [Cosmetic changes to colorschemes](https://github.com/mhinz/vim-galore#cosmetic-changes-to-colorschemes) | [星星丶S1nG] | [#15] |\n| [Commands](https://github.com/mhinz/vim-galore#commands-1) | [hotleave] | [#18] |\n| [:global and :vglobal](https://github.com/mhinz/vim-galore#global-and-vglobal) - Execute a command on all matching lines. | [hotleave] | [#18] |\n| [:normal and :execute](https://github.com/mhinz/vim-galore#normal-and-execute) - The scripting dream team. | [hotleave] | [#18] |\n| [:redir](https://github.com/mhinz/vim-galore#redir) - Redirect messages. | [hotleave] | [#18] |\n| [Debugging](https://github.com/mhinz/vim-galore#debugging-1) | YDWX | |\n| [General tips](https://github.com/mhinz/vim-galore#general-tips) | YDWX | |\n| [Verbosity](https://github.com/mhinz/vim-galore#verbosity) | YDWX | |\n| [Profiling startup time](https://github.com/mhinz/vim-galore#profiling-startup-time) | YDWX | |\n| [Profiling at runtime](https://github.com/mhinz/vim-galore#profiling-at-runtime) | YDWX | |\n| [Debugging Vim scripts](https://github.com/mhinz/vim-galore#debugging-vim-scripts) | | |\n| [Debugging syntax files](https://github.com/mhinz/vim-galore#debugging-syntax-files) | | |\n| [Miscellaneous](https://github.com/mhinz/vim-galore#miscellaneous-1) | #11 | |\n| [Additional resources](https://github.com/mhinz/vim-galore#additional-resources) | #11 | |\n| [Vim distributions](https://github.com/mhinz/vim-galore#vim-distributions) | #11 | |\n| [Standard plugins](https://github.com/mhinz/vim-galore#standard-plugins) | #11 | |\n| [Map CapsLock to Control](https://github.com/mhinz/vim-galore#map-capslock-to-control) | #11 | |\n| [Easter eggs](https://github.com/mhinz/vim-galore#easter-eggs) | #11 | |\n| [Why hjkl for navigation?](https://github.com/mhinz/vim-galore#why-hjkl-for-navigation) | #11 | |\n| [Common problems](https://github.com/mhinz/vim-galore#common-problems-1) | [hotleave] | [#18] |\n| [Editing small files is slow](https://github.com/mhinz/vim-galore#editing-small-files-is-slow) | [hotleave] | [#18] |\n| [Editing huge files is slow](https://github.com/mhinz/vim-galore#editing-huge-files-is-slow) | [hotleave] | [#18] |\n| [Bracketed paste (or why do I have to set 'paste' all the time?)](https://github.com/mhinz/vim-galore#bracketed-paste-or-why-do-i-have-to-set-paste-all-the-time) | [hotleave] | [#18] |\n| [Delays when using escape key in terminal](https://github.com/mhinz/vim-galore#delays-when-using-escape-key-in-terminal) | [hotleave] | [#18] |\n| [Function search undo](https://github.com/mhinz/vim-galore#function-search-undo) | [hotleave] | [#18] |\n| [Technical quirks](https://github.com/mhinz/vim-galore#technical-quirks-1) | | [#18] |\n| [Newline used for NUL](https://github.com/mhinz/vim-galore#newline-used-for-nul) | | |\n| [List of colorschemes](https://github.com/mhinz/vim-galore#list-of-colorschemes-1) | | |\n| [List of plugins](https://github.com/mhinz/vim-galorecontents/plugins.md) | | |\n\n\n<!-- plublic links for prs -->\n[#4]: https://github.com/wsdjeg/vim-galore-zh_cn/pull/4\n[#7]: https://github.com/wsdjeg/vim-galore-zh_cn/pull/7\n[#13]: https://github.com/wsdjeg/vim-galore-zh_cn/pull/13\n[#15]: https://github.com/wsdjeg/vim-galore-zh_cn/pull/15\n[#18]: https://github.com/wsdjeg/vim-galore-zh_cn/pull/18\n\n<!-- plublic links for users -->\n[wsdjeg]: https://github.com/wsdjeg\n[星星丶S1nG]: https://github.com/S1ngS1ng\n[Hotleave]: https://github.com/hotleave\n\n"
  },
  {
    "path": "LICENSE",
    "content": "Attribution-ShareAlike 4.0 International\n\n=======================================================================\n\nCreative Commons Corporation (\"Creative Commons\") is not a law firm and\ndoes not provide legal services or legal advice. Distribution of\nCreative Commons public licenses does not create a lawyer-client or\nother relationship. Creative Commons makes its licenses and related\ninformation available on an \"as-is\" basis. Creative Commons gives no\nwarranties regarding its licenses, any material licensed under their\nterms and conditions, or any related information. Creative Commons\ndisclaims all liability for damages resulting from their use to the\nfullest extent possible.\n\nUsing Creative Commons Public Licenses\n\nCreative Commons public licenses provide a standard set of terms and\nconditions that creators and other rights holders may use to share\noriginal works of authorship and other material subject to copyright\nand certain other rights specified in the public license below. The\nfollowing considerations are for informational purposes only, are not\nexhaustive, and do not form part of our licenses.\n\n     Considerations for licensors: Our public licenses are\n     intended for use by those authorized to give the public\n     permission to use material in ways otherwise restricted by\n     copyright and certain other rights. Our licenses are\n     irrevocable. Licensors should read and understand the terms\n     and conditions of the license they choose before applying it.\n     Licensors should also secure all rights necessary before\n     applying our licenses so that the public can reuse the\n     material as expected. Licensors should clearly mark any\n     material not subject to the license. This includes other CC-\n     licensed material, or material used under an exception or\n     limitation to copyright. More considerations for licensors:\n\twiki.creativecommons.org/Considerations_for_licensors\n\n     Considerations for the public: By using one of our public\n     licenses, a licensor grants the public permission to use the\n     licensed material under specified terms and conditions. If\n     the licensor's permission is not necessary for any reason--for\n     example, because of any applicable exception or limitation to\n     copyright--then that use is not regulated by the license. Our\n     licenses grant only permissions under copyright and certain\n     other rights that a licensor has authority to grant. Use of\n     the licensed material may still be restricted for other\n     reasons, including because others have copyright or other\n     rights in the material. A licensor may make special requests,\n     such as asking that all changes be marked or described.\n     Although not required by our licenses, you are encouraged to\n     respect those requests where reasonable. More_considerations\n     for the public: \n\twiki.creativecommons.org/Considerations_for_licensees\n\n=======================================================================\n\nCreative Commons Attribution-ShareAlike 4.0 International Public\nLicense\n\nBy exercising the Licensed Rights (defined below), You accept and agree\nto be bound by the terms and conditions of this Creative Commons\nAttribution-ShareAlike 4.0 International Public License (\"Public\nLicense\"). To the extent this Public License may be interpreted as a\ncontract, You are granted the Licensed Rights in consideration of Your\nacceptance of these terms and conditions, and the Licensor grants You\nsuch rights in consideration of benefits the Licensor receives from\nmaking the Licensed Material available under these terms and\nconditions.\n\n\nSection 1 -- Definitions.\n\n  a. Adapted Material means material subject to Copyright and Similar\n     Rights that is derived from or based upon the Licensed Material\n     and in which the Licensed Material is translated, altered,\n     arranged, transformed, or otherwise modified in a manner requiring\n     permission under the Copyright and Similar Rights held by the\n     Licensor. For purposes of this Public License, where the Licensed\n     Material is a musical work, performance, or sound recording,\n     Adapted Material is always produced where the Licensed Material is\n     synched in timed relation with a moving image.\n\n  b. Adapter's License means the license You apply to Your Copyright\n     and Similar Rights in Your contributions to Adapted Material in\n     accordance with the terms and conditions of this Public License.\n\n  c. BY-SA Compatible License means a license listed at\n     creativecommons.org/compatiblelicenses, approved by Creative\n     Commons as essentially the equivalent of this Public License.\n\n  d. Copyright and Similar Rights means copyright and/or similar rights\n     closely related to copyright including, without limitation,\n     performance, broadcast, sound recording, and Sui Generis Database\n     Rights, without regard to how the rights are labeled or\n     categorized. For purposes of this Public License, the rights\n     specified in Section 2(b)(1)-(2) are not Copyright and Similar\n     Rights.\n\n  e. Effective Technological Measures means those measures that, in the\n     absence of proper authority, may not be circumvented under laws\n     fulfilling obligations under Article 11 of the WIPO Copyright\n     Treaty adopted on December 20, 1996, and/or similar international\n     agreements.\n\n  f. Exceptions and Limitations means fair use, fair dealing, and/or\n     any other exception or limitation to Copyright and Similar Rights\n     that applies to Your use of the Licensed Material.\n\n  g. License Elements means the license attributes listed in the name\n     of a Creative Commons Public License. The License Elements of this\n     Public License are Attribution and ShareAlike.\n\n  h. Licensed Material means the artistic or literary work, database,\n     or other material to which the Licensor applied this Public\n     License.\n\n  i. Licensed Rights means the rights granted to You subject to the\n     terms and conditions of this Public License, which are limited to\n     all Copyright and Similar Rights that apply to Your use of the\n     Licensed Material and that the Licensor has authority to license.\n\n  j. Licensor means the individual(s) or entity(ies) granting rights\n     under this Public License.\n\n  k. Share means to provide material to the public by any means or\n     process that requires permission under the Licensed Rights, such\n     as reproduction, public display, public performance, distribution,\n     dissemination, communication, or importation, and to make material\n     available to the public including in ways that members of the\n     public may access the material from a place and at a time\n     individually chosen by them.\n\n  l. Sui Generis Database Rights means rights other than copyright\n     resulting from Directive 96/9/EC of the European Parliament and of\n     the Council of 11 March 1996 on the legal protection of databases,\n     as amended and/or succeeded, as well as other essentially\n     equivalent rights anywhere in the world.\n\n  m. You means the individual or entity exercising the Licensed Rights\n     under this Public License. Your has a corresponding meaning.\n\n\nSection 2 -- Scope.\n\n  a. License grant.\n\n       1. Subject to the terms and conditions of this Public License,\n          the Licensor hereby grants You a worldwide, royalty-free,\n          non-sublicensable, non-exclusive, irrevocable license to\n          exercise the Licensed Rights in the Licensed Material to:\n\n            a. reproduce and Share the Licensed Material, in whole or\n               in part; and\n\n            b. produce, reproduce, and Share Adapted Material.\n\n       2. Exceptions and Limitations. For the avoidance of doubt, where\n          Exceptions and Limitations apply to Your use, this Public\n          License does not apply, and You do not need to comply with\n          its terms and conditions.\n\n       3. Term. The term of this Public License is specified in Section\n          6(a).\n\n       4. Media and formats; technical modifications allowed. The\n          Licensor authorizes You to exercise the Licensed Rights in\n          all media and formats whether now known or hereafter created,\n          and to make technical modifications necessary to do so. The\n          Licensor waives and/or agrees not to assert any right or\n          authority to forbid You from making technical modifications\n          necessary to exercise the Licensed Rights, including\n          technical modifications necessary to circumvent Effective\n          Technological Measures. For purposes of this Public License,\n          simply making modifications authorized by this Section 2(a)\n          (4) never produces Adapted Material.\n\n       5. Downstream recipients.\n\n            a. Offer from the Licensor -- Licensed Material. Every\n               recipient of the Licensed Material automatically\n               receives an offer from the Licensor to exercise the\n               Licensed Rights under the terms and conditions of this\n               Public License.\n\n            b. Additional offer from the Licensor -- Adapted Material.\n               Every recipient of Adapted Material from You\n               automatically receives an offer from the Licensor to\n               exercise the Licensed Rights in the Adapted Material\n               under the conditions of the Adapter's License You apply.\n\n            c. No downstream restrictions. You may not offer or impose\n               any additional or different terms or conditions on, or\n               apply any Effective Technological Measures to, the\n               Licensed Material if doing so restricts exercise of the\n               Licensed Rights by any recipient of the Licensed\n               Material.\n\n       6. No endorsement. Nothing in this Public License constitutes or\n          may be construed as permission to assert or imply that You\n          are, or that Your use of the Licensed Material is, connected\n          with, or sponsored, endorsed, or granted official status by,\n          the Licensor or others designated to receive attribution as\n          provided in Section 3(a)(1)(A)(i).\n\n  b. Other rights.\n\n       1. Moral rights, such as the right of integrity, are not\n          licensed under this Public License, nor are publicity,\n          privacy, and/or other similar personality rights; however, to\n          the extent possible, the Licensor waives and/or agrees not to\n          assert any such rights held by the Licensor to the limited\n          extent necessary to allow You to exercise the Licensed\n          Rights, but not otherwise.\n\n       2. Patent and trademark rights are not licensed under this\n          Public License.\n\n       3. To the extent possible, the Licensor waives any right to\n          collect royalties from You for the exercise of the Licensed\n          Rights, whether directly or through a collecting society\n          under any voluntary or waivable statutory or compulsory\n          licensing scheme. In all other cases the Licensor expressly\n          reserves any right to collect such royalties.\n\n\nSection 3 -- License Conditions.\n\nYour exercise of the Licensed Rights is expressly made subject to the\nfollowing conditions.\n\n  a. Attribution.\n\n       1. If You Share the Licensed Material (including in modified\n          form), You must:\n\n            a. retain the following if it is supplied by the Licensor\n               with the Licensed Material:\n\n                 i. identification of the creator(s) of the Licensed\n                    Material and any others designated to receive\n                    attribution, in any reasonable manner requested by\n                    the Licensor (including by pseudonym if\n                    designated);\n\n                ii. a copyright notice;\n\n               iii. a notice that refers to this Public License;\n\n                iv. a notice that refers to the disclaimer of\n                    warranties;\n\n                 v. a URI or hyperlink to the Licensed Material to the\n                    extent reasonably practicable;\n\n            b. indicate if You modified the Licensed Material and\n               retain an indication of any previous modifications; and\n\n            c. indicate the Licensed Material is licensed under this\n               Public License, and include the text of, or the URI or\n               hyperlink to, this Public License.\n\n       2. You may satisfy the conditions in Section 3(a)(1) in any\n          reasonable manner based on the medium, means, and context in\n          which You Share the Licensed Material. For example, it may be\n          reasonable to satisfy the conditions by providing a URI or\n          hyperlink to a resource that includes the required\n          information.\n\n       3. If requested by the Licensor, You must remove any of the\n          information required by Section 3(a)(1)(A) to the extent\n          reasonably practicable.\n\n  b. ShareAlike.\n\n     In addition to the conditions in Section 3(a), if You Share\n     Adapted Material You produce, the following conditions also apply.\n\n       1. The Adapter's License You apply must be a Creative Commons\n          license with the same License Elements, this version or\n          later, or a BY-SA Compatible License.\n\n       2. You must include the text of, or the URI or hyperlink to, the\n          Adapter's License You apply. You may satisfy this condition\n          in any reasonable manner based on the medium, means, and\n          context in which You Share Adapted Material.\n\n       3. You may not offer or impose any additional or different terms\n          or conditions on, or apply any Effective Technological\n          Measures to, Adapted Material that restrict exercise of the\n          rights granted under the Adapter's License You apply.\n\n\nSection 4 -- Sui Generis Database Rights.\n\nWhere the Licensed Rights include Sui Generis Database Rights that\napply to Your use of the Licensed Material:\n\n  a. for the avoidance of doubt, Section 2(a)(1) grants You the right\n     to extract, reuse, reproduce, and Share all or a substantial\n     portion of the contents of the database;\n\n  b. if You include all or a substantial portion of the database\n     contents in a database in which You have Sui Generis Database\n     Rights, then the database in which You have Sui Generis Database\n     Rights (but not its individual contents) is Adapted Material,\n\n     including for purposes of Section 3(b); and\n  c. You must comply with the conditions in Section 3(a) if You Share\n     all or a substantial portion of the contents of the database.\n\nFor the avoidance of doubt, this Section 4 supplements and does not\nreplace Your obligations under this Public License where the Licensed\nRights include other Copyright and Similar Rights.\n\n\nSection 5 -- Disclaimer of Warranties and Limitation of Liability.\n\n  a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE\n     EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS\n     AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF\n     ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,\n     IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,\n     WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR\n     PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,\n     ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT\n     KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT\n     ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.\n\n  b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE\n     TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,\n     NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,\n     INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,\n     COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR\n     USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN\n     ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR\n     DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR\n     IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.\n\n  c. The disclaimer of warranties and limitation of liability provided\n     above shall be interpreted in a manner that, to the extent\n     possible, most closely approximates an absolute disclaimer and\n     waiver of all liability.\n\n\nSection 6 -- Term and Termination.\n\n  a. This Public License applies for the term of the Copyright and\n     Similar Rights licensed here. However, if You fail to comply with\n     this Public License, then Your rights under this Public License\n     terminate automatically.\n\n  b. Where Your right to use the Licensed Material has terminated under\n     Section 6(a), it reinstates:\n\n       1. automatically as of the date the violation is cured, provided\n          it is cured within 30 days of Your discovery of the\n          violation; or\n\n       2. upon express reinstatement by the Licensor.\n\n     For the avoidance of doubt, this Section 6(b) does not affect any\n     right the Licensor may have to seek remedies for Your violations\n     of this Public License.\n\n  c. For the avoidance of doubt, the Licensor may also offer the\n     Licensed Material under separate terms or conditions or stop\n     distributing the Licensed Material at any time; however, doing so\n     will not terminate this Public License.\n\n  d. Sections 1, 5, 6, 7, and 8 survive termination of this Public\n     License.\n\n\nSection 7 -- Other Terms and Conditions.\n\n  a. The Licensor shall not be bound by any additional or different\n     terms or conditions communicated by You unless expressly agreed.\n\n  b. Any arrangements, understandings, or agreements regarding the\n     Licensed Material not stated herein are separate from and\n     independent of the terms and conditions of this Public License.\n\n\nSection 8 -- Interpretation.\n\n  a. For the avoidance of doubt, this Public License does not, and\n     shall not be interpreted to, reduce, limit, restrict, or impose\n     conditions on any use of the Licensed Material that could lawfully\n     be made without permission under this Public License.\n\n  b. To the extent possible, if any provision of this Public License is\n     deemed unenforceable, it shall be automatically reformed to the\n     minimum extent necessary to make it enforceable. If the provision\n     cannot be reformed, it shall be severed from this Public License\n     without affecting the enforceability of the remaining terms and\n     conditions.\n\n  c. No term or condition of this Public License will be waived and no\n     failure to comply consented to unless expressly agreed to by the\n     Licensor.\n\n  d. Nothing in this Public License constitutes or may be interpreted\n     as a limitation upon, or waiver of, any privileges and immunities\n     that apply to the Licensor or You, including from the legal\n     processes of any jurisdiction or authority.\n\n\n=======================================================================\n\nCreative Commons is not a party to its public\nlicenses. Notwithstanding, Creative Commons may elect to apply one of\nits public licenses to material it publishes and in those instances\nwill be considered the “Licensor.” The text of the Creative Commons\npublic licenses is dedicated to the public domain under the CC0 Public\nDomain Dedication. Except for the limited purpose of indicating that\nmaterial is shared under a Creative Commons public license or as\notherwise permitted by the Creative Commons policies published at\ncreativecommons.org/policies, Creative Commons does not authorize the\nuse of the trademark \"Creative Commons\" or any other trademark or logo\nof Creative Commons without its prior written consent including,\nwithout limitation, in connection with any unauthorized modifications\nto any of its public licenses or any other arrangements,\nunderstandings, or agreements concerning use of licensed material. For\nthe avoidance of doubt, this paragraph does not form part of the\npublic licenses.\n\nCreative Commons may be contacted at creativecommons.org.\n"
  },
  {
    "path": "PLUGINS.md",
    "content": "## 插件列表\n\n<!-- vim-markdown-toc GFM -->\n\n- [颜色主题](#颜色主题)\n- [按功能分类](#按功能分类)\n  - [文本对齐](#文本对齐)\n  - [语法检查](#语法检查)\n  - [代码补全](#代码补全)\n  - [Cycle](#cycle)\n  - [代码注释](#代码注释)\n  - [自动补全括号](#自动补全括号)\n  - [模糊搜索](#模糊搜索)\n  - [文本搜索](#文本搜索)\n  - [代码对齐线](#代码对齐线)\n  - [Navigation](#navigation)\n  - [插件管理](#插件管理)\n  - [代码片段](#代码片段)\n  - [状态栏](#状态栏)\n  - [Surround](#surround)\n  - [Taking notes](#taking-notes)\n  - [Testing](#testing)\n  - [文本对象](#文本对象)\n  - [Tmux](#tmux)\n  - [编辑历史管理](#编辑历史管理)\n  - [版本控制](#版本控制)\n  - [Writing](#writing)\n  - [Misc](#misc)\n- [编程语言](#编程语言)\n  - [C、C++](#cc)\n  - [Clojure](#clojure)\n  - [Elixir](#elixir)\n  - [Go](#go)\n  - [HTML](#html)\n  - [Java](#java)\n  - [Javascript](#javascript)\n  - [Lua](#lua)\n  - [PHP](#php)\n  - [Python](#python)\n  - [TeX](#tex)\n  - [VimL](#viml)\n\n<!-- vim-markdown-toc -->\n\n### 颜色主题\n\n以下为一些比较流行的颜色主题：\n\n- [acme-colors](https://github.com/plan9-for-vimspace/acme-colors)\n- [apprentice](https://github.com/romainl/Apprentice)\n- [base16](https://github.com/chriskempson/base16-vim)\n- [gotham](https://github.com/whatyouhide/vim-gotham)\n- [gruvbox](https://github.com/morhetz/gruvbox)\n- [janah](https://github.com/mhinz/vim-janah)\n- [jellybeans](https://github.com/nanotech/jellybeans.vim)\n- [lucius](https://github.com/jonathanfilip/vim-lucius)\n- [molokai](https://github.com/tomasr/molokai)\n- [nofrils](https://github.com/robertmeta/nofrils)\n- [oceanic-next](https://github.com/mhartington/oceanic-next)\n- [paramount](https://github.com/owickstrom/vim-colors-paramount)\n- [railscasts](https://github.com/jpo/vim-railscasts-theme)\n- [seoul256](https://github.com/junegunn/seoul256.vim)\n- [solarized](https://github.com/altercation/vim-colors-solarized) (or [solarized8](https://github.com/lifepillar/vim-solarized8) or [flattened](https://github.com/romainl/flattened))\n- [tomorrow](https://github.com/chriskempson/vim-tomorrow-theme)\n- [vividchalk](https://github.com/tpope/vim-vividchalk)\n- [yowish](https://github.com/kabbamine/yowish.vim)\n- [zenburn](https://github.com/jnurmine/Zenburn)\n\nAlternatively, generate your own colorscheme using [themer](https://github.com/mjswensen/themer)\nor [Colortemplate](https://github.com/lifepillar/vim-colortemplate).\n\n### 按功能分类\n\n#### 文本对齐\n\n- [tabular](https://github.com/godlygeek/tabular)\n- [vim-easy-align](https://github.com/junegunn/vim-easy-align)\n- [vim-lion](https://github.com/tommcdo/vim-lion)\n\n#### 语法检查\n\n- [ale](https://github.com/w0rp/ale)\n- [neomake](https://github.com/neomake/neomake)\n- [syntastic](https://github.com/vim-syntastic/syntastic)\n\n#### 代码补全\n\n- [VimCompletesMe](https://github.com/ajh17/VimCompletesMe)\n- [YouCompleteMe](https://github.com/Valloric/YouCompleteMe)\n- [asyncomplete.vim](https://github.com/prabirshrestha/asyncomplete.vim)\n- [completion-nvim](https://github.com/nvim-lua/completion-nvim)\n- [completor.vim](https://github.com/maralla/completor.vim)\n- [deoplete.nvim](https://github.com/Shougo/deoplete.nvim)\n- [neocomplete.vim](https://github.com/Shougo/neocomplete.vim)\n- [nvim-compe](https://github.com/hrsh7th/nvim-compe)\n- [nvim-completion-manager](https://github.com/roxma/nvim-completion-manager)\n- [supertab](https://github.com/ervandew/supertab)\n- [vim-mucomplete](https://github.com/lifepillar/vim-mucomplete)\n\n#### Cycle\n\n- [switch.vim](https://github.com/AndrewRadev/switch.vim)\n- [vim-speeddating](https://github.com/tpope/vim-speeddating)\n\n#### 代码注释\n\n- [nerdcommenter](https://github.com/scrooloose/nerdcommenter)\n- [tcomment_vim](https://github.com/tomtom/tcomment_vim)\n- [vim-commentary](https://github.com/tpope/vim-commentary)\n\n#### 自动补全括号\n\n- [auto-pairs](https://github.com/jiangmiao/auto-pairs)\n- [delimitMate](https://github.com/Raimondi/delimitMate)\n- [vim-endwise](https://github.com/tpope/vim-endwise)\n\n#### 模糊搜索\n\n- [leaderf](https://github.com/Yggdroot/LeaderF) (_requires +python3 or +python_)\n- [denite.nvim](https://github.com/Shougo/denite.nvim) (_requires +python3_)\n- [vim-clap](https://github.com/liuchengxu/vim-clap/)\n- [Command-T](https://github.com/wincent/Command-T) (_requires +ruby_)\n- [ctrlp.vim](https://github.com/ctrlpvim/ctrlp.vim)\n- [fzf](https://github.com/junegunn/fzf) (and [fzf.vim](https://github.com/junegunn/fzf.vim))\n- [unite.vim](https://github.com/Shougo/unite.vim)\n- [vim-fz](https://github.com/mattn/vim-fz)\n\n#### 文本搜索\n\n- [ctrlsf.vim](https://github.com/dyng/ctrlsf.vim)\n- [ferret](https://github.com/wincent/ferret)\n- [vim-grepper](https://github.com/mhinz/vim-grepper)\n- [flygrep](https://github.com/wsdjeg/FlyGrep.vim)\n\n#### 代码对齐线\n\n- [indentLine](https://github.com/Yggdroot/indentLine)\n- [vim-indent-guides](https://github.com/nathanaelkane/vim-indent-guides)\n\n#### Navigation\n\n- [nerdtree](https://github.com/scrooloose/nerdtree)\n- [tagbar](https://github.com/majutsushi/tagbar)\n- [vim-dirvish](https://github.com/justinmk/vim-dirvish)\n- [vim-easymotion](https://github.com/easymotion/vim-easymotion)\n- [vim-sneak](https://github.com/justinmk/vim-sneak)\n- [vim-vinegar](https://github.com/tpope/vim-vinegar)\n- [vimfiler.vim](https://github.com/Shougo/vimfiler.vim) (_depends on other plugins_)\n- [defx.nvim](https://github.com/Shougo/defx.nvim) (_requires +python3_)\n\nAlso see [fuzzy finders](#fuzzy-finders).\n\n#### 插件管理\n\n- [apt-vim](https://github.com/egalpin/apt-vim)\n- [dein.vim](https://github.com/Shougo/dein.vim)\n- [minpac](https://github.com/k-takata/minpac)\n- [vim-addon-manager](https://github.com/MarcWeber/vim-addon-manager)\n- [vim-pathogen](https://github.com/tpope/vim-pathogen)\n- [vim-plug](https://github.com/junegunn/vim-plug)\n- [vundle.vim](https://github.com/VundleVim/Vundle.vim)\n\n#### 代码片段\n\n- [neosnippet.vim](https://github.com/Shougo/neosnippet.vim) (_depends on other plugins_)\n- [ultisnips](https://github.com/SirVer/ultisnips)\n- [vim-snipmate](https://github.com/garbas/vim-snipmate) (_depends on other plugins_)\n- [xptemplate](https://github.com/drmingdrmer/xptemplate)\n\n#### 状态栏\n\n- [lightline.vim](https://github.com/itchyny/lightline.vim)\n- [powerline](https://github.com/powerline/powerline)\n- [vim-airline](https://github.com/vim-airline/vim-airline)\n- [vim-flagship](https://github.com/tpope/vim-flagship)\n\n#### Surround\n\n- [vim-operator-surround](https://github.com/rhysd/vim-operator-surround)\n- [vim-sandwich](https://github.com/machakann/vim-sandwich)\n- [vim-surround](https://github.com/tpope/vim-surround)\n\n#### Taking notes\n\n- [vim-dotoo](https://github.com/dhruvasagar/vim-dotoo)\n- [vim-journal](https://github.com/junegunn/vim-journal)\n- [vim-notes](https://github.com/xolox/vim-notes)\n- [vim-orgmode](https://github.com/jceb/vim-orgmode)\n- [vim-pad](https://github.com/fmoralesc/vim-pad)\n- [vimwiki](https://github.com/vimwiki/vimwiki)\n\n#### Testing\n\n- [vim-test](https://github.com/janko-m/vim-test)\n\n#### 文本对象\n\n- [targets.vim](https://github.com/wellle/targets.vim)\n- [vim-exchange](https://github.com/tommcdo/vim-exchange)\n- [vim-indent-object](https://github.com/michaeljsmith/vim-indent-object)\n- [vim-matchup](https://github.com/andymass/vim-matchup)\n- [vim-textobj-user](https://github.com/kana/vim-textobj-user)\n\n#### Tmux\n\n- [tmux-complete.vim](https://github.com/wellle/tmux-complete.vim)\n- [vim-dispatch](https://github.com/tpope/vim-dispatch)\n- [vim-tmux-navigator](https://github.com/christoomey/vim-tmux-navigator)\n- [vitality.vim](https://github.com/sjl/vitality.vim)\n\n#### 编辑历史管理\n\n- [vim-mundo](https://github.com/simnalamburt/vim-mundo)\n- [gundo.vim](https://github.com/sjl/gundo.vim)\n- [undotree](https://github.com/mbbill/undotree)\n\n#### 版本控制\n\n- [agit.vim](https://github.com/cohama/agit.vim)\n- [committia.vim](https://github.com/rhysd/committia.vim)\n- [gist-vim](https://github.com/mattn/gist-vim)\n- [github-issues.vim](https://github.com/jaxbot/github-issues.vim)\n- [gitv](https://github.com/gregsexton/gitv)\n- [gv.vim](https://github.com/junegunn/gv.vim)\n- [nerdtree-git-plugin](https://github.com/Xuyuanp/nerdtree-git-plugin)\n- [vim-auto-programming](https://github.com/haya14busa/vim-auto-programming)\n- [vim-fugitive](https://github.com/tpope/vim-fugitive)\n- [vim-gitgutter](https://github.com/airblade/vim-gitgutter)\n- [vim-github-dashboard](https://github.com/junegunn/vim-github-dashboard)\n- [vim-lawrencium](https://bitbucket.org/ludovicchabant/vim-lawrencium)\n- [vim-signify](https://github.com/mhinz/vim-signify)\n- [vimagit](https://github.com/jreybert/vimagit)\n- [git-messenger.vim](https://github.com/rhysd/git-messenger.vim/)\n\n#### Writing\n\n- [vim-grammarous](https://github.com/rhysd/vim-grammarous)\n- [vim-online-thesaurus](https://github.com/beloglazov/vim-online-thesaurus)\n\n#### Misc\n\n- [calendar.vim](https://github.com/itchyny/calendar.vim)\n- [CoVim](https://github.com/FredKSchott/CoVim)\n- [FastFold](https://github.com/Konfekt/FastFold)\n- [goyo.vim](https://github.com/junegunn/goyo.vim)\n- [is.vim](https://github.com/haya14busa/is.vim)\n- [NrrwRgn](https://github.com/chrisbra/NrrwRgn)\n- [sideways.vim](https://github.com/AndrewRadev/sideways.vim)\n- [splitjoin.vim](https://github.com/AndrewRadev/splitjoin.vim)\n- [unicode.vim](https://github.com/chrisbra/unicode.vim)\n- [vim-abolish](https://github.com/tpope/vim-abolish)\n- [vim-bracketed-paste](https://github.com/ConradIrwin/vim-bracketed-paste)\n- [vim-devicons](https://github.com/ryanoasis/vim-devicons)\n- [vim-diff-enhanced](https://github.com/chrisbra/vim-diff-enhanced)\n- [vim-diminactive](https://github.com/blueyed/vim-diminactive)\n- [vim-fixkey](https://github.com/drmikehenry/vim-fixkey)\n- [vim-gnupg](https://github.com/jamessan/vim-gnupg)\n- [vim-gutentags](https://github.com/ludovicchabant/vim-gutentags)\n- [vim-hackernews](https://github.com/ryanss/vim-hackernews)\n- [vim-move](https://github.com/matze/vim-move)\n- [vim-multiple-cursors](https://github.com/terryma/vim-multiple-cursors)\n- [vim-projectionist](https://github.com/tpope/vim-projectionist)\n- [vim-qf](https://github.com/romainl/vim-qf)\n- [vim-rsi](https://github.com/tpope/vim-rsi)\n- [vim-sleuth](https://github.com/tpope/vim-sleuth)\n- [vim-startify](https://github.com/mhinz/vim-startify)\n- [vim-unimpaired](https://github.com/tpope/vim-unimpaired)\n\n### 编程语言\n\n#### C、C++\n\n- [a.vim](https://github.com/vim-scripts/a.vim)\n- [clang_complete](https://github.com/Rip-Rip/clang_complete)\n- [color_coded](https://github.com/jeaye/color_coded)\n- [lh-cpp](https://github.com/LucHermitte/lh-cpp)\n- [vim-cpp-enhanced-highlight](https://github.com/octol/vim-cpp-enhanced-highlight)\n\n#### Clojure\n\n- [paredit](https://github.com/kovisoft/paredit)\n- [rainbow_parentheses.vim](https://github.com/junegunn/rainbow_parentheses.vim)\n- [vim-clojure-highlight](https://github.com/guns/vim-clojure-highlight)\n- [vim-fireplace](https://github.com/tpope/vim-fireplace)\n- [vim-salve](https://github.com/tpope/vim-salve)\n- [vim-sexp-mappings-for-regular-people](https://github.com/tpope/vim-sexp-mappings-for-regular-people)\n- [vim-sexp](https://github.com/guns/vim-sexp)\n\n#### Elixir\n\n- [alchemist.vim](https://github.com/slashmili/alchemist.vim)\n- [vim-elixir](https://github.com/elixir-editors/vim-elixir)\n- [vim-mix-format](https://github.com/mhinz/vim-mix-format)\n\n#### Go\n\n- [gofmt.vim](https://github.com/tweekmonster/gofmt.vim)\n- [hl-goimport.vim](https://github.com/tweekmonster/hl-goimport.vim)\n- [vim-go](https://github.com/fatih/vim-go)\n- [vim-godebug](https://github.com/jodosha/vim-godebug)\n\n#### HTML\n\n- [emmet-vim](https://github.com/mattn/emmet-vim)\n- [html5.vim](https://github.com/othree/html5.vim)\n\n#### Java\n\n- [vim-javacomplete2](https://github.com/artur-shaik/vim-javacomplete2)\n\n#### Javascript\n\n- [es.next.syntax.vim](https://github.com/othree/es.next.syntax.vim)\n- [javascript-libraries-syntax.vim](https://github.com/othree/javascript-libraries-syntax.vim)\n- [node-vim-debugger](https://github.com/sidorares/node-vim-debugger)\n- [tern_for_vim](https://github.com/ternjs/tern_for_vim)\n- [vim-esformatter](https://github.com/millermedeiros/vim-esformatter)\n- [vim-flow](https://github.com/flowtype/vim-flow)\n- [vim-javascript-syntax](https://github.com/jelera/vim-javascript-syntax)\n- [vim-javascript](https://github.com/pangloss/vim-javascript)\n- [vim-node](https://github.com/moll/vim-node)\n- [vim-prettier](https://github.com/prettier/vim-prettier)\n- [yajs.vim](https://github.com/othree/yajs.vim)\n- [yats.vim](https://github.com/HerringtonDarkholme/yats.vim)\n\n#### Lua\n\n- [vim-lua-ftplugin](https://github.com/xolox/vim-lua-ftplugin)\n- [vim-lua-inspect](https://github.com/xolox/vim-lua-inspect)\n\n#### PHP\n\n- [php.vim](https://github.com/StanAngeloff/php.vim)\n- [vim-php-cs-fixer](https://github.com/stephpy/vim-php-cs-fixer)\n- [vim-php-namespace](https://github.com/arnaud-lb/vim-php-namespace)\n- [vim-php-refactoring-toolbox](https://github.com/adoy/vim-php-refactoring-toolbox)\n\n#### Python\n\n- [braceless.vim](https://github.com/tweekmonster/braceless.vim)\n- [impsort.vim](https://github.com/tweekmonster/impsort.vim)\n- [jedi-vim](https://github.com/davidhalter/jedi-vim)\n- [python-mode](https://github.com/klen/python-mode)\n- [SimpylFold](https://github.com/tmhedberg/SimpylFold)\n- [vim-flake8](https://github.com/nvie/vim-flake8)\n\n#### TeX\n\n- [vimtex](https://github.com/lervag/vimtex)\n\n#### VimL\n\n- [exception.vim](https://github.com/tweekmonster/exception.vim)\n- [helpful.vim](https://github.com/tweekmonster/helpful.vim)\n- [vader.vim](https://github.com/junegunn/vader.vim)\n- [vim-lookup](https://github.com/mhinz/vim-lookup)\n- [vim-scriptease](https://github.com/tpope/vim-scriptease)\n- [vim-themis](https://github.com/thinca/vim-themis)\n"
  },
  {
    "path": "README.md",
    "content": "<div align='center'>\n  <h1>Vim 从入门到精通</h1>\n  <br /><br />\n</div>\n\n<!-- vim-markdown-toc GFM -->\n\n<!-- vim-markdown-toc -->\n\n文章移至： [https://wsdjeg.net/vim-galore-zh-cn/](https://wsdjeg.net/vim-galore-zh-cn/)\n"
  },
  {
    "path": "chapter/Common problems.md",
    "content": "# 常见问题\n\n## 编辑小文件很慢\n\n## 编辑大文件很慢\n\n## 相同部分粘贴 (要不为什么我总要设置‘粘贴’？)\n\n## 使用终端中 Esc 键时的延迟\n\n## 无法重复函数中执行的搜索\n"
  },
  {
    "path": "chapter/List-Of-Colorschemes.md",
    "content": "# 配色方案列表\n\n这儿列举了一些常用的Vim配色方案：\n\n- [acme-colors](https://github.com/plan9-for-vimspace/acme-colors)\n- [base16](https://github.com/chriskempson/base16-vim)\n- [gotham](https://github.com/whatyouhide/vim-gotham)\n- [gruvbox](https://github.com/morhetz/gruvbox)\n- [janah](https://github.com/mhinz/vim-janah)\n- [jellybeans](https://github.com/nanotech/jellybeans.vim)\n- [lucius](https://github.com/jonathanfilip/vim-lucius)\n- [molokai](https://github.com/tomasr/molokai)\n- [railscasts](https://github.com/jpo/vim-railscasts-theme)\n- [seoul256](https://github.com/junegunn/seoul256.vim)\n- [solarized](https://github.com/altercation/vim-colors-solarized) (或者它浅色衍生方案 [flattened](https://github.com/romainl/flattened))\n- [tomorrow](https://github.com/chriskempson/vim-tomorrow-theme)\n- [vividchalk](https://github.com/tpope/vim-vividchalk)\n- [yowish](https://github.com/kabbamine/yowish.vim)\n- [zenburn](https://github.com/jnurmine/Zenburn)\n\n"
  },
  {
    "path": "chapter/List-Of-Plugins.md",
    "content": "## 插件列表\n\n#### [以功能区分](#以功能区分-1)\n\n- [文本对齐](#文本对齐)\n- [构建和可疑代码标记](#构建和可疑代码标记)\n- [代码补全](#代码补全)\n- [Cycle](#cycle)\n- [注释工具](#注释工具)\n- [分割符](#分割符)\n- [模糊搜索](#模糊搜索)\n- [Grep 工具](#grep-工具)\n- [缩进](#缩进)\n- [文件导航](#文件导航)\n- [代码片段](#代码片段)\n- [状态栏](#状态栏)\n- [文字环绕符](#文字环绕符)\n- [记笔记](#记笔记)\n- [文本对象](#文本对象)\n- [Tmux](#tmux)\n- [撤销历史](#撤销历史)\n- [版本控制](#版本控制)\n- [写作工具](#写作工具)\n- [其他](#其他)\n\n#### [以文件类型区分](#以文件类型区分-1)\n\n- [C and C++](#c-and-c)\n- [Clojure](#clojure)\n- [Go](#go)\n- [HTML](#html)\n- [Java](#java)\n- [Javascript](#javascript)\n- [Lua](#lua)\n- [Python](#python)\n- [TeX](#tex)\n- [VimL](#viml)\n\n## 以功能区分\n\n#### 文本对齐 \n\n- [tabular](https://github.com/godlygeek/tabular)\n- [vim-easy-align](https://github.com/junegunn/vim-easy-align)\n\n#### 构建和可疑代码标记\n\n- [ale](https://github.com/w0rp/ale)\n- [neomake](https://github.com/neomake/neomake)\n- [syntastic](https://github.com/vim-syntastic/syntastic)\n\n#### 代码补全\n\n- [VimCompletesMe](https://github.com/ajh17/VimCompletesMe)\n- [YouCompleteMe](https://github.com/Valloric/YouCompleteMe)\n- [completor.vim](https://github.com/maralla/completor.vim)\n- [deoplete.nvim](https://github.com/Shougo/deoplete.nvim)\n- [neocomplete.vim](https://github.com/Shougo/neocomplete.vim)\n- [supertab](https://github.com/ervandew/supertab)\n- [vim-mucomplete](https://github.com/lifepillar/vim-mucomplete)\n\n#### Cycle\n\n- [switch.vim](https://github.com/AndrewRadev/switch.vim)\n- [vim-speeddating](https://github.com/tpope/vim-speeddating)\n\n#### 注释工具\n\n- [nerdcommenter](https://github.com/scrooloose/nerdcommenter)\n- [tcomment_vim](https://github.com/tomtom/tcomment_vim)\n- [vim-commentary](https://github.com/tpope/vim-commentary)\n\n#### 分割符 \n\n- [auto-pairs](https://github.com/jiangmiao/auto-pairs)\n- [delimitMate](https://github.com/Raimondi/delimitMate)\n- [vim-endwise](https://github.com/tpope/vim-endwise)\n\n#### 模糊搜索\n\n- [Command-T](https://github.com/wincent/Command-T) (_requires +ruby_)\n- [ctrlp.vim](https://github.com/ctrlpvim/ctrlp.vim)\n- [denite.nvim](https://github.com/Shougo/denite.nvim) (_requires +python3_)\n- [fzf](https://github.com/junegunn/fzf)\n- [unite.vim](https://github.com/Shougo/unite.vim)\n\n#### Grep 工具\n\n- [ctrlsf.vim](https://github.com/dyng/ctrlsf.vim)\n- [ferret](https://github.com/wincent/ferret)\n- [vim-grepper](https://github.com/mhinz/vim-grepper)\n\n#### 缩进\n\n- [indentLine](https://github.com/Yggdroot/indentLine)\n- [vim-indent-guides](https://github.com/nathanaelkane/vim-indent-guides)\n\n#### 文件导航 \n\n- [nerdtree](https://github.com/scrooloose/nerdtree)\n- [tagbar](https://github.com/majutsushi/tagbar)\n- [vim-dirvish](https://github.com/justinmk/vim-dirvish)\n- [vim-easymotion](https://github.com/easymotion/vim-easymotion)\n- [vim-sneak](https://github.com/justinmk/vim-sneak)\n- [vim-vinegar](https://github.com/tpope/vim-vinegar)\n- [vimfiler.vim](https://github.com/Shougo/vimfiler.vim) (_depends on other plugins_)\n\n见[fuzzy finders](#fuzzy-finders).\n\n#### 代码片段\n\n- [neosnippet.vim](https://github.com/Shougo/neosnippet.vim) (_depends on other plugins_)\n- [ultisnips](https://github.com/SirVer/ultisnips)\n- [vim-snipmate](https://github.com/garbas/vim-snipmate) (_depends on other plugins_)\n- [xptemplate](https://github.com/drmingdrmer/xptemplate)\n\n#### 状态栏\n\n- [lightline.vim](https://github.com/itchyny/lightline.vim)\n- [powerline](https://github.com/powerline/powerline)\n- [vim-airline](https://github.com/vim-airline/vim-airline)\n- [vim-flagship](https://github.com/tpope/vim-flagship)\n\n#### 文字环绕符 \n\n- [vim-operator-surround](https://github.com/rhysd/vim-operator-surround)\n- [vim-sandwich](https://github.com/machakann/vim-sandwich)\n- [vim-surround](https://github.com/tpope/vim-surround)\n\n#### 记笔记 \n\n- [vim-dotoo](https://github.com/dhruvasagar/vim-dotoo)\n- [vim-journal](https://github.com/junegunn/vim-journal)\n- [vim-notes](https://github.com/xolox/vim-notes)\n- [vim-orgmode](https://github.com/jceb/vim-orgmode)\n- [vim-pad](https://github.com/fmoralesc/vim-pad)\n- [vimwiki](https://github.com/vimwiki/vimwiki)\n\n#### 文本对象\n\n- [targets.vim](https://github.com/wellle/targets.vim)\n- [vim-exchange](https://github.com/tommcdo/vim-exchange)\n- [vim-textobj-user](https://github.com/kana/vim-textobj-user)\n\n#### Tmux\n\n- [tmux-complete.vim](https://github.com/wellle/tmux-complete.vim)\n- [vim-dispatch](https://github.com/tpope/vim-dispatch)\n- [vim-tmux-navigator](https://github.com/christoomey/vim-tmux-navigator)\n- [vitality.vim](https://github.com/sjl/vitality.vim)\n\n#### 撤销历史 \n\n- [gundo.vim](https://github.com/sjl/gundo.vim)\n- [undotree](https://github.com/mbbill/undotree)\n\n#### 版本控制\n\n- [agit.vim](https://github.com/cohama/agit.vim)\n- [committia.vim](https://github.com/rhysd/committia.vim)\n- [gist-vim](https://github.com/mattn/gist-vim)\n- [github-issues.vim](https://github.com/jaxbot/github-issues.vim)\n- [gitv](https://github.com/gregsexton/gitv)\n- [gv.vim](https://github.com/junegunn/gv.vim)\n- [nerdtree-git-plugin](https://github.com/Xuyuanp/nerdtree-git-plugin)\n- [vim-fugitive](https://github.com/tpope/vim-fugitive)\n- [vim-gitgutter](https://github.com/airblade/vim-gitgutter)\n- [vim-github-dashboard](https://github.com/junegunn/vim-github-dashboard)\n- [vim-lawrencium](https://bitbucket.org/ludovicchabant/vim-lawrencium)\n- [vim-signify](https://github.com/mhinz/vim-signify)\n- [vimagit](https://github.com/jreybert/vimagit)\n\n#### 写作工具\n\n- [vim-grammarous](https://github.com/rhysd/vim-grammarous)\n- [vim-online-thesaurus](https://github.com/beloglazov/vim-online-thesaurus)\n\n#### 其他\n\n- [CoVim](https://github.com/FredKSchott/CoVim)\n- [FastFold](https://github.com/Konfekt/FastFold)\n- [NrrwRgn](https://github.com/chrisbra/NrrwRgn)\n- [calendar.vim](https://github.com/itchyny/calendar.vim)\n- [goyo.vim](https://github.com/junegunn/goyo.vim)\n- [sideways.vim](https://github.com/AndrewRadev/sideways.vim)\n- [splitjoin.vim](https://github.com/AndrewRadev/splitjoin.vim)\n- [targets.vim](https://github.com/wellle/targets.vim)\n- [unicode.vim](https://github.com/chrisbra/unicode.vim)\n- [vim-bracketed-paste](https://github.com/ConradIrwin/vim-bracketed-paste)\n- [vim-devicons](https://github.com/ryanoasis/vim-devicons)\n- [vim-diminactive](https://github.com/blueyed/vim-diminactive)\n- [vim-fixkey](https://github.com/drmikehenry/vim-fixkey)\n- [vim-gnupg](https://github.com/jamessan/vim-gnupg)\n- [vim-hackernews](https://github.com/ryanss/vim-hackernews)\n- [vim-move](https://github.com/matze/vim-move)\n- [vim-multiple-cursors](https://github.com/terryma/vim-multiple-cursors)\n- [vim-projectionist](https://github.com/tpope/vim-projectionist)\n- [vim-rsi](https://github.com/tpope/vim-rsi)\n- [vim-startify](https://github.com/mhinz/vim-startify)\n- [vim-unimpaired](https://github.com/tpope/vim-unimpaired)\n\n## 以文件类型区分\n\n#### C and C++\n\n- [a.vim](https://github.com/vim-scripts/a.vim)\n- [clang_complete](https://github.com/Rip-Rip/clang_complete)\n- [color_coded](https://github.com/jeaye/color_coded)\n- [lh-cpp](https://github.com/LucHermitte/lh-cpp)\n\n#### Clojure\n\n- [paredit](https://github.com/kovisoft/paredit)\n- [rainbow_parentheses.vim](https://github.com/junegunn/rainbow_parentheses.vim)\n- [vim-clojure-highlight](https://github.com/guns/vim-clojure-highlight)\n- [vim-fireplace](https://github.com/tpope/vim-fireplace)\n- [vim-salve](https://github.com/tpope/vim-salve)\n- [vim-sexp-mappings-for-regular-people](https://github.com/tpope/vim-sexp-mappings-for-regular-people)\n- [vim-sexp](https://github.com/guns/vim-sexp)\n\n#### HTML\n\n- [emmet-vim](https://github.com/mattn/emmet-vim)\n- [html5.vim](https://github.com/othree/html5.vim)\n\n#### Go\n\n- [gofmt.vim](https://github.com/tweekmonster/gofmt.vim)\n- [hl-goimport.vim](https://github.com/tweekmonster/hl-goimport.vim)\n- [vim-go](https://github.com/fatih/vim-go)\n- [vim-godebug](https://github.com/jodosha/vim-godebug)\n\n#### Java\n\n- [vim-javacomplete2](https://github.com/artur-shaik/vim-javacomplete2)\n\n#### Javascript\n\n- [es.next.syntax.vim](https://github.com/othree/es.next.syntax.vim)\n- [javascript-libraries-syntax.vim](https://github.com/othree/javascript-libraries-syntax.vim)\n- [node-vim-debugger](https://github.com/sidorares/node-vim-debugger)\n- [tern_for_vim](https://github.com/ternjs/tern_for_vim)\n- [vim-esformatter](https://github.com/millermedeiros/vim-esformatter)\n- [vim-javascript-syntax](https://github.com/jelera/vim-javascript-syntax)\n- [vim-javascript](https://github.com/pangloss/vim-javascript)\n- [vim-node](https://github.com/moll/vim-node)\n- [yajs.vim](https://github.com/othree/yajs.vim)\n\n#### Lua\n\n- [vim-lua-ftplugin](https://github.com/xolox/vim-lua-ftplugin)\n- [vim-lua-inspect](https://github.com/xolox/vim-lua-inspect)\n\n#### Python\n\n- [braceless.vim](https://github.com/tweekmonster/braceless.vim)\n- [impsort.vim](https://github.com/tweekmonster/impsort.vim)\n- [jedi-vim](https://github.com/davidhalter/jedi-vim)\n- [python-mode](https://github.com/klen/python-mode)\n- [vim-flake8](https://github.com/nvie/vim-flake8)\n\n#### TeX\n\n- [vimtex](https://github.com/lervag/vimtex)\n\n#### VimL\n\n- [vim-scriptease](https://github.com/tpope/vim-scriptease)\n"
  },
  {
    "path": "chapter/Miscellaneous.md",
    "content": "# 杂项\n\n## 附加资源\n\n## Vim 配置集合\n\n## 内置插件\n\n## 映射大写锁定键（CapsLock）到控制键（Ctrl）\n\n## 复活节彩蛋\n\n## 为什么用 hjkl 移动光标？\n\n"
  },
  {
    "path": "chapter/Technical quirks.md",
    "content": "# 技术怪癖\n\n## NUL 符用新行表示\n\n文件中的 NUL 符 (`\\0`) 在内存中会被存储为换行符 (`\\n`) 且\n在缓冲区中显示为 `^@`.\n\n在 `man 7 ascii` 和 `:h NL-used-for-Nul` 中查看更多信息。\n"
  },
  {
    "path": "chapter/bracketed-paste.md",
    "content": "## 粘贴归类 (要不为什么我总要设置‘粘贴’？)\n\n粘贴归类模式使得终端虚拟器可以区分键入文本和粘贴文本。\n\n你是否曾经尝试过向 Vim 粘贴过代码，结果弄得一团糟？\n\n这只会在你通过 `cmd+v`， `shift-insert`， `middle-click` 等等命令进行粘贴时发生。\n因为那时你只是在向终端虚拟器里丢文本。Vim 并不知道你在粘贴文本，它天真地认为你是一个熟练的打字员。因此，它尝试排版，但是失败了。\n\n如果你使用 Vim 命令集里的粘贴，比如 `\"+p` ，那这就不会成为问题，因为 Vim 知道你做的是粘贴操作。\n\n为了解决这个，你需要设置粘贴 `:set paste` ，以便获取粘贴现状。 参考 `:h 'paste'` 和 `:h 'pastetoggle'`.\n\n如果你已经受够了不停地切换 `'paste'` ，看一看这个不错的插件能为你做什么：[粘贴归类](https://github.com/ConradIrwin/vim-bracketed-paste)。\n\n插件作者的拓展阅读：[欢迎点击](http://cirw.in/blog/bracketed-paste).\n\n**Neovim**: Neovim 努力无缝地完成这些工作，并在终端虚拟器支持时自动设定粘贴归类模式。\n"
  },
  {
    "path": "chapter/editing-huge-files-is-slow.md",
    "content": "## 编辑大文件很慢\n\n大文件最大的问题，就是 Vim 会一次性读取整个文件。这一过程的完成取决于内部如何提供缓存空间。\n([Vim 开发的讨论](https://groups.google.com/forum/#!topic/vim_dev/oY3i8rqYGD4/discussion))\n\n如果你只是想读取， `tail hugefile | vim -` 会是一个很好的解决方法.\n\n如果不用语法，设定和插件，你也能生活自理一段时间:\n\n```\n$ vim -u NONE -N\n```\n\n这将使得导航明显提速，因为代价高昂的语法高亮正则表达式不再被使用。你也应该让 Vim 不要使用交换文件和 Vim 信息文件，以避免写入时的长延迟。\n\n```\n$ vim -n -u NONE -i NONE -N\n```\n\n简而言之，真的写入超大文件的时候尽量别用 Vim。 :\\\n"
  },
  {
    "path": "chapter/editing-small-files-is-slow.md",
    "content": "## 编辑小文件很慢\n\n对性能有重大影响的有两个方面：\n\n1. 复杂的**正则表达式**。尤其是 Ruby 语法文件导致人们过去一直慢慢吞吞。（[Debugging syntax files](#debugging-syntax-files)里也有说明。）\n2. **页面刷新**。一些特性强制所有行都刷新。\n\n| 典型败笔 | 原因？ | 解决方法？ |\n|-----------------|------|-----------|\n| `:set cursorline`        | 导致所有行刷新。 | `:set nocursorline` |\n| `:set cursorcolumn`      | 导致所有行刷新。 | `:set nocursorcolumn` |\n| `:set relativenumber`    | 导致所有行刷新。 | `:set norelativenumber` |\n| `:set foldmethod=syntax` | 语法文件算减速的话，这无异于刹车。 | `:set foldmethod=manual`, `:set foldmethod=marker` or [快速折叠](https://github.com/Konfekt/FastFold) |\n| `:set synmaxcol=3000`    | 根据内部表示规则, Vim 一般不待见对很长的行。这一设定导致3000列时才会把所在行高亮。 | `:set synmaxcol=200` |\n| matchparen.vim           | 使用默认加载。使用正则表达式去匹配括回。 | 禁用插件: `:h matchparen` |\n\n**注意**: 只有当真的遭遇实质的性能缺陷时，你才需要做这些改进。多数情况下，上面提到的这些方面还都凑合。\n"
  },
  {
    "path": "chapter/function-search-undo.md",
    "content": "## 无法重复函数中执行的搜索\n\n- 一个命令的搜索关键词（`/`, `:代替`, ...）改变了“上一次搜索所用的关键词”。（这个改变保存在 `/` 的注册表里；使用 `:echo @/` 可以打印出来）\n- 一个简单的文本修改可以用 `.` 再次执行。（这个执行保存在 `.` 的注册表里；使用 `:echo @.` 可以打印出来）\n\n如果你在一个函数里做以上操作，两件都_not_会是那么回事儿。所以你不能简单地在一个函数里高亮词汇同时再用这个函数做文本修改。 \n\n帮助： `:h function-search-undo`"
  },
  {
    "path": "chapter/map-capslock-to-control.md",
    "content": "## 映射大写锁定键（CapsLock）到控制键（Ctrl）\n\n大写锁定键属于键盘上最少用到的按键，但是它要比控制键更加容易按到，\n因为它位于你手放在键盘时的[起始行](https://raw.githubusercontent.com/mhinz/vim-galore/master/contents/images/content-homerow.png)。\n如果你敲很多代码的话，映射大写锁定键（CapsLock）到控制键（Ctrl）可以有效降低\n[重复使力伤害](https://de.wikipedia.org/wiki/Repetitive-Strain-Injury-Syndrom) (ps:为什么将 jk 映射为 esc，而不是 jj，重复点击同一个按键对手指伤害很大)。\n\n友情提示：当你习惯这个设定后，你就离不开它了。\n\n**OSX**:\n\n`System Preferences -> Keyboard -> Keyboard Tab -> Modifier Keys`. 变更\n\"CapsLock\" 为 \"Control\"。\n\n**Linux**:\n\n为了使按键生效，请把以下几行放入 `~/.xmodmap` 文件:\n\n    remove Lock = Caps_Lock\n    keysym Caps_Lock = Control_L\n    add Control = Control_L\n\n用以下命令使之生效<br> `$ xmodmap ~/.xmodmap`。\n\n替代方法有[caps2esc](https://github.com/oblitum/caps2esc) 或者\n[xcape](https://github.com/alols/xcape)。\n\n**Windows**:\n\n请参看 [superuser.com: 在Windows8.1映射大写锁定键到控制键](http://superuser.com/questions/764782/map-caps-lock-to-control-in-windows-8-1)。\n"
  },
  {
    "path": "chapter/standard-plugins.md",
    "content": "## 内置插件\n\n出乎很多人的意料，Vim自己默认加载了大把大把的插件。启动 Vim 后，用`:scriptnames`查看所有加载的源文件\n\n这些文件多数永远不会被用到，所以请禁止如你所见的以下插件。\n这些插件仍旧会在源文件列出，但是当Vim启动时，只有第一行会被读取，而之后的配置，命令和日志都不会执行。\n\n| 插件     | 禁用                  | 帮助 |\n|------------|-------------------------------------|------|\n| 2html      | `let g:loaded_2html_plugin = 1`     | `:h 2html` |\n| getscript  | `let g:loaded_getscriptPlugin = 1`  | `:h pi_getscript` |\n| gzip       | `let g:loaded_gzip = 1`             | `:h pi_gzip` |\n| logipat    | `let g:loaded_logipat = 1`          | `:h pi_logipat` |\n| matchparen | `let g:loaded_matchparen = 1`       | `:h pi_paren` |\n| netrw      | `let g:loaded_netrwPlugin = 1`      | `:h pi_netrw` |\n| rrhelper   | `let g:loaded_rrhelper = 1`         | `:e $VIMRUNTIME/plugin/rrhelper.vim` |\n| spellfile  | `let g:loaded_spellfile_plugin = 1` | `:h spellfile.vim` |\n| tar        | `let g:loaded_tarPlugin = 1`        | `:h pi_tar` |\n| vimball    | `let g:loaded_vimballPlugin = 1`    | `:h pi_vimball` |\n| zip        | `let g:loaded_zipPlugin = 1`        | `:h pi_zip` |\n"
  },
  {
    "path": "chapter/vim-distributions.md",
    "content": "## Vim 配置集合\n\nVim 配置集合是集成多多种插件以及相关配置的组合。\n\n高阶用户总是知道如何构建自己的编辑器，所以配置集合一般是针对初学者。\n如果你想要尝试，那么将面临一个辩证的想法：加入很多额外的东西来学习 Vim 是否会让这变得更加简单。\n\n我知道很多人不想在配置编辑器上花过多时间（但实际上，当你卡住时，你就会不停地花时间定制自己的 vimrc）\n因此，想要节约时间，那么就因该真正的去了解和学习 Vim 原生功能，只有这样你才能中获益。\n\n再次强调一下：“一个程序员应当懂得他的工具”。\n\n总之，如果你知道自己在做什么，你也许能从以下几个 Vim 配置集合中获得一些灵感。\n\n- [cream](http://cream.sourceforge.net)\n- [janus](https://github.com/carlhuda/janus.git)\n- [spacevim](https://github.com/SpaceVim/SpaceVim)\n- [spf13](https://github.com/spf13/spf13-vim)\n"
  },
  {
    "path": "chapter/why-hjkl-for-navigation.md",
    "content": "## 为什么用hjkl移动光标？\n\n当 [Bill Joy](https://en.wikipedia.org/wiki/Bill_Joy) 创建[vi](https://en.wikipedia.org/wiki/Vi)，Vim 的前身时, 他的工作是在一台[ADM-3A](https://en.wikipedia.org/wiki/ADM-3A)完成的，而这个机器没有用别的键控制光标，而正是如你猜到的 hjkl 作为光标控制键。\n\n键盘布局: [请点击](https://raw.githubusercontent.com/mhinz/vim-galore/master/contents/images/content-adm-3a-layout.jpg)\n\n这也告诉了我们为什么 Unix 系统会以`~`代表主目录。\n\n"
  },
  {
    "path": "contents/minimal-vimrc.vim",
    "content": "\"\n\" A (not so) minimal vimrc.\n\"\n\n\" You want Vim, not vi. When Vim finds a vimrc, 'nocompatible' is set anyway.\n\" We set it explicitely to make our position clear!\nset nocompatible\n\nfiletype plugin indent on  \" Load plugins according to detected filetype.\nsyntax on                  \" Enable syntax highlighting.\n\nset autoindent             \" Indent according to previous line.\nset expandtab              \" Use spaces instead of tabs.\nset softtabstop =4         \" Tab key indents by 4 spaces.\nset shiftwidth  =4         \" >> indents by 4 spaces.\nset shiftround             \" >> indents to next multiple of 'shiftwidth'.\n\nset backspace   =indent,eol,start  \" Make backspace work as you would expect.\nset hidden                 \" Switch between buffers without having to save first.\nset laststatus  =2         \" Always show statusline.\nset display     =lastline  \" Show as much as possible of the last line.\n\nset showmode               \" Show current mode in command-line.\nset showcmd                \" Show already typed keys when more are expected.\n\nset incsearch              \" Highlight while searching with / or ?.\nset hlsearch               \" Keep matches highlighted.\n\nset ttyfast                \" Faster redrawing.\nset lazyredraw             \" Only redraw when necessary.\n\nset splitbelow             \" Open new windows below the current window.\nset splitright             \" Open new windows right of the current window.\n\nset cursorline             \" Find the current line quickly.\nset wrapscan               \" Searches wrap around end-of-file.\nset report      =0         \" Always report changed lines.\nset synmaxcol   =200       \" Only highlight the first 200 columns.\n\nset list                   \" Show non-printable characters.\nif has('multi_byte') && &encoding ==# 'utf-8'\n  let &listchars = 'tab:▸ ,extends:❯,precedes:❮,nbsp:±'\nelse\n  let &listchars = 'tab:> ,extends:>,precedes:<,nbsp:.'\nendif\n\n\" The fish shell is not very compatible to other shells and unexpectedly\n\" breaks things that use 'shell'.\nif &shell =~# 'fish$'\n  set shell=/bin/bash\nendif\n\n\" Put all temporary files under the same directory.\n\" https://github.com/mhinz/vim-galore#handling-backup-swap-undo-and-viminfo-files\nset backup\nset backupdir   =$HOME/.vim/files/backup//\nset backupext   =-vimbackup\nset backupskip  =\nset directory   =$HOME/.vim/files/swap//\nset updatecount =100\nset undofile\nset undodir     =$HOME/.vim/files/undo//\nset viminfo     ='100,n$HOME/.vim/files/info/viminfo\n"
  },
  {
    "path": "tools/chinese_linter.vim",
    "content": "scriptencoding utf-8\n\" 忽略的错误\nlet g:chinese_linter_disabled_nr = get(g:,'chinese_linter_disabled_nr', [])\n\" 中文标点符号（更全）\nlet s:CHINEXE_PUNCTUATION = \"\\u3002\\uff1f\\uff01\\uff0c\\u3001\\uff1b\\uff1a\\u201c\\u201d\\u2018\\u2019\\uff08\\uff09\\u300a\\u300b\\u3008\\u3009\\u3010\\u3011\\u300e\\u300f\\u300c\\u300d\\ufe43\\ufe44\\u3014\\u3015\\u2026\\u2014\\uff5e\\ufe4f\\uffe5\"\n\" 英文标点\nlet s:punctuation = ','\n\" 中文标点符号\nlet s:punctuation_cn = '[\\u3002\\uff1b\\uff0c\\uff1a\\u201c\\u201d\\uff08\\uff09\\u3001\\uff1f\\u300a\\u300b]'\n\" 中文汉字\nlet s:chars_cn = '[\\u4e00-\\u9fa5]'\n\" 数字\nlet s:numbers = '[0-9]'\n\" 英文字母\nlet s:chars = '[a-zA-Z]'\nlet s:ERRORS = {\n            \\ 'E001' : ['中文字符后存在英文标点', s:chars_cn . s:punctuation],\n            \\ 'E002' : ['中英文之间没有空格', '\\(' . s:chars_cn . s:chars . '\\)\\|\\(' . s:chars . s:chars_cn . '\\)'],\n            \\ 'E003' : ['中文与数字之间没有空格', '\\(' . s:chars_cn . s:numbers . '\\)\\|\\(' . s:numbers . s:chars_cn . '\\)'],\n            \\ 'E004' : ['中文标点之后存在空格',  s:punctuation_cn . '\\s\\+'],\n            \\ 'E005' : ['行尾含有空格', '\\s\\+$'],\n            \\ }\n\ncommand! -nargs=? CheckChinese call s:check(<q-args>)\n\nfunction! s:check(...) abort\n    let s:file = getline(1,'$')\n    let s:bufnr = bufnr('%')\n    let s:linenr = 0\n    let s:colnr = 0\n    let s:qf = []\n    for l:line in s:file\n        let s:linenr += 1\n        call s:parser(l:line)\n    endfor\n    let s:linenr = 0\n    let s:colnr = 0\n    if !empty(s:qf)\n        let g:wsd = s:qf\n        call s:update_qf(s:qf)\n        copen\n    else\n        call setqflist([])\n        cclose\n    endif\nendfunction\n\nfunction! s:parser(line) abort\n    for l:error_nr in keys(s:ERRORS)\n        if index(g:chinese_linter_disabled_nr, l:error_nr) == -1\n            call s:find_error(l:error_nr, a:line)\n        endif\n    endfor\nendfunction\n\nfunction! s:find_error(nr, line) abort\n    let l:error = s:ERRORS[a:nr]\n    let s:colnr = matchend(a:line, l:error[1])\n    if s:colnr != -1\n        call s:add_to_qf(a:nr)\n    endif\nendfunction\n\nfunction! s:add_to_qf(nr) abort\n    let l:error_item = {\n                \\ 'bufnr' : s:bufnr,\n                \\ 'lnum' : s:linenr,\n                \\ 'col' : s:colnr,\n                \\ 'vcol' : 0,\n                \\ 'text' : a:nr . ' ' . s:ERRORS[a:nr][0],\n                \\ 'nr' : a:nr,\n                \\ 'type' : 'E'\n                \\ }\n    call add(s:qf, l:error_item)\nendfunction\n\n\" TODO 加入语法分析\n\n\nfunction! s:update_qf(dict) abort\n    call setqflist(a:dict)\nendfunction\n"
  }
]