diff options
35 files changed, 12493 insertions, 30 deletions
@@ -57,20 +57,20 @@ If you need full functionality of any plugin, please use it directly with your p - [caddyfile](https://github.com/isobit/vim-caddyfile) (syntax, indent, ftplugin) - [carp](https://github.com/hellerve/carp-vim) (syntax) - [cjsx](https://github.com/mtscout6/vim-cjsx) (syntax, ftplugin) -- [clojure](https://github.com/guns/vim-clojure-static) (syntax, indent, autoload, ftplugin) +- [clojure](https://github.com/guns/vim-clojure-static) (syntax, indent, doc, autoload, ftplugin) - [cmake](https://github.com/pboettch/vim-cmake-syntax) (syntax, indent) -- [coffee-script](https://github.com/kchmck/vim-coffee-script) (syntax, indent, compiler, autoload, ftplugin) +- [coffee-script](https://github.com/kchmck/vim-coffee-script) (syntax, indent, doc, compiler, autoload, ftplugin) - [cql](https://github.com/elubow/cql-vim) (syntax) -- [cryptol](https://github.com/victoredwardocallaghan/cryptol.vim) (syntax, compiler, ftplugin) +- [cryptol](https://github.com/victoredwardocallaghan/cryptol.vim) (syntax, doc, compiler, ftplugin) - [crystal](https://github.com/rhysd/vim-crystal) (syntax, indent, autoload, ftplugin) -- [csv](https://github.com/chrisbra/csv.vim) (syntax, autoload, ftplugin) +- [csv](https://github.com/chrisbra/csv.vim) (syntax, doc, autoload, ftplugin) - [cucumber](https://github.com/tpope/vim-cucumber) (syntax, indent, compiler, ftplugin) - [cue](https://github.com/mgrabovsky/vim-cuesheet) (syntax) -- [dart](https://github.com/dart-lang/dart-vim-plugin) (syntax, indent, autoload, ftplugin) -- [dhall](https://github.com/vmchale/dhall-vim) (syntax, ftplugin) +- [dart](https://github.com/dart-lang/dart-vim-plugin) (syntax, indent, doc, autoload, ftplugin) +- [dhall](https://github.com/vmchale/dhall-vim) (syntax, doc, ftplugin) - [dlang](https://github.com/JesseKPhillips/d.vim) (syntax, indent) - [dockerfile](https://github.com/ekalinin/Dockerfile.vim) (syntax, indent, ftplugin) -- [elixir](https://github.com/elixir-lang/vim-elixir) (syntax, indent, compiler, autoload, ftplugin) +- [elixir](https://github.com/elixir-lang/vim-elixir) (syntax, indent, doc, compiler, autoload, ftplugin) - [elm](https://github.com/andys8/vim-elm-syntax) (syntax, indent) - [emberscript](https://github.com/yalesov/vim-ember-script) (syntax, indent, ftplugin) - [emblem](https://github.com/yalesov/vim-emblem) (syntax, indent, ftplugin) @@ -79,19 +79,19 @@ If you need full functionality of any plugin, please use it directly with your p - [ferm](https://github.com/vim-scripts/ferm.vim) (syntax) - [fish](https://github.com/georgewitteman/vim-fish) (syntax, indent, compiler, autoload, ftplugin) - [flatbuffers](https://github.com/dcharbon/vim-flatbuffers) (syntax) -- [fsharp](https://github.com/ionide/Ionide-vim) (syntax, indent, autoload) +- [fsharp](https://github.com/ionide/Ionide-vim) (syntax, indent, doc, autoload) - [gdscript](https://github.com/calviken/vim-gdscript3) (syntax, indent) -- [git](https://github.com/tpope/vim-git) (syntax, indent, ftplugin) +- [git](https://github.com/tpope/vim-git) (syntax, indent, doc, ftplugin) - [glsl](https://github.com/tikhomirov/vim-glsl) (syntax, indent) - [gmpl](https://github.com/maelvalais/gmpl.vim) (syntax) - [gnuplot](https://github.com/vim-scripts/gnuplot-syntax-highlighting) (syntax) -- [go](https://github.com/fatih/vim-go) (syntax, indent, compiler) +- [go](https://github.com/fatih/vim-go) (syntax, indent, doc, compiler) - [gradle](https://github.com/tfnico/vim-gradle) (compiler) - [graphql](https://github.com/jparise/vim-graphql) (syntax, indent, autoload, ftplugin, after) - [haml](https://github.com/sheerun/vim-haml) (syntax, indent, compiler, ftplugin) - [handlebars](https://github.com/sheerun/vim-mustache-handlebars) (syntax, indent, ftplugin) - [haproxy](https://github.com/CH-DanReif/haproxy.vim) (syntax) -- [haskell](https://github.com/neovimhaskell/haskell-vim) (syntax, indent, ftplugin) +- [haskell](https://github.com/neovimhaskell/haskell-vim) (syntax, indent, doc, ftplugin) - [haxe](https://github.com/yaymukund/vim-haxe) (syntax) - [hcl](https://github.com/b4b4r07/vim-hcl) (syntax, indent, ftplugin) - [helm](https://github.com/towolf/vim-helm) (syntax) @@ -99,7 +99,7 @@ If you need full functionality of any plugin, please use it directly with your p - [html5](https://github.com/othree/html5.vim) (syntax, indent, autoload, ftplugin) - [i3](https://github.com/mboughaba/i3config.vim) (syntax, ftplugin) - [icalendar](https://github.com/chutzpah/icalendar.vim) (syntax) -- [idris](https://github.com/idris-hackers/idris-vim) (syntax, indent, ftplugin) +- [idris](https://github.com/idris-hackers/idris-vim) (syntax, indent, doc, ftplugin) - [ion](https://github.com/vmchale/ion-vim) (syntax, ftplugin) - [javascript](https://github.com/pangloss/vim-javascript) (syntax, indent, ftplugin, extras) - [jenkins](https://github.com/martinda/Jenkinsfile-vim-syntax) (syntax, indent) @@ -107,20 +107,20 @@ If you need full functionality of any plugin, please use it directly with your p - [jq](https://github.com/vito-c/jq.vim) (syntax, ftplugin) - [json5](https://github.com/GutenYe/json5.vim) (syntax) - [json](https://github.com/elzr/vim-json) (syntax, indent, ftplugin) -- [jsonnet](https://github.com/google/vim-jsonnet) (syntax, autoload, ftplugin) +- [jsonnet](https://github.com/google/vim-jsonnet) (syntax, doc, autoload, ftplugin) - [jst](https://github.com/briancollins/vim-jst) (syntax, indent) - [jsx](https://github.com/MaxMEllon/vim-jsx-pretty) (autoload, after) -- [julia](https://github.com/JuliaEditorSupport/julia-vim) (syntax, indent, autoload, ftplugin) +- [julia](https://github.com/JuliaEditorSupport/julia-vim) (syntax, indent, doc, autoload, ftplugin) - [kotlin](https://github.com/udalov/kotlin-vim) (syntax, indent, ftplugin) -- [ledger](https://github.com/ledger/vim-ledger) (syntax, indent, compiler, autoload) +- [ledger](https://github.com/ledger/vim-ledger) (syntax, indent, doc, compiler, autoload) - [less](https://github.com/groenewege/vim-less) (syntax, indent, ftplugin) - [lilypond](https://github.com/anowlcalledjosh/vim-lilypond) (syntax, indent, compiler, ftplugin) - [livescript](https://github.com/gkz/vim-ls) (syntax, indent, compiler, ftplugin) - [llvm](https://github.com/rhysd/vim-llvm) (syntax, indent, ftplugin) -- [log](https://github.com/MTDL9/vim-log-highlighting) (syntax) +- [log](https://github.com/MTDL9/vim-log-highlighting) (syntax, doc) - [lua](https://github.com/tbastos/vim-lua) (syntax, indent) - [mako](https://github.com/sophacles/vim-bundle-mako) (syntax, indent, ftplugin) -- [markdown](https://github.com/plasticboy/vim-markdown) (syntax, indent, ftplugin) +- [markdown](https://github.com/plasticboy/vim-markdown) (syntax, indent, doc, ftplugin) - [mathematica](https://github.com/voldikss/vim-mma) (syntax, ftplugin) - [mdx](https://github.com/jxnblk/vim-mdx-js) (syntax) - [meson](https://github.com/mesonbuild/meson) (syntax, indent, ftplugin) @@ -129,38 +129,38 @@ If you need full functionality of any plugin, please use it directly with your p - [nim](https://github.com/zah/nim.vim) (syntax, indent, compiler, autoload) - [nix](https://github.com/LnL7/vim-nix) (syntax, indent, compiler, ftplugin) - [objc](https://github.com/b4winckler/vim-objc) (ftplugin, syntax, indent) -- [ocaml](https://github.com/rgrinberg/vim-ocaml) (syntax, indent, compiler, ftplugin) +- [ocaml](https://github.com/rgrinberg/vim-ocaml) (syntax, indent, doc, compiler, ftplugin) - [octave](https://github.com/McSinyx/vim-octave) (syntax, indent) - [opencl](https://github.com/petRUShka/vim-opencl) (syntax, indent, ftplugin) - [perl](https://github.com/vim-perl/vim-perl) (syntax, indent, ftplugin) -- [pgsql](https://github.com/lifepillar/pgsql.vim) (syntax, indent) +- [pgsql](https://github.com/lifepillar/pgsql.vim) (syntax, indent, doc) - [php](https://github.com/StanAngeloff/php.vim) (syntax) - [plantuml](https://github.com/aklt/plantuml-syntax) (syntax, indent, ftplugin) - [pony](https://github.com/jakwings/vim-pony) (syntax, indent, autoload, ftplugin) -- [powershell](https://github.com/PProvost/vim-ps1) (syntax, indent, compiler, ftplugin) +- [powershell](https://github.com/PProvost/vim-ps1) (syntax, indent, doc, compiler, ftplugin) - [protobuf](https://github.com/uarun/vim-protobuf) (syntax, indent) - [pug](https://github.com/digitaltoad/vim-pug) (syntax, indent, ftplugin) - [puppet](https://github.com/rodjek/vim-puppet) (syntax, indent, autoload, ftplugin, ctags) - [purescript](https://github.com/purescript-contrib/purescript-vim) (syntax, indent, ftplugin) - [python-compiler](https://github.com/aliev/vim-compiler-python) (compiler, autoload) - [python-indent](https://github.com/Vimjas/vim-python-pep8-indent) (indent) -- [python](https://github.com/vim-python/python-syntax) (syntax) +- [python](https://github.com/vim-python/python-syntax) (syntax, doc) - [qmake](https://github.com/artoj/qmake-syntax-vim) (syntax) - [qml](https://github.com/peterhoeg/vim-qml) (syntax, indent, ftplugin) - [r-lang](https://github.com/vim-scripts/R.vim) (syntax) - [racket](https://github.com/wlangstroth/vim-racket) (syntax, indent, ftplugin) - [ragel](https://github.com/jneen/ragel.vim) (syntax) - [raku](https://github.com/Raku/vim-raku) (syntax, indent, ftplugin) -- [raml](https://github.com/IN3D/vim-raml) (syntax, ftplugin) +- [raml](https://github.com/IN3D/vim-raml) (syntax, doc, ftplugin) - [razor](https://github.com/adamclerk/vim-razor) (syntax, indent, ftplugin) -- [reason](https://github.com/reasonml-editor/vim-reason-plus) (syntax, indent) +- [reason](https://github.com/reasonml-editor/vim-reason-plus) (syntax, indent, doc) - [requirements](https://github.com/raimon49/requirements.txt.vim) (syntax, autoload) - [rspec](https://github.com/keith/rspec.vim) (syntax) - [rst](https://github.com/marshallward/vim-restructuredtext) (syntax, indent, autoload, ftplugin) -- [ruby](https://github.com/vim-ruby/vim-ruby) (syntax, indent, compiler, autoload, ftplugin) -- [rust](https://github.com/rust-lang/rust.vim) (syntax, indent, compiler, autoload, ftplugin, ctags) +- [ruby](https://github.com/vim-ruby/vim-ruby) (syntax, indent, doc, compiler, autoload, ftplugin) +- [rust](https://github.com/rust-lang/rust.vim) (syntax, indent, doc, compiler, autoload, ftplugin, ctags) - [sbt](https://github.com/derekwyatt/vim-sbt) (syntax) -- [scala](https://github.com/derekwyatt/vim-scala) (syntax, indent, compiler, ftplugin, ctags) +- [scala](https://github.com/derekwyatt/vim-scala) (syntax, indent, doc, compiler, ftplugin, ctags) - [scss](https://github.com/cakebaker/scss-syntax.vim) (syntax, indent, ftplugin) - [sh](https://github.com/arzg/vim-sh) (syntax) - [slim](https://github.com/slim-template/vim-slim) (syntax, indent, ftplugin) @@ -175,8 +175,8 @@ If you need full functionality of any plugin, please use it directly with your p - [swift](https://github.com/keith/swift.vim) (syntax, indent, compiler, ftplugin, ctags) - [sxhkd](https://github.com/baskerville/vim-sxhkdrc) (syntax) - [systemd](https://github.com/wgwoods/vim-systemd-syntax) (syntax, ftplugin) -- [terraform](https://github.com/hashivim/vim-terraform) (syntax, indent, autoload, ftplugin) -- [textile](https://github.com/timcharper/textile.vim) (syntax, ftplugin) +- [terraform](https://github.com/hashivim/vim-terraform) (syntax, indent, doc, autoload, ftplugin) +- [textile](https://github.com/timcharper/textile.vim) (syntax, doc, ftplugin) - [thrift](https://github.com/solarnz/thrift.vim) (syntax) - [tmux](https://github.com/ericpruitt/tmux.vim) (syntax, ftplugin) - [toml](https://github.com/cespare/vim-toml) (syntax, ftplugin) diff --git a/doc/clojure.txt b/doc/clojure.txt new file mode 100644 index 00000000..07fce86b --- /dev/null +++ b/doc/clojure.txt @@ -0,0 +1,185 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'clojure') == -1 + +*clojure.txt* Clojure runtime files + +INTRODUCTION *clojure-introduction* + +Meikel Brandmeyer's excellent Clojure runtime files. Includes syntax, indent, +ftdetect, and ftplugin scripts. + +CLOJURE *ft-clojure-indent* *clojure-indent* + +Clojure indentation differs somewhat from traditional Lisps, due in part to +the use of square and curly brackets, and otherwise by community convention. +These conventions are not universally followed, so the Clojure indent script +offers a few configurable options, listed below. + +If the current vim does not include searchpairpos(), the indent script falls +back to normal 'lisp' indenting, and the following options are ignored. + + *g:clojure_maxlines* + +Set maximum scan distance of searchpairpos(). Larger values trade performance +for correctness when dealing with very long forms. A value of 0 will scan +without limits. +> + " Default + let g:clojure_maxlines = 100 +< + *g:clojure_fuzzy_indent* + *g:clojure_fuzzy_indent_patterns* + *g:clojure_fuzzy_indent_blacklist* + +The 'lispwords' option is a list of comma-separated words that mark special +forms whose subforms must be indented with two spaces. + +For example: +> + (defn bad [] + "Incorrect indentation") + + (defn good [] + "Correct indentation") +< +If you would like to specify 'lispwords' with a |pattern| instead, you can use +the fuzzy indent feature: +> + " Default + let g:clojure_fuzzy_indent = 1 + let g:clojure_fuzzy_indent_patterns = ['^with', '^def', '^let'] + let g:clojure_fuzzy_indent_blacklist = + \ ['-fn$', '\v^with-%(meta|out-str|loading-context)$'] + + " Legacy comma-delimited string version; the list format above is + " recommended. Note that patterns are implicitly anchored with ^ and $ + let g:clojure_fuzzy_indent_patterns = 'with.*,def.*,let.*' +< +|g:clojure_fuzzy_indent_patterns| and |g:clojure_fuzzy_indent_blacklist| are +|Lists| of patterns that will be matched against the unquoted, unqualified +symbol at the head of a list. This means that a pattern like "^foo" will match +all these candidates: "foobar", "my.ns/foobar", and "#'foobar". + +Each candidate word is tested for special treatment in this order: + + 1. Return true if word is literally in 'lispwords' + 2. Return false if word matches a pattern in + |g:clojure_fuzzy_indent_blacklist| + 3. Return true if word matches a pattern in + |g:clojure_fuzzy_indent_patterns| + 4. Return false and indent normally otherwise + + *g:clojure_special_indent_words* + +Some forms in Clojure are indented so that every subform is indented only two +spaces, regardless of 'lispwords'. If you have a custom construct that should +be indented in this idiosyncratic fashion, you can add your symbols to the +default list below. +> + " Default + let g:clojure_special_indent_words = + \ 'deftype,defrecord,reify,proxy,extend-type,extend-protocol,letfn' +< + *g:clojure_align_multiline_strings* + +Align subsequent lines in multiline strings to the column after the opening +quote, instead of the same column. + +For example: +> + (def default + "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut + enim ad minim veniam, quis nostrud exercitation ullamco laboris + nisi ut aliquip ex ea commodo consequat.") + + (def aligned + "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut + enim ad minim veniam, quis nostrud exercitation ullamco laboris + nisi ut aliquip ex ea commodo consequat.") +< +This option is off by default. +> + " Default + let g:clojure_align_multiline_strings = 0 +< + *g:clojure_align_subforms* + +By default, parenthesized compound forms that look like function calls and +whose head subform is on its own line have subsequent subforms indented by +two spaces relative to the opening paren: +> + (foo + bar + baz) +< +Setting this option changes this behavior so that all subforms are aligned to +the same column, emulating the default behavior of clojure-mode.el: +> + (foo + bar + baz) +< +This option is off by default. +> + " Default + let g:clojure_align_subforms = 0 +< + +CLOJURE *ft-clojure-syntax* + +The default syntax groups can be augmented through the +*g:clojure_syntax_keywords* and *b:clojure_syntax_keywords* variables. The +value should be a |Dictionary| of syntax group names to a |List| of custom +identifiers: +> + let g:clojure_syntax_keywords = { + \ 'clojureMacro': ["defproject", "defcustom"], + \ 'clojureFunc': ["string/join", "string/replace"] + \ } +< +Refer to the Clojure syntax script for valid syntax group names. + +If the |buffer-variable| *b:clojure_syntax_without_core_keywords* is set, only +language constants and special forms are matched. + +Setting *g:clojure_fold* enables folding Clojure code via the syntax engine. +Any list, vector, or map that extends over more than one line can be folded +using the standard Vim |fold-commands|. + +Please note that this option does not work with scripts that redefine the +bracket syntax regions, such as rainbow-parentheses plugins. + +This option is off by default. +> + " Default + let g:clojure_fold = 0 +< + +ABOUT *clojure-about* + +This document and associated runtime files are maintained at: +https://github.com/guns/vim-clojure-static + +Distributed under the Vim license. See |license|. + +syntax/clojure.vim + + Copyright 2007-2008 (c) Toralf Wittner <toralf.wittner@gmail.com> + Copyright 2008-2012 (c) Meikel Brandmeyer <mb@kotka.de> + +ftdetect/clojure.vim, +ftplugin/clojure.vim, +indent/clojure.vim + + Copyright 2008-2012 (c) Meikel Brandmeyer <mb@kotka.de> + +Modified and relicensed under the Vim License for distribution with Vim: + + Copyright 2013-2014 (c) Sung Pae <self@sungpae.com> + +Last Change: %%RELEASE_DATE%% + + vim:tw=78:noet:sw=8:sts=8:ts=8:ft=help:norl: + +endif diff --git a/doc/coffee-script.txt b/doc/coffee-script.txt new file mode 100644 index 00000000..692d6241 --- /dev/null +++ b/doc/coffee-script.txt @@ -0,0 +1,8 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'coffee-script') == -1 + +Please see the project readme for up-to-date docs: +https://github.com/kchmck/vim-coffee-script + + vim:tw=78:ts=8:ft=help:norl: + +endif diff --git a/doc/cryptol.txt b/doc/cryptol.txt new file mode 100644 index 00000000..0d90528c --- /dev/null +++ b/doc/cryptol.txt @@ -0,0 +1,108 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cryptol') == -1 + +*cryptol.txt* functionality for the Cryptol programming language + +Copyright © 2013 Edward O'Callaghan. All Rights Reserved. + + .oooooo. . oooo + d8P' `Y8b .o8 `888 +888 oooo d8b oooo ooo oo.ooooo. .o888oo .ooooo. 888 +888 `888""8P `88. .8' 888' `88b 888 d88' `88b 888 +888 888 `88..8' 888 888 888 888 888 888 +`88b ooo 888 `888' 888 888 888 . 888 888 888 + `Y8bood8P' d888b .8' 888bod8P' "888" `Y8bod8P' o888o + .o..P' 888 + `Y8P' o888o + + Functionality for the Cryptol programming language. + Includes syntax highlighting, code folding, and more! + +============================================================================== +CONTENTS *CryptolContents* + + 1. Usage ................ |CryptolUsage| + 2. Mappings ............. |CryptolMappings| + 3. License .............. |CryptolLicense| + 4. Bugs ................. |CryptolBugs| + 5. Contributing ......... |CryptolContributing| + 6. Changelog ............ |CryptolChangelog| + 7. Credits .............. |CryptolCredits| + +============================================================================== +Section 1: Usage *CryptolUsage* + +This plugin will automatically provide syntax highlighting for Cryptol files +(files ending in .cry). + +Cryptol is a purely functional domain specific language, developed over the +past decade by Galois for the NSA, for the design, implementation and +verification of cryptographic algorithms. + +============================================================================== +Section 2: Mappings *CryptolMappings* + +Code folding is done in the typical way, for example: + * za - When on a closed fold - open it. + * zM - Close all foldings to level 0. + * zR - Reduce folding + +For more information see, for example, :help za + +============================================================================== +Section 3: License *CryptolLicense* + +Copyright © 2013 Edward O'Callaghan. All Rights Reserved. + +HOWEVER: +Be it known, The syntax file was written by +Copyright © 2005 Fergus Henderson. All Rights Reserved. + + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +============================================================================== +Section 4: Bugs *CryptolBugs* + + * https://github.com/victoredwardocallaghan/cryptol.vim/issues + +============================================================================== +Section 5: TODOs *CryptolTODOs + + * Add compiler support + - . + +============================================================================== +Section 6: Contributing *CryptolContributing* + + * Edward O'Callaghan + +============================================================================== +Section 7: Changelog *CryptolChangelog* + + * Initial 25 Apr 2013. + +============================================================================== +Section 8: Credits *CryptolCredits* + + * Edward O'Callaghan + * Fergus Henderson - wrote the orginal syntax file. + +vim:ts=4:ft=help:tw=78:et + +endif diff --git a/doc/dart.txt b/doc/dart.txt new file mode 100644 index 00000000..2a3bc78e --- /dev/null +++ b/doc/dart.txt @@ -0,0 +1,90 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'dart') == -1 + +*dart-vim-plugin* Dart support for Vim + +INTRODUCTION *dart.vim* + +dart-vim-plugin provides filetype detection, syntax highlighting, and +indentation for Dart code in Vim. + +https://github.com/dart-lang/dart-vim-plugin + +TOOLS *dart-tools* + +An `includeexpr` is set that can read `.packages` files and resolve `package:` +uris to a file. See |gf| for an example use. + +COMMANDS *dart-commands* + +These commands are available in buffers with the dart filetype. + + *:Dart2Js* +Runs dart2js to compile the current file. Takes the same arguments as the +dart2js binary and always passes the path to the current file as the last +argument. +If there are any errors they will be shown in the quickfix window. + + *:DartFmt* +Runs dartfmt and passes the current buffer content through stdin. If the +format is successful replaces the current buffer content with the formatted +result. If the format is unsuccessful errors are shown in the quickfix window. +This command does not use the file content on disk so it is safe to run with +unwritten changes. +Passes arguments through to dartfmt. + + *:DartAnalyzer* +Runs dartanalyzer to analyze the current file. Takes the same arguments as the +dartanalyzer binary and always passes the path to the current file as the last +argument. +If there are any errors they will be shown in the quickfix window. + +CONFIGURATION *dart-configure* + + *g:dart_html_in_string* +Set to `v:true` to highlights HTML syntax inside Strings within Dart files. +Default `v:false` + + *g:dart_corelib_highlight* +Set to `v:false` to disable highlighting of code Dart classes like `Map` or +`List`. +Default `v:true` + *g:dart_style_guide* +Set to any value (set to `2` by convention) to set tab and width behavior to +match the Dart style guide - spaces only with an indent of 2. Also sets +`formatoptions += t` to auto wrap text. + +Configure DartFmt options with `let g:dartfmt_options`, for example, enable +auto syntax fixes with `let g:dartfmt_options = ['--fix']` +(discover formatter options with `dartfmt -h`) + + +SYNTAX HIGHLIGHTING *dart-syntax* + +This plugin uses narrow highlight groups to allow selectively disabling the +syntax highlights. Link any of the following groups to the `Normal` highlight +group to disable them: + +`dartSdkException`: Capitalized exception or error classes defined in the SDK. + +`dartCoreType`: `void`, `var`, `dynamic` + +`dartSdkClass`: Capitalized classes defined in the SDK, along with `bool`, +`int`, `double`, and `num`. + +`dartUserType`: Any capitalized identifier. + +`dartType`: Combines `dartCoreType`, `dartSdkClass`, and `dartUserType`. + +`dartSdkTypedef`: SDK defined `typdef`s. + +`dartFunction`: Any lower cased identifier preceding an open parenthesis. + +For example, to remove the highlighting for type and function names: +> + highlight link dartType Normal + highlight link dartFunction Normal +< + + vim:tw=78:sw=4:ts=8:ft=help:norl: + +endif diff --git a/doc/dhall.txt b/doc/dhall.txt new file mode 100644 index 00000000..8c5f37a5 --- /dev/null +++ b/doc/dhall.txt @@ -0,0 +1,43 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'dhall') == -1 + +*dhall* Dhall syntax highlighting for Vim + ____ +===================================================================== +CONTENTS *DhallContents* + + 1. Config ......................................... ❘DhallConfig❘ + 2. License ....................................... ❘DhallLicense❘ + +====================================================================== +Section 1: Config *DhallConfig* + +---------------------------------------------------------------------- + *'g:dhall_use_ctags'* +Values: 0, 1 +Default: '' + +Generate tags file for vim on write, using universal ctags. > + let g:dhall_use_ctags=1 +< + + *'g:dhall_format'* +Values: 0, 1 +Default: '' + +Format Dhall files on write > + let g:dhall_format=1 +< + *'g:dhall_strip_whitespace'* +Values: 0, 1 +Default: '' + +To enable whitespace stripping > + let g:dhall_strip_whitespace=1 +< + +====================================================================== +Section 2: License *DhallLicense* + +This plugin is licensed under the BDS3 license. + +endif diff --git a/doc/elixir.txt b/doc/elixir.txt new file mode 100644 index 00000000..eb482a30 --- /dev/null +++ b/doc/elixir.txt @@ -0,0 +1,116 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1 + +*elixir.txt* Vim configuration files for Elixir http://elixir-lang.org/ + +Author: Plataformatec +License: Apache License Version 2.0 + +============================================================================== +CONTENTS *elixir-contents* + +INTRODUCTION |elixir-introduction| +INTERFACE |elixir-interface| + FUNCTIONS |elixir-functions| + KEY MAPPINGS |elixir-key-mappings| +OPTIONS |elixir-options| +SETTINGS |elixir-settings| + +============================================================================== +INTRODUCTION *elixir-introduction* + +*elixir* provides Vim configuration files for Elixir http://elixir-lang.org/ + +* Syntax highlighting for Elixir and EEx files +* Filetype detection for `.ex`, `.exs`, `.eex` and `.leex` files +* Automatic indentation +* Integration between Ecto projects and |vim-dadbod| for running SQL queries + on defined Ecto repositories + + +Latest Version: +https://github.com/elixir-editors/vim-elixir + + +============================================================================== +INTERFACE *elixir-interface* + +------------------------------------------------------------------------------ +FUNCTIONS *elixir-functions* + +db#adapter#ecto#canonicalize({url}) *db#adapter#ecto#canonicalize()* + TODO + +db#adapter#ecto#complete_opaque({url}) *db#adapter#ecto#complete_opaque()* + TODO + +elixir#indent#indent({lnum}) *elixir#indent#indent()* + TODO + +elixir#indent#searchpair_back_skip() *elixir#indent#searchpair_back_skip()* + TODO + + *elixir#indent#handle_top_of_file()* +elixir#indent#handle_top_of_file({context}) + TODO + + *elixir#indent#handle_follow_prev_nb()* +elixir#indent#handle_follow_prev_nb({context}) + TODO + + *elixir#indent#handle_following_trailing_binary_operator()* +elixir#indent#handle_following_trailing_binary_operator({context}) + TODO + + *elixir#indent#handle_starts_with_pipe()* +elixir#indent#handle_starts_with_pipe({context}) + TODO + + *elixir#indent#handle_starts_with_end()* +elixir#indent#handle_starts_with_end({context}) + TODO + + *elixir#indent#handle_starts_with_binary_operator()* +elixir#indent#handle_starts_with_binary_operator({context}) + TODO + + *elixir#indent#handle_inside_block()* +elixir#indent#handle_inside_block({context}) + TODO + + *elixir#indent#handle_inside_generic_block()* +elixir#indent#handle_inside_generic_block({context}) + TODO + +elixir#util#get_filename({word}) *elixir#util#get_filename({word})* + TODO + + +------------------------------------------------------------------------------ +KEY MAPPINGS *elixir-key-mappings* + +TODO + + + +============================================================================== +SETTINGS *elixir-settings* + + *g:eelixir_default_subtype* + TODO + + *g:elixir_indent_debug* + TODO + + *g:elixir_indent_max_lookbehind* + TODO + + *g:elixir_use_markdown_for_docs* + TODO + + *g:path* + TODO + +============================================================================== +vim:tw=78:fo=tcq2mM:ts=8:ft=help:norl + +endif diff --git a/doc/ft-csv.txt b/doc/ft-csv.txt new file mode 100644 index 00000000..7e2a00ad --- /dev/null +++ b/doc/ft-csv.txt @@ -0,0 +1,1759 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'csv') == -1 + +*ft-csv.txt* For Vim version 7.4 Last Change: Thu, 15 Jan 2015 + +Author: Christian Brabandt <cb@256bit.org> +Version: 0.31 +Homepage: http://www.vim.org/scripts/script.php?script_id=2830 + +The VIM LICENSE applies to the CSV filetype plugin (see |copyright|). +NO WARRANTY, EXPRESS OR IMPLIED. USE AT-YOUR-OWN-RISK. + *csv-toc* +1. Introduction.................................|csv-intro| +2. Installation.................................|csv-installation| +3. CSV Commands.................................|csv-commands| + 3.1 WhatColumn..............................|WhatColumn_CSV| + 3.2 NrColumns...............................|NrColumns_CSV| + 3.3 SearchInColumn..........................|SearchInColumn_CSV| + 3.4 HiColumn................................|HiColumn_CSV| + 3.5 ArrangeColumn...........................|ArrangeColumn_CSV| + 3.6 UnArrangeColumn.........................|UnArrangeColumn_CSV| + 3.7 DeleteColumn............................|DeleteColumn_CSV| + 3.8 InitCSV.................................|InitCSV| + 3.9 Header..................................|Header_CSV| + 3.10 Sort...................................|Sort_CSV| + 3.11 CopyColumn.............................|Copy_CSV| + 3.12 MoveColumn.............................|MoveCol_CSV| + 3.13 Sum of a column........................|SumCol_CSV| + 3.14 Create new records ....................|NewRecord_CSV| + 3.15 Change the delimiter...................|NewDelimiter_CSV| + 3.16 Check for duplicate records............|Duplicate_CSV| + 3.17 Normal mode commands...................|csv-mapping| + 3.18 Convert CSV file.......................|csv-convert| + 3.19 Dynamic filters........................|csv-filter| + 3.20 Analyze a column.......................|csv-analyze| + 3.21 Vertical Folding.......................|csv-vertfold| + 3.22 Transposing columns....................|csv-transpose| + 3.23 Transforming into a table..............|csv-tabularize| + 3.24 Add new empty columns..................|AddColumn_CSV| + 3.25 Substitute in columns..................|Substitute_CSV| + 3.26 Count values inside a column...........|Count_CSV| + 3.27 Maximum/Minimum values ................|MaxCol_CSV| + 3.28 Average values.........................|AvgCol_CSV| + 3.29 Variance of a Column...................|VarCol_CSV| + 3.30 Standard Deviation of a Column.........|StdDevCol_CSV| + 3.31 Duplicate columns......................|DupColumn_CSV| + 3.32 Column width...........................|ColumnWidth_CSV| +4. CSV Filetype configuration...................|csv-configuration| + 4.1 Delimiter...............................|csv-delimiter| + 4.2 Column..................................|csv-column| + 4.3 HiGroup.................................|csv-higroup| + 4.4 Strict Columns..........................|csv-strict| + 4.5 Concealing..............................|csv-conceal| + 4.6 Newlines................................|csv-newline| + 4.7 Highlight column automatically..........|csv-hicol| + 4.8 Fixed width columns.....................|csv-fixedwidth| + 4.8.1 Manual setup + 4.8.2 Setup using a Wizard + 4.9 CSV Header lines........................|csv-header| + 4.10 Number format..........................|csv-nrformat| + 4.11 Move folded lines......................|csv-move-folds| + 4.12 Using Comments.........................|csv-comments| + 4.13 Size and performance considerations....|csv-size| +5. Functions....................................|CSV-Functions| + 5.1 CSVPat()................................|CSVPat()| + 5.2 CSVField()..............................|CSVField()| + 5.3 CSVCol()................................|CSVCol()| + 5.4 CSVSum()................................|CSVSum()| + 5.5 CSVCount()..............................|CSVCount()| + 5.6 CSVMax()................................|CSVMax()| + 5.7 CSVMin()................................|CSVMin()| + 5.8 CSVAvg()................................|CSVAvg()| + 5.9 CSVWidth()..............................|CSVWidth()| +6. CSV Tips and Tricks..........................|csv-tips| + 6.1 Statusline..............................|csv-stl| + 6.2 Slow CSV plugin.........................|csv-slow| + 6.3 Defining custom aggregate functions.....|csv-aggregate-functions| + 6.4 Autocommand on opening/closing files....|csv-arrange-autocmd| + 6.5 CSV Syntax error........................|csv-syntax-error| + 6.6 Calculating new column values...........|csv-calculate-column| + 6.7 Using the result of an evaluation.......|b:csv_result| +7. CSV Changelog................................|csv-changelog| + +============================================================================== +1. Introduction *csv-intro* + +This plugin is used for handling column separated data with Vim. Usually those +files are called csv files and use the ',' as delimiter, though sometimes they +use e.g. the '|' or ';' as delimiter and there also exists fixedwidth columns. +The aim of this plugin is to ease handling these kinds of files. + +This is a filetype plugin for CSV files. It was heavily influenced by +the Vim Wiki Tip667 (http://vim.wikia.com/wiki/VimTip667), though it +works differently. For instructions on installing this file, type +:help add-local-help |add-local-help| inside Vim. For a screenshot, of +how the plugin can be used, see http://www.256bit.org/~chrisbra/csv.gif + +It will make use of the |+vartabs| feature for tab delimited files to arrange +them automatically. + +============================================================================== +2. Installation *csv-installation* + +In order to have vim automatically detect csv files, you need to have +|ftplugins| enabled (e.g. by having this line in your |.vimrc| file: > + + :filetype plugin on + +< +The plugin already sets up some logic to detect CSV files. By default, +the plugin recognizes *.csv and *.dat files as CSV filetype. In order that the +CSV filetype plugin is loaded correctly, vim needs to be enabled to load +|filetype-plugins|. This can be ensured by putting a line like this in your +|.vimrc|: > + :filetype plugin on +< +(see also |filetype-plugin-on|). + +In case this did not work, you need to setup vim like this: + +To have Vim automatically detect csv files, you need to do the following. + + 1) Create your user runtime directory if you do not have one yet. This + directory needs to be in your 'runtime' path. In Unix this would + typically the ~/.vim directory, while in Windows this is usually your + ~/vimfiles directory. Use :echo expand("~") to find out, what Vim thinks + your user directory is. + To create this directory, you can do: > + + :!mkdir ~/.vim +< + for Unix and > + + :!mkdir ~/vimfiles +< + for Windows. + + 2) In that directory you create a file that will detect csv files. > + + if exists("did_load_csvfiletype") + finish + endif + let did_load_csvfiletype=1 + + augroup filetypedetect + au! BufRead,BufNewFile *.csv,*.dat setfiletype csv + augroup END +< + You save this file as "filetype.vim" in your user runtime diretory: > + + :w ~/.vim/filetype.vim +< + 3) To be able to use your new filetype.vim detection, you need to restart + Vim. Vim will then load the csv filetype plugin for all files whose + names end with .csv. + +============================================================================== +3. Commands *csv-commands* + +The CSV ftplugin provides several Commands. All commands are also provided +with the prefix :CSV (e.g. |:CSVNrColumns|) + + *:CSVWhatColumn* +3.1 WhatColumn *WhatColumn_CSV* +-------------- + +If you would like to know, on which column the cursor is, use > + :WhatColumn +< +or > + :CSVWhatColumn +< +Use the bang attribute, if you have a heading in the first line and you want +to know the name of the column in which the cursor is: > + :WhatColumn! +< + *:CSVNrColumns* +3.2 NrColumns *NrColumns_CSV* +-------------- + +`:NrColumns` and `:CSVNrColumns` outputs the maximum number of columns +available. It does this by testing the first 10 lines for the number of +columns. This usually should be enough. If you use the '!' attribute, it +outputs the number of columns in the current line. + + *:CSVSearchInColumn* +3.3 SearchInColumn *SearchInColumn_CSV* +------------------ + +Use `:SearchInColumn` or `:CSVSearchInColumn` to search for a pattern within a +specific column. The usage is: > + + :SearchInColumn [<nr>] /{pat}/ +< + +So if you would like to search in Column 1 for the word foobar, you enter > + + :SearchInColumn 1 /foobar/ + +Instead of / as delimiter, you can use any other delimiter you like. If you +don't enter a column, the current column will be used. + + *:CSVHiColumn* +3.4 HiColumn *HiColumn_CSV* +------------ + +`:HiColumn` or `:CSVHiColumn` <nr> can be used to highlight Column <nr>. +Currently the plugin uses the WildMenu Highlight Group. If you would like to +change this, you need to define the variable |g:csv_hiGroup|. + +If you do not specify a <nr>, HiColumn will highlight the column on which the +cursor is. Use > + + :HiColumn! + +to remove any highlighting. + +If you want to automatically highlight a column, see |csv-hicol| + + *:ArrangeColumn* *:CSVArrangeColumn* +3.5 ArrangeColumn *ArrangeColumn_CSV* +----------------- + +If you would like all columns to be visually arranged, you can use the +`:ArrangeColumn` or `:CSVArrangeColumn` command: > + + :[range]ArrangeColumn[!] [<Row>] + +Beware, that this will change your file and depending on the size of +your file may slow down Vim significantly. This is highly experimental. +:ArrangeCommand will try to vertically align all columns by their maximum +column size. While the command is run, a progressbar in the statusline 'stl' +will be shown. + +Use the bang attribute to force recalculating the column width. This is +slower, but especially if you have modified the file, this will correctly +calculate the width of each column so that they can be correctly aligned. If +no column width has been calculated before, the width will be calculated, even +if the '!' has not been given. + +If <Row> is given, will use the Row, to calculate the width, else will +calculate the maximum of at least the first 10,000 rows to calculate the +width. The limit of 10,000 is set to speed up the processing and can be +overriden by setting the "b:csv_arrange_use_all_rows" variable (see below). + +If [range] is not given, it defaults to the current line. + + *csv_arrange_align* +By default, the columns will be right-aligned. If you want a different +alignment you need to specify this through the b:csv_arrange_align variable. +This is a string of flags ('r': right align, 'l': left align, 'c': center +alignment, '.': decimal alignment) where each flag defines the alignment for +a particular column (starting from left). Missing columns will be right aligned. +You can use '*' to repeat the previous value until the end. +So this: > + + :let b:csv_arrange_align = 'lc.' +< +Will left-align the first column, center align the second column, decimal +align the third column and all following columns right align. (Note: decimal +aligning might slow down Vim and additionally, if the value is no decimal +number it will be right aligned). +And this: > + + :let b:csv_arrange_align = 'l*' + +Will left align all columns. + +If you change the alignment parameter, you need to use the "!" attribute, the +next time you run the |:ArrangeCol| command, otherwise for performance +reasons, it won't be considered. + +Note, arranging the columns can be very slow on large files or many columns (see +|csv-slow| on how to increase performance for this command). For large files, +calculating the column width can take long and take a considerable amount of +memory. Therefore, the csv plugin will at most check 10.000 lines for the +width. Set the variable b:csv_arrange_use_all_rows to 1 to use all records: > + + :let b:csv_arrange_use_all_rows = 1 +< +(this could however in the worst case lead to a crash). + +To disable the statusline progressbar set the variable g:csv_no_progress: > + + :let g:csv_no_progress = 1 +< +This will disable the progressbar and slightly improve performance (since no +additional redraws are needed). + +Note: this command does not work for fixed width columns |csv-fixedwidth| + +See also |csv-arrange-autocmd| on how to have vim automatically arrange a CSV +file upon entering it. + +By default, all lines in the file are considered to calculate the column width. +If you want to ignore some lines at the beginning of the file, set the global +variable g:csv_skipfirst to the number of lines to be ignored, e.g. the first +line of the file can be ignored with > + + :let g:csv_skipfirst = 1 +< +Then use the '!' to force recalculation of column width when applying +:ArrangeColumn + + *:CSVUnArrangeColumn* +3.6 UnArrangeColumn *UnArrangeColumn_CSV* +----------------- + +If you would like to undo a previous :ArrangeColumn command, you can use this +`:UnArrangeColumn` or `:CSVUnArrangeColumn` command: > + + :[range]UnArrangeColumn + +Beware, that is no exact undo of the :ArrangeColumn command, since it strips +away all leading blanks for each column. So if previously a column contained +only some blanks, this command will strip all blanks. + +If [range] is given, it defaults to the current line. + + *:CSVDeleteColumn* +3.7 DeleteColumn *DeleteColumn_CSV* +---------------- + +The command `:DeleteColumn` or `:CSVDeleteColumn` can be used to delete a specific column. > + + :DeleteColumn 2 + +will delete column 2. If you use `:DeleteColumn 2-3` columns 2 and 3 will be +deleted. + +If you don't specify a column number, it will delete the column on which the +cursor is. Alternatively, you can also specify a search string. The plugin +will then delete all columns that match the pattern: > + + :DeleteColumn /foobar +< +will delete all columns where the pattern "foobar" matches. + + *:CSVInit* + *:InitCSV* +3.8 CSVInit +----------- +Reinitialize the Plugin. Use this, if you have changed the configuration +of the plugin (see |csv-configuration| ). +If you use the bang (!) attribute, it will keep the b:delimiter configuration +variable. + + *:CSVHeader* +3.9 Header lines *Header_CSV* +---------------- +The `:Header` or `:CSVHeader` command splits the csv-buffer and adds a window, +that holds a small fraction of the csv file. This is useful, if the first line +contains some kind of a heading and you want always to display it. This works +similar to fixing a certain line at the top. As optional argument, you can +give the number of columns from the top, that shall be displayed. By default, +1 is used (You can define your own default by setting the b:csv_headerline +variable, see |csv-header|). Use the '!' to close this window. So this > + + :Header 3 + +opens at the top a split window, that holds the first 3 lines, is fixed +and horizontally 'scrollbind'ed to the csv window and highlighted using the +CSVHeaderLine highlighting. +To close the header window, use > + + :Header! + +Note, this won't work with linebreaks in the column. + +Note also, that if you already have a horizontal header window (|VHeader_CSV|), +this command will close the horizontal Header window. This is because of a +limitation of Vim itself, which doesn't allow to sync the scrolling between +two windows horizontally and at the same time have another window only sync +its scrolling vertically. + +Note: this command does not work for fixed width columns |csv-fixedwidth| + + *:CSVVHeader* *VHeader_CSV* +If you want a vertical header line, use `:VHeader` or `:CSVVHeader`. This works +similar to the |Header_CSV| command, except that it will open a vertical split +window with the first column always visible. It will always open the first +column in the new split window. Use the '!' to close the window. If you +specify a count, that many columns will be visible (default: the first). Add +the bang to the count, if you only want the specific column to be visible. +> + :VHeader 2 +< +This will open a vertical split window containing the first 2 columns, while +> + :VHeader 2! +< +Opens a new vertical split window containing only the 2 second column. + +Note, this won't work with linebreaks in the column. +Note also: this command does not work for fixed width columns |csv-fixedwidth| + + + *:CSVVHeaderToggle* *:CSVHeaderToggle* + *VHeaderToggle_CSV* *HeaderToggle_CSV* +Use the `:HeaderToggle` and `:VHeaderToggle` command to toggle displaying the +horizontal or vertical header line. Alternatively, use `:CSVHeaderToggle` or +`:CSVVHeaderToggle` + + + *:CSVSort* +3.10 Sort *Sort_CSV* +--------- +The command `:Sort` or `:CSVSort` can be used to sort the csv file on a +certain column. If no range is given, is sorts the whole file. Specify the +column number to sort on as argument. Use the '!' attribute to reverse the +sort order. For example, the following command sorts line 1 til 10 on the 3 +column > + + :1,10Sort 3 + +While this command > + + :1,10Sort! 3 + +reverses the order based on column 3. + +The column number can be optionally followed by any of the flags [i], [n], +[x] and [o] for [i]gnoring case, sorting by [n]umeric, he[x]adecimal +or [o]ctal value. + +When no column number is given, it will sort by the column, on which the +cursor is currently. + + *:CSVColumn* +3.11 Copy Column *Copy_CSV* +---------------- +If you need to copy a specific column, you can use the command `:CSVColumn` or +`:Column` > + + :[N]Column [a] + +Copy column N into register a. This will copy all the values, that are +not folded-away (|csv-filter|) and skip comments. + +If you don't specify N, the column of the current cursor position is used. +If no register is given, the default register +|quotequote| is used. + + *:CSVMoveCol* +3.12 Move A Column *MoveCol_CSV* +------------------ +You can move one column to the right of another column by using the +`:CSVMoveColumn` or `:MoveColumn` command > + + :[range]MoveColumn [source] [dest] + +This moves the column number source to the right of column nr destination. If +both arguments are not given, move the column on which the cursor is to the +right of the current last column. If [range] is not given, MoveColumn moves +the entire column, otherwise, it moves the columns only for the lines within +the range, e.g. given that your first line is a header line, which you don't +want to change > + + :2,$MoveColumn 1 $ + +this would move column 1 behind the last column, while keeping the header line +as is. + + + *:CSVSumCol* +3.13 Sum of a Column *SumCol_CSV* +-------------------- +You can let Vim output the sum of a column using the `:CSVSumCol` or `:SumCol` +command > + + :[range]SumCol [nr] [/format/] + +This outputs the result of the column <nr> within the range given. If no range +is given, this will calculate the sum of the whole column. If <nr> is not +given, this calculates the sum for the column the cursor is on. Note, that the +delimiter will be stripped away from each value and also empty values won't be +considered. + +By default, Vim uses the a numerical format that uses the '.' as decimal +separator while there is no thousands separator. If youre file contains +the numbers in a different format, you can use the /format/ option to specify +a different thousands separator or a different decimal separator. The format +needs to be specified like this: + /x:y/ +where 'x' defines the thousands separator and y defines the decimal +separator and each one is optional. This means, that > + + :SumCol 1 /:,/ + +uses the default thousands separator and ',' as the decimal separator and > + + :SumCol 2 / :./ + +uses the Space as thousands separator and the '.' as decimal separator. + +Note, if you Vim is compiled without floating point number format (|+float|), +Vim will only aggregate the integer part and therefore won't use the 'y' +argument in the /format/ specifier. + +See also |csv-aggregate-functions| + + *:CSVNewRecord* +3.14 Create new Records *NewRecord_CSV* +----------------------- +If you want to create one or several records, you can use the `:NewRecord` or +`:CSVNewRecord` command: > + + :[range]NewRecord [count] + +This will create in each line given by range [count] number of new empty +records. If [range] is not specified, creates a new line below the line the +cursor is on and if count is not given, it defaults to 1. + + + *:CSVNewDelimiter* +3.15 Change the delimiter *NewDelimiter_CSV* +------------------------- +If you want to change the field delimiter of your file you can use the +`:CSVNewDelimiter` or `:NewDelimiter` command: > + + :NewDelimiter char + +This changes the field delimiter of your file to the new delimiter "char". +Note: Will remove trailing delimiters. + + *:CSVDuplicate* +3.16 Check for duplicate records *Duplicate_CSV* +-------------------------------- +If you want to check the file for duplicate records, use the command +`:Duplicate` or `:CSVDuplicate`: > + + :Duplicate columnlist +< + +Columnlist needs to be a numeric comma-separated list of all columns that you +want to check. You can also use a range like '2-5' which means the plugin +should check columns 2,3,4 and 5. + +If the plugin finds a duplicate records, it outputs its line number (but it +only does that at most 10 times). + +3.17 Normal mode commands *csv-mapping* +------------------------- +The csv filetype plugin redefines the following keys (in normal Mode) as: + +<C-Right> or L or W Move [count] field forwards + +<C-Left> or E or H Move [count] field backwards (but see |csv-mapping-H| + for the movement of H). + +<Up> or K Move [count] lines upwards within the same column + +<Down> or J Move [count] lines downwards within the same column + +The upwards and downwards motions try to keep the cursor in the relative +position within the cell when changing lines. That is not a guaranteed to work +and will fail if the upper/lower cell is of a different width than the +starting cell. + +<Enter> Dynamically fold all lines away, that don't match + the value in the current column. See |csv-filter| + + In |Replace-mode| and |Virtual-Replace-mode| does not + create a new row, but instead moves the cursor to the + beginning of the same column, one more line below. + +<Space> Dynamically fold all lines away, that match + the value in the current column. See |csv-filter| + +<BS> Remove last item from the dynamic filter. + See |csv-filter| + + *csv-mapping-H* +Note how the mapping of 'H' differs from 'E' + +H step fields backwards but also stops at where the content of the columns +begins. + +If you look into this example (with the cursor being '|') + + aaa, bbbb,|ccc ` + +Pressing 'H' moves to + + aaa, |bbbb,ccc ` + +Pressing 'H' again moves to + + aaa,| bbbb,ccc ` + +Pressing 'H' again moves to + + |aaa, bbbb,ccc ` + +While with 'E', the cursor moves to: + + aaa,| bbbb,ccc ` + +and pressing 'E' again, it would move directly to + + |aaa, bbbb,ccc ` + + *csv-textobjects* +Also, the csv plugin defines these text-object: + +if Inner Field (contains everything up to the delimiter) +af Outer Field (contains everything up to and including + the delimiter) +iL Inner Line (visually linewise select all lines, that + has the same value at the cursor's column) + +Note, that the <BS>, <CR>, K and J overlap Vim's default mapping for |<CR>|, +|<BS>|, |J| and |K| respectively. Therefore, this functionality has been +mapped to a sane default of <Localleader>J and <LocalLeader>K. If you haven't +changed the |<Leader>| or |<LocalLeader>| variables, those the <Localleader> +is equival to a single backslash '\', e.g. \K would run the lookup function on +the word under the cursor and \J would join this line with the previous line. + +If you want to prevent the mapping of keys, simply set the global variable +g:csv_nomap_<key> to 1, (remove the special characters `<>` and replace `-` by +`_`), e.g. to prevent mapping of <CR> and <C-Left> in csv files, put > + + let g:csv_nomap_cr = 1 + let g:csv_nomap_c_left = 1 +< +into your |.vimrc|. Note, the keyname must be lower case. + +Also the csv plugins follows the general consensus, that when the variable +g:no_plugin_maps or g:no_csv_maps is set, no key will be mapped. + + + *:CSVConvertData* *ConvertData_CSV* +3.18 Converting a CSV File *csv-convert* +-------------------------- +You can convert your CSV file to a different format with the `:ConvertData` +or `:CSVConvertData` command > + + ConvertData + +Use the the ! attribute, to convert your data without the delimiter. + +This command will interactively ask you for the definition of 3 variables. +After which it will convert your csv file into a new format, defined by those +3 variables and open the newly created file in a new window. Those 3 variables +define how the text converted. + +First, You need to define what has to be done, before converting your column +data. That is done with the "pre convert" variable. The content of this +variable will be put in front of the new document. + +Second, you define, what has to be put after the converted content of your +column data. This happens with the "post convert" variable. Basically the +contents of this variable will be put after processing the columns. + +Last, the columns need to be converted into your format. For this you can +specify a printf() format like string, that defines how your data will be +converted. You can use '%s' to specify placeholders, which will later be +replaced by the content of the actual column. + +For example, suppose you want to convert your data into HTML, then you first +call the > + + :ConvertData + +At this point, Vim will ask you for input. First, you need to specify, what +needs to be done before processing the data: + + Pre convert text: <html><body><table> ` + +This would specify to put the HTML Header before the actual data can be +processed. If the variable g:csv_pre_convert is already defined, Vim will +already show you its' content as default value. Simply pressing Enter will use +this data. After that, Vim asks, what the end of the converted file needs to +look like: + + Post convert text: </table></body></html> ` + +So here you are defining how to finish up the HTML file. If the variable +g:csv_post_convert is already defined, Vim will already show you its' content +as default value which you can confirm by pressing Enter. Last, you define, +how your columns need to be converted. Again, Vim asks you for how to do that: + + Converted text, use %s for column input: ` + <tr><td>%s</td><td>%s</td><td>%s</td></tr> + +This time, you can use '%s' expandos. They tell Vim, that they need to be +replaced by the actual content of your file. It does by going from the first +column in your file and replacing it with the corresponding %s in that order. +If there are less '%s' expandos than columns in your file, Vim will skip the +columns, that are not used. Again If the variable g:csv_convert is already +defined, Vim will already show you its' content as default value which you can +confirm by pressing Enter. + +After you hit Enter, Vim will convert your data and put it into a new window. +It may look like this: + + <html><body><table> ` + <tr><td>1,</td><td>2,</td><td>3,</td></tr> ` + <tr><td>2,</td><td>2,</td><td>4,</td></tr> ` + </table></body></html> ` + +Note, this is only a proof of concept. A better version of converting your +data to HTML is bundled with Vim (|:TOhtml|). + +But may be you want your data converted into SQL-insert statements. That could +be done like this: > + + ConvertData! +< + Pre convert text: ` + +(Leave this empty. It won't be used). + + Post convert text: Commit; ` + +After inserting the data, commit it into the database. + + Converted text, use %s for column input: ` + Insert into table foobar values ('%s', '%s', %s); ` + +Note, that the last argument is not included within single quotation marks, +since in this case the data is assumed to be integer and won't need to be +quoted for the database. + +After hitting Enter, a new Window will be opened, which might look like this: + + Insert into table foobar values('Foobar', '2', 2011); ` + Insert into table foobar values('Bar', '1', 2011); ` + Commit; ` + +Since the command was used with the bang attribute (!), the converted data +doesn't include the column delimiters. + +Now you can copy it into your database, or further manipulate it. + +3.19 Dynamic filters *csv-filter* +-------------------- +If you are on a value and only want to see lines that have the same value in +this column, you can dynamically filter the file and fold away all lines not +matching the value in the current column. To do so, simply press <CR> (Enter). +Now Vim will fold away all lines, that don't have the same value in this +particular row. Note, that leading blanks and the delimiter is removed and the +value is used literally when comparing with other values. If you press <Space> +on the value, all fields having the same value will be folded away. +Pressing <BS> will remove the last item from the dynamic filter. To remove all +filters, keep pressing <BS> until no more filters are present. + +The way this is done is, that the value from the column is extracted and a +regular expression for that field is generated from it. In the end this +regular expression is used for folding the file. + +A subsequent <CR> or <Space> on another value, will add this value to the +current applied filter (this is like using the logical AND between the +currently active filter and the new value). To remove the last item from the +filter, press <BS> (backspace). If all items from the filter are removed, +folding will be disabled. + +If some command messes up the folding, you can use |zX| to have the folding +being reinitialized. + +By default, the first line is assumed to be the header and won't be folded +away. See also |csv-header|. + +If you have set the g:csv_move_folds variable and the file is modifiable, all +folded lines will be moved to the end of the file, so you can view all +non-folded lines as one consecutive area (see also |csv-move-folds|) + + *:CSVFilter* *:Filter* *Filter_CSV* +To see the active filters, you can use the `:Filter` or `:CSVFilter` command. +This will show you a small summary, of what filters are active and looks like +this: + +Nr Match Col Name Value ~ +===================================================== ` +01 - 07 Price 23.10 ` +02 + 08 Qty 10 ` + +This means, there are two filters active. The current active filter is on +column 7 (column name is Price) and all values that match 23.10 will be folded +away AND all values that don't match a value of 10 in the QTY column will also +be folded away. +When removing one item from the filter by pressing <BS>, it will always remove +the last item (highest number in NR column) from the active filter values. + +Note, that depending on your csv file and the number of filters you used, +applying the filter might actually slow down vim, because a complex regular +expression is generated that is applied by the fold expression. Look into the +@/ (|quote_/|) register to see its value. + +Use |zX| to apply the current value of your search register as filter. Use > + + :Filters! + +to reapply all values from the current active filter and fold non-matching +items away. + + *:CSVAnalyze* *Analyze_CSV* +3.20 Analyze a Column *csv-analyze* +--------------------- +If you'd like to know, how the values are distributed among a certain column, +you can use the `:CSVAnalyze` or `:Analyze` command. So > + + :Analyze 3 + +outputs the the distribution of the top 5 values in column 3. This looks like +this: + +Nr Count % Value ~ +============================= ` +01 20 50% 10 ` +02 10 25% 2 ` +03 10 25% 5 ` + +This tells you, that the the value '10' in column 3 occurs 50% of the time +(exactly 20 times) and the other 2 values '2' and '5' occur only 10 times, so +25% of the time. + +In addition, a second argument may be used to specify the number of top values. +So + + :Analyze 3 10 + +outputs the the distribution of the top 10 values in column 3, respectively. + + *:CSVVertFold* *VertFold_CSV* +3.21 Vertical Folding *csv-vertfold* +--------------------- +Sometimes, you want to hide away certain columns to better view only certain +columns without having to horizontally scroll. You can use the `:CSVVertFold` +or `:VertFold` command to hide certain columns: > + + :VertFold [<nr>] +< +This will hide all columns from the first until the number entered. It +currently can't hide single columns, because of the way, syntax highlighting +is used. This command uses the conceal-feature |:syn-conceal| to hide away +those columns. If no nr is given, hides all columns from the beginning till +the current column. + +Use > + :VertFold! + +to display all hidden columns again. + + *:CSVTranspose* *Transpose_CSV* +3.22 Transposing a column *csv-transpose* +------------------------- +Transposing means to exchange rows and columns. You can transpose the csv +file, using the `:CSVTranspose` or `:Transpose` : > + + :[range]Transpose +< +command. If [range] is not given, it will transpose the complete file, +otherwise it will only transpose the lines in the range given. Note, comments +will be deleted and transposing does not work with fixed-width columns. + + *:CSVTabularize* +3.23 Transforming into a table *:CSVTable* *csv-tabularize* +------------------------------ +You can also transform your csv data into a visual table, using the +`:CSVTabularize` or `:CSVTable`: > + + :CSVTabularize +< +command. This will make a frame around your csv data and substitute all +delimiters by '|', so that it will look like a table. + +e.g. consider this data: > +> +First,Second,Third ~ +10,5,2 ` +5,2,10 ` +2,10,5 ` +10,5,2 ` + +This will be transformed into: > + + |---------------------| + | First| Second| Third| + |------|-------|------| + | 10| 5| 2| + | 5| 2| 10| + | 2| 10| 5| + | 10| 5| 2| + |---------------------| + +If your Vim uses an unicode 'encoding', the plugin makes a nice table using +special unicode drawing glyphs (but it might be possible, that those chars are +not being displayed correctly, if either your terminal or the gui font doesn't +have characters for those codepoints). If you use the bang form, each row will +be separated by a line. +You can also visual select a range of lines and use :Tabularize to have only +that range converted into a nice ascii table. Else it try to use the current +paragraph and try to transform it. + +If you use the '!' bang argument, between each row, a line will be drawn. + +In csv files, you can also use the :CSVTabularize command, in different +filetypes you can use the :CSVTable command (and is available as plugin so it +will be available for non-CSV filetypes). + +Set the variable g:csv_table_leftalign=1 if you want the columns to be +leftaligned. + +Note: Each row must contain exactly as many fields as columns. + +This command is available as default plugin. To disable this feature, set the + variable g:csv_disable_table_command to 1: > + + :let g:csv_disable_table_command = 1 +< + *:CSVAddColumn* +3.24 Add new empty columns *AddColumn_CSV* +-------------------------- +If you want to add new empty columns to your file you can use the +`:CSVAddColumn` or `:AddColumn` command: > + + :[range]AddColumn [column] [count] + +By default, this works for the whole file, but you can give a different range +to which the AddColumn command applies. If no arguments are given, the new +empty column will be added after the column on which the cursor is. You can +however add as first argument the column number after which the new column +needs to be added. + +Additionally, you can also add a count number to add several columns at once +after the specified column number. Use 0 for the column number, if you want to +add several columns after the current column. + + *:CSVSubstitute* +3.25 Substitute in columns *Substitute_CSV* +-------------------------- +If you want to substitute only in specific columns, you can use the +`:CSVSubstitute` or `:Substitute` command: > + + :[range]Substitute [column/]pattern/string[/flags] + +This means in the range and within the given columns replace pattern by +string. This works basically like the |:s| command, except that you MUST use +forward slashes / to delimit the command. The optional part `[column/]` can +take either the form of an address or if you leave it out, substitution will +only happen in the current column. Additionally, you can use the `1,5/` form +to substitute within the columns 1 till 5 or you can even use `1,$` which +means to substitute in each column (so in fact this simplifies to a simple +`:s` command whithin the given range. For the use of `[/flags]` see |:s_flags| +Here are some examples: > + + :%Substitute 1,4/foobar/baz/gce + +Substitutes in the whole file in columns 1 till 4 the pattern foobar by baz +for every match ('g' flag) and asks for confirmation ('c' flag). + + :%S 3,$/(\d\+)/\1 EUR/g + +Substitutes in each column starting from the third each number and appends the +EURO suffix to it. + +3.26 Count Values inside a Column *Count_CSV* +--------------------------------- +You can let Vim output the number of values inside a column using the `:CSVCountCol` +command > + + :[range]CountCol [nr] [distinct] + +This outputs the number of [distinct] values visible in the column [nr] +If [distinct] is not given, count's all values. Note, header rows and folded +rows won't be counted. + +The result is also available in the buffer-local variable `b:csv_result`. + +See also |csv-aggregate-functions| + + *MinCol_CSV* +3.27 Maximum/Minimum value of a Column *MaxCol_CSV* +--------------------------------------- +You can let Vim output the 10 maximum/minimum values of a column using the +`:CSVMaxCol` command > + + :[range]MaxCol [nr][distinct] [/format/] + :[range]MinCol [nr][distinct] [/format/] + +This outputs the result of the column <nr> within the range given. If no range +is given, this will calculate the max value of the whole column. If <nr> is not +given, this calculates the sum for the column the cursor is on. Note, that the +delimiter will be stripped away from each value and also empty values won't be +considered. + +By default, Vim uses the a numerical format that uses the '.' as decimal +separator while there is no thousands separator. If youre file contains +the numbers in a different format, you can use the /format/ option to specify +a different thousands separator or a different decimal separator. The format +needs to be specified like this: + /x:y/ +where 'x' defines the thousands separator and y defines the decimal +separator and each one is optional. This means, that > + + :MaxCol 1 /:,/ + +uses the default thousands separator and ',' as the decimal separator and > + + :MaxCol 2 / :./ + +uses the Space as thousands separator and the '.' as decimal separator. + +If [distinct] is given, only returns the number of distinct values. + +Note, if you Vim is compiled without floating point number format (|+float|), +Vim will only aggregate the integer part and therefore won't use the 'y' +argument in the /format/ specifier. + +The result is also available in the buffer-local variable `b:csv_result`. + +3.28 Average value of a Column *AvgCol_CSV* +------------------------------ +You can let Vim output the value of a column using the `:CSVAvgCol` command > + + :[range]AvgCol [nr] [/format/] + +This outputs the result of the column <nr> within the range given. If no range +is given, this will calculate the average value of the whole column. If <nr> is not +given, this calculates the sum for the column the cursor is on. Note, that the +delimiter will be stripped away from each value and also empty values won't be +considered. + +For the [/format/] part, see |MaxCol_CSV|. + +The result is also available in the buffer-local variable `b:csv_result`. + +See also |csv-aggregate-functions| + +3.29 Variance of a Column *VarCol_CSV* +_________________________ + + :[range]PopVarCol [nr] [/format/] + + :[range]SmplVarCol [nr] [/format/] + +This outputs the result of the column `<nr>` within the range given. If no range +is given, this will calculate the statistical variance of the whole column. If <nr> is not +given, this calculates the variance for the column the cursor is on. Note, that the delimiter +will be stripped away from each value and also empty values won't be considered. + +The result is also available in the buffer-local variable `b:csv_result`. + +3.30 Standard Deviation of a Column *StdDevCol_CSV* +___________________________________ + + :[range]PopStdCol [nr] [/format/] + + :[range]SmplStdCol [nr] [/format/] + +This outputs the result of the column `<nr>` within the range given. If no range +is given, this will calculate the standard deviation of the whole column. If <nr> is not +given, this calculates the standard deviation for the column the cursor is on. Note, that +the delimiter will be stripped away from each value and also empty values won't be considered. + +The result is also available in the buffer-local variable `b:csv_result`. + + *:CSVDupColumn* +3.31 Duplicate columns *DupColumn_CSV* +---------------------- +If you want to add duplicate an existing column you can use the +`:CSVDupColumn` or `:DupColumn` command: > + + :[range]DupColumn [column] [count] + +By default, this works for the whole file, but you can give a different range +to which the command applies. By default it will duplicate the column on which +the cursor is, but you can add as first argument which column will be duplicated. + +Additionally, you can also provide a count to copy several columns at once. + + *ColumnWidth_CSV* +3.32 Column Width *:CSVColumnWidth* +----------------- +If you want to know the width of each column, you can use the `:CSVColumnWidth` command: > + + :CSVColumnWidth + +This will output the width for each column at the bottom. See also +|CSVWidth()| function + +3.33 Sum of Numbers in a Row *SumRow_CSV* +---------------------------- +You can let Vim output the sum of a field in a row using the `:CSVASumRow` command > + + :[range]SumRow [/format/] + +This outputs the sum of the row [range]. If no range is given, this will +calculate the sum for the current row. Note, that the delimiter will be +stripped away from each value and also empty values won't be considered. + +For the [/format/] part, see |MaxCol_CSV|. +============================================================================== +4. CSV Configuration *csv-configuration* + +The CSV plugin tries to automatically detect the field delimiter for your +file, cause although often the file is called CSV (comma separated values), a +semicolon is actually used. By default the plugin tries the following +delimiters: ',', ';', '|', '\t', '^', ':'. +The column separator is stored in the buffer-local variable b:delimiter. This +delimiter is heavily used, because you need it to define a column. Almost all +commands use this variable therefore. + +4.1 Delimiter *csv-delimiter* +------------- +To override the automatic detection of the delimiter and define the separator +manually, use: > + + :let g:csv_delim=',' + +to let the comma be the delimiter. This sets the buffer local delimiter +variable b:delimiter. + +If your file does not consist of delimited columns, but rather is a fixed +width csv file, see |csv-fixedwidth| for configuring the plugin appropriately. + +If you changed the delimiter, you should reinitialize the plugin using +|InitCSV| + +Note: the delimiter will be used to generate a regular expression that matches +a column. Internally the plugin uses the very-nomagic setting for the +delimiter, so escaping is not neccessary. + +If you want to override which delimiters are probed automatically, set the +g:csv_delim_test variable like this: > + :let g:csv_delim_test = ',;|' + +This will only make the plugin test the possible delimiters ',', ';' and '|'. +This will also make the automatic detection a bit faster, since it does not +need to test that many delimiters. + +4.2 Column *csv-column* +---------- +The definition, of what a column is, is defined as buffer-local variable +b:col. By default this variable is initialized to: > + + let b:col='\%(\%([^' . b:delimiter . ']*"[^"]*"[^' . b:delimiter . ']*' + \. b:delimiter . '\)\|\%([^' . b:delimiter . ']*\%(' . b:delimiter + \. '\|$\)\)\)' + +This should take care of quoted delimiters within a column. Those should +obviously not count as a delimiter. This regular expression is quite +complex and might not always work on some complex cases (e.g. linebreaks +within a field, see RFC4180 for some ugly cases that will probably not work +with this plugin). + +If you changed the b:delimiter variable, you need to redefine the b:col +variable, cause otherwise it will not reflect the change. To change the +variable from the comma to a semicolon, you could call in your CSV-Buffer +this command: > + + :let b:col=substitute(b:col, ',', ';', 'g') + +Check with :echo b:col, if the definition is correct afterwards. + +You can also force the plugin to use your own defined regular expression as +column. That regular expression should include the delimiter for the columns. +To define your own regular expression, set the g:csv_col variable: > + + let g:csv_col='[^,]*,' + +This defines a column as a field delimited by the comma (where no comma can be +contained inside a field), similar to how |csv-strict| works. + +You should reinitialize the plugin afterwards |InitCSV| + +4.3 Highlighting Group *csv-higroup* +---------------------- +By default the csv ftplugin uses the WildMenu highlighting Group to define how +the |HiColumn| command highlights columns. If you would like to define a +different highlighting group, you need to set this via the g:csv_hiGroup +variable. You can e.g. define it in your |.vimrc|: > + + :let g:csv_hiGroup = "IncSearch" + +You need to restart Vim, if you have changed this variable or use |InitCSV| + +The |hl-Title| highlighting is used for the Header line that is created by the +|Header_CSV| command. If you prefer a different highlighting, set the +g:csv_hiHeader variable to the prefered highlighting: > + + let g:csv_hiHeader = 'Pmenu' +< +This would set the header window to the |hl-Pmenu| highlighting, that is used +for the popup menu. To disable the custom highlighting, simply |unlet| the +variable: > + + unlet g:csv_hiHeader + +You should reinitialize the plugin afterwards |InitCSV| + +4.4 Strict Columns *csv-strict* +------------------ +The default regular expression to define a column is quite complex +(|csv-column|). This slows down the processing and makes Vim use more memory +and it could still not fit to your specific use case. + +If you know, that in your data file, the delimiter cannot be contained inside +the fields quoted or escaped, you can speed up processing (this is quite +noticeable when using the |ArrangeColumn_CSV| command) by setting the +g:csv_strict_columns variable: > + + let g:csv_strict_columns = 1 + +This would define a column as this regex: > + + let b:col = '\%([^' . b:delimiter . ']*' . b:delimiter . '\|$\)' + +Much simpler then the default column definition, isn't it? +See also |csv-column| and |csv-delimiter| + +You can disable the effect if you |unlet| the variable: > + + unlet g:csv_strict_columns + +You should reinitialize the plugin afterwards |InitCSV| + +For example when opening a CSV file you get the Error |E363|: pattern uses +more memory than 'maxmempattern'. In this case, either increase the +'maxmempattern' or set the g:csv_strict_columns variable. + + +4.5 Concealing *csv-syntax* *csv-conceal* +-------------- +The CSV plugin comes with a function to syntax highlight csv files. Basically +allt it does is highlight the columns and the header line. + +By default, the delimiter will not be displayed, if Vim supports |conceal| of +syntax items and instead draws a vertical line. If you don't want that, simply +set the g:csv_noconceal variable in your .vimrc > + + let g:csv_no_conceal = 1 + +and to disable it, simply unlet the variable > + + unlet g:csv_no_conceal + +You should reinitialize the plugin afterwards |InitCSV| +Note: You can also set the 'conceallevel' option to control how the concealed +chars will be displayed. + +If you want to customize the syntax colors, you can define your own groups. +The CSV plugin will use already defined highlighting groups, if they are +already defined, otherwise it will define its own defaults which should be +visible with 8, 16, 88 and 256 color terminals. For that it uses the +CSVColumnHeaderOdd and CSVColumnHeaderEven highlight groups for syntax +coloring the first line. All other lines get either the CSVColumnOdd or +CSVColumnEven highlighting. + +In case you want to define your own highlighting groups, you can define your +own syntax highlighting like this in your |.vimrc| > + + hi CSVColumnEven term=bold ctermbg=4 guibg=DarkBlue + hi CSVColumnOdd term=bold ctermbg=5 guibg=DarkMagenta + hi CSVColumnHeaderEven ... + hi CSVColumnHeaderOdd ... + +Alternatively, you can simply link those highlighting groups to some other +ones, you really like: > + + hi link CSVColumnOdd MoreMsg + hi link CSVColumnEven Question +< +If you do not want column highlighting, set the variable +g:csv_no_column_highlight to 1 > + + :let g:csv_no_column_highlight = 1 +< +Note, these changes won't take effect, until you restart Vim. + + +4.6 Newlines *csv-newline* +------------ +RFC4180 allows newlines in double quoted strings. By default, the csv-plugin +won't recognize newlines inside fields. It is however possible to make the +plugin aware of newlines within quoted strings. To enable this, set > + + let g:csv_nl = 1 + +and to disable it again, simply unset the variable > + + unlet g:csv_nl + +It is a good idea to reinitialize the plugin afterwards |InitCSV| + +Note, this might not work correctly in all cases. The syntax highlighting +seems to change on cursor movements. This could possibly be a bug in the +syntax highlighting engine of Vim. Also, |WhatColumn_CSV| can't handle +newlines inside fields and will most certainly be wrong. + +4.7 Highlight column automatically *csv-hicol* +---------------------------------- +You can let vim automatically highlight the column on which the cursor is. +This works by defining an |CursorMoved| autocommand to always highlight the +column, when the cursor is moved in normal mode. Note, this does not update +the highlighting, if the Cursor is moved in Insert mode. To enable this, +define the g:csv_highlight_column variable like this > + + let g:csv_highlight_column = 'y' + +and to disable it again, simply unset the variable > + + unlet g:csv_highlight_column + +It is a good idea to reinitialize the plugin afterwards |InitCSV| + +4.8 Fixed width columns *csv-fixedwidth* +----------------------- +Sometimes there are no real columns, but rather the file is fixed width with +no distinct delimiters between each column. The CSV plugin allows you to +handle such virtual columns like csv columns, if you define where each column +starts. + +Note: Except for |ArrangeColumn_CSV| and the |Header_CSV| commands, all +commands work in either mode. Those two commands won't do anything in the case +of fixedwidth columns, since they don't really make sense here. + +4.8.1 Manual setup +------------------ +You can do this, by setting the buffer-local variable +b:csv_fixed_width like this > + + let b:csv_fixed_width="1,5,9,13,17,21" + +This defines that each column starts at multiples of 4. Be sure, to issue +this command in the buffer, that contains your file, otherwise, it won't +have an effect, since this is a buffer-local option (|local-option|) + +After setting this variable, you should reinitialize the plugins using +|InitCSV| + + *CSVFixed* +4.8.2 Setup using a Wizard +-------------------------- +Alternatively, you can setup the fixed width columns using the :CSVFixed +command. This provides a simple wizard to select each column. If you enter +the command: > + :CSVFixed +< +The first column will be highlighted and Vim outputs: +<Cursor>, <Space>, <ESC>, <BS>, <CR>... +This means, you can now use those 5 keys to configure the fixed-width columns: + + <Cursor> Use Cursor Left (<Left>) and Cursor Right (<Right>) to move the + highlighting bar. + <Space> If you press <Space>, this column will be fixed and remain + highlighted and there will be another bar, you can move using + the Cursor keys. This means this column will be considered to be + the border between 2 fixed with columns. + <ESC> Abort + <BS> Press the backspace key, to remove the last column you fixed with + the <Space> key. + <CR> Use Enter to finish the wizard. This will use all fixed columns + to define the fixed width columns of your csv file. The plugin + will be initialized and syntax highlighting should appear. + +Note: This only works, if your Vim has the 'colorcolumn' option available +(This won't work with Vim < 7.3 and also not with a Vim without +syntax +feature). + + +4.9 CSV Header lines *csv-header* +-------------------- +By default, dynamic filtering |csv-filter| will not fold away the first line. +If you don't like that, you can define your header line using the variable +b:csv_fold_headerline, e.g. > + + let b:csv_headerline = 0 + +to disable, that a header line won't be folded away. If your header line +instead is on line 5, simply set this variable to 5. This also applies to the +|Header_CSV| command. + +4.10 Number format *csv-nrformat* +------------------ +When using the |SumCol_CSV| command, you can specify a certain number format +using the /x:y/ argument. You can however also configure the plugin to detect +a different number format than the default number format (which does not +support a thousands separator and uses the '.' as decimal separator). + +To specify a different thousands separator by default, use > + + let b:csv_thousands_sep = ' ' + +to have the space use as thousands separator and > + + let b:csv_decimal_sep = ',' + +to use the comma as decimal separator. + +4.11 Move folded lines *csv-move-folds* +---------------------- +If you use dynamic filters (see |csv-filter|), you can configure the plugin to +move all folded lines to the end of the file. This only happens if you set the +variable > + + let g:csv_move_folds = 1 +< +and the file is modifiable. This let's you see all non-folded records as a +consecutive area without being disrupted by folded lines. + +4.12 Using comments *csv-comments* +------------------- +Strictly speaking, in csv files there can't be any comments. You might however +still wish to comment or annotate certain sections in your file, so the CSV +plugin supports Comments. + +Be default, the CSV plugin will use the 'commentstring' setting to identify +comments. If this option includes the '%s' it will consider the part before +the '%s' as leading comment marker and the part behind it as comment +delimiter. + +You can however define your own comment marker, using the variable +g:csv_comment. Like with the 'commentstring' setting, you can use '%s' +expandos, that will denote where the actual comment text belongs. To define +your own comment string, put this in your |.vimrc| > + + :let g:csv_comment = '#' +< +Which will use the '#' sign as comment leader like in many scripting +languages. + +After setting this variable, you should reinitialize the plugins using +|InitCSV| + + *csv-foldtext* +By default, the csv plugin sets the 'foldtext' option. If you don't want this, +set the variable `g:csv_disable_fdt` in your |.vimrc| > + + :let g:csv_disable_fdt = 1 + +4.13 Size and performance considerations *csv-size* +---------------------------------------- +By default, the csv plugin will analyze the whole file to determine which +delimiter to use. Beside specifying the the actual delimiter to use +(|csv-delimiter|) you can restrict analyzing the plugin to consider only a +certain part of the file. This should make loading huge csv files a log +faster. To only consider the first 100 rows set the `g:csv_start` and +`g:csv_end` variables in your |.vimrc| like this > + + :let g:csv_start = 1 + :let g:csv_end = 100 + +Also note, you can use the Large File plugin +(http://www.drchip.org/astronaut/vim/index.html#LARGEFILE) which however will +disable syntax highlighting and the filetype commands for very large csv files +(by default larger than 100 MB). + +See also |csv-slow| +============================================================================== +5. Functions *CSV-Functions* + +The csv plugins also defines some functions, that can be used for scripting +when a csv file is open + +5.1 CSVPat() *CSVPat()* +------------ +CSVPat({column}[, {pattern}]) + +This function returns the pattern for the selected column. If only columns is +given, returns the regular expression used to search for the pattern '.*' in +that column (which means the content of that column). Alternatively, an +optional pattern can be given, so the return string can be directly feeded to +the |/| or |:s| command, e.g. type: > + + :s/<C-R>=CSVPat(3, 'foobar')<cr>/baz + +where the <C-R> means pressing Control followed by R followed by = +(see |c_CTRL-R_=|). A prompt will apear, with the '=' as the first character +on which you can enter expressions. + +In this case enter CSVPat(3, 'foobar') which returns the pattern to search for +the string 'foobar' in the third column. After you press enter, the returned +pattern will be put after the :s command so you can directly enter / and the +substitute string. + +5.2 CSVField(x,y[, orig]) *CSVField()* +------------------------- +This function returns the field at index (x,y) (starting from 1). If the +parameter orig is given, returns the column "as is" (e.g. including delimiter +and leading and trailing whitespace, otherwise that will be stripped.) + +5.3 CSVCol([name]) *CSVCol()* +------------------ +If the name parameter is given, returns the name of the column, else returns +the index of the current column, starting at 1. + +5.4 CSVSum(col, fmt, startline, endline) *CSVSum()* +---------------------------------------- +Returns the sum for column col. Uses fmt to parse number format (see +|:CSVSumCol|) startline and endline specify the lines to consider, if empty, +will be first and last line. + +5.5 CSVCount(col, fmt, startline, endline[, distinct]) *CSVCount()* +------------------------------------------------------ +Returns the count of values for column col. If the optional parameter +[distinct] is given, only returns the distinct number of values. + +5.6 CSVMax(col, fmt, startline, endline) *CSVMax()* +------------------------------------------------------ +Returns the 10 largest values for column col. + +5.7 CSVMin(col, fmt, startline, endline) *CSVMin()* +------------------------------------------------------ +Returns the 10 smallest values for column col. + +5.8 CSVAvg(col, fmt, startline, endline) *CSVAvg()* +------------------------------------------------------ +Returns the average value for column col. + +5.9 CSVWidth([silent]) *CSVWidth()* +------------------------------------------------------ +Returns a list with the width for each column. If the first argument is given +and non-zero, do not output warning message about the number of records used +to calculate the width (else it might output something like: + CSV: File too large, only checking the first 10000 rows for the width +), default: 1 + +============================================================================== +6. CSV Tips and Tricks *csv-tips* + +Here, there you'll find some small tips and tricks that might help when +working with CSV files. + +6.1 Statusline *csv-stl* +-------------- +Suppose you want to include the column, on which the cursor is, into your +statusline. You can do this, by defining in your .vimrc the 'statusline' like +this: > + + function MySTL() + if has("statusline") + hi User1 term=standout ctermfg=0 ctermbg=11 guifg=Black guibg=Yellow + let stl = ... + if exists("*CSV_WCol") + let csv = '%1*%{&ft=~"csv" ? CSV_WCol() : ""}%*' + else + let csv = '' + endif + return stl.csv + endif + endfunc + set stl=%!MySTL() +< + +This will draw in your statusline right aligned the current column and max +column (like 1/10), if you are inside a CSV file. The column info will be +drawn using the User1 highlighting (|hl-User1|), that has been defined in the +second line of the function. In the third line of your function, put your +desired 'statusline' settings as |expression|. Note the section starting with +'if exists(..)' guards against not having loaded the filetype plugin. + +Note: vim-airline (https://github.com/bling/vim-airline) by default supports +the csv plugin and enables a nice little csv statusline which helps for +navigating within a csv file. For details, see the Vim-Airline documentation. + + *CSV_WCol()* +The CSV_WCol() function controls, what will be output. In the simplest case, +when no argument is given, it simply returns on which column the cursor is. +This would look like '1/10' which means the cursor is on the first of 10 +columns. If you rather like to know the name of the column, simply give as +parameter to the function the string "Name". This will return the column name +as it is printed on the first line of that column. This can be adjusted, to +have the column name printed into the statusline (see |csv-stl| above) by +replacing the line > + + let csv = '%1*%{&ft=~"csv" ? CSV_WCol() : ""}%*' +< +by e.g. + + let csv = '%1*%{&ft=~"csv" ? CSV_WCol("Name") . " " . CSV_WCol() : ""}%*' + +which will output "Name 2/10" if the cursor is in the second column +which is named "Name". + +6.2 Slow CSV plugin *csv-slow* +------------------- +Processing a csv file using |ArrangeColumn_CSV| can be quite slow, because Vim +needs to calculate the width for each column and then replace each column by +itself widened by spaces to the optimal length. Unfortunately, csv files tend +to be quite big. Remember, for a file with 10,000 lines and 50 columns Vim +needs to process each cell, which accumulates to 500,000 substitutions. It +might take some time, until Vim is finished. + +You can speed up things a little bit, if you omit the '!' attribute to the +|ArrangeColumn| (but this will only work, if the width has been calculated +before, e.g. by issuing a :1ArrangeColumn command to arrange only the first +line. Additionally you can also configure how this command behaves by setting +some configuration variables. + +Also note, using dynamic filters (|csv-filter|), can slow down Vim +considerably, since they internally work with complex regular expressions, and +if you have a large file, containing many columns, you might hit a performance +penalty (especially, if you want to filter many columns). It's best to avoid +those functions if you are using a large csv file (so using strict columns +|csv-strict| might help a little and also setting 're' to 1 might also +alleviate it a little). + + +6.3 Defining custom aggregate functions *csv-aggregate-functions* +--------------------------------------- +The CSV plugin already defines the |SumCol_CSV| command, to let you calculate +the sum of all values of a certain column within a given range. This will +consider all values within the range, that are not folded away (|csv-filter|), +and also skip comments and the header lines. The delimiter will be deleted +from each field. + +But it may be, that you don't need the sum, but would rather want to have the +average of all values within a certain column. You can define your own +function and let the plugin call it for a column like this: + + 1) You define your own custom function in the after directory of your + vim runtime path |after-directory| (see also #2 below) > + + fun! My_CSV_Average(col) + let sum=0 + for item in a:col + let sum+=item + endfor + return sum/len(a:col) + endfun +< + This function takes a list as argument, and calculates the average for + all items in the list. You could also make use of Vim's |eval()| + function and write your own Product function like this > + + fun! My_CSV_Product(col) + return eval(join(a:col, '*')) + endfun +< + + 2) Now define your own custom command, that calls your custom function for + a certain column > + + command! -buffer -nargs=? -range=% AvgCol + \ :echo csv#EvalColumn(<q-args>, + \ "My_CSV_Average", <line1>,<line2>) +< + This command should best be put into a file called csv.vim and save + it into your ~/.vim/after/ftplugin/ directory. Create directories + that don't exist yet. For Windows, this would be the + $VIMRUNTIME/vimfiles/after/ftplugin directory. + + 3) Make sure, your |.vimrc| includes a filetype plugin setting like this > + + filetype plugin on +< + This should make sure, that all the necessary scripts are loaded by + Vim. + + After restarting Vim, you can now use your custom command definition + :AvgCol. Use a range, for the number of lines you want to evaluate and + optionally use an argument to specify which column you want to be + evaluated > + + :2,$AvgCol 7 +< + This will evaluate the average of column seven (assuming, line 1 is the + header line, which should not be taken into account). + + Note: this plugin already defines an average function. + +6.4 Autocommand on opening/closing files *csv-arrange-autocmd* +---------------------------------------- +If you want your CSV files to always be displayed like a table, you can +achieve this using the |ArrangeColumn_CSV| command and some autocommands. +Define these autocommands in your |.vimrc| > + + aug CSV_Editing + au! + au BufRead,BufWritePost *.csv :%ArrangeColumn + au BufWritePre *.csv :%UnArrangeColumn + aug end + +Upon Entering a csv file, Vim will visually arrange all columns and before +writing, those columns will be collapsed again. The BufWritePost autocommand +makes sure, that after the file has been written successfully, the csv file +will again be visually arranged. + +You can also simply set the variable > + + let g:csv_autocmd_arrange = 1 +< +in your vimrc and an autocmd will be installed, that visually arranges your +csv file whenever you open them for editing. Alternatively, you can restrict +this setting to files below a certain size. For example, if you only want to +enable this feature for files smaller than 1 MB, put this into your |.vimrc| > + + let g:csv_autocmd_arrange = 1 + let g:csv_autocmd_arrange_size = 1024*1024 + +Note, this is highly experimental and especially on big files, this might +slow down Vim considerably. + +6.5 Syntax error when opening a CSV file *csv-syntax-error* +---------------------------------------- +If you see this error: > + + CSV Syntax:Invalid column pattern, using default pattern \%([^,]*,\|$\) +< +This happens usually, when the syntax script is read before the filetype +plugin, so the plugin did not have a chance to setup the column delimiter +correctly. + +The easy way to fix it, is to make sure the :syntax on (|:syn-on|) statement +comes after the :filetype plugin (|:filetype-plugin-on|) statement in your +|.vimrc| + +Alternatively, you can simply call |InitCSV| and ignore the error. + +Note: It could also be caused by lazy loading feature by a vim plugin +manager. For example this line might also cause it: > + + Plug 'https://github.com/chrisbra/csv.vim', { 'for' : 'csv' } +< + +The fix would then be: > + + Plug 'https://github.com/chrisbra/csv.vim' + +6.6 Calculate new columns *csv-calculate-column* +------------------------- +Suppose you have a table like this: + +Index;Value1;Value2~ +1;100;3 ` +2;20;4 ` + +And you need one more column, that is the calculated product of column 2 and +3, you can make use of the provided |CSVField()| function using a +|sub-replace-expression| of an |:s| command. In this case, you would do this: > + + :2,3s/$/\=printf("%s%.2f", b:delimiter, + (CSVField(2,line('.'))+0.0)*(CSVField(3,line('.'))+0.0/ + +Note: Enter as single line. The result will be this: > + +Index;Value1;Value2~ +1;100;3;300.00 ` +2;20;4;80.00 ` + +6.7 Using the result of an evaluation in insert mode *b:csv_result* +---------------------------------------------------- +The result of the last evaluation like e.g. |SumCol_CSV| will be available in +the buffer-local variable `b:csv_result`. This allows to easily enter the +result in a new new cell while in insert mode, using |i_CTRL-R|(e.g. in insert +mode press Ctrl-R followed by "=b:csv_result<enter>". + +You can also easily copy and paste it into e.g. the system clipboard using > + :let @+=b:csv_result + +============================================================================== +7. CSV Changelog *csv-changelog* + +see CHANGELOG.md in root directory of the plugin. + +# vim:ft=help + +endif diff --git a/doc/ft-gitcommit-plugin.txt b/doc/ft-gitcommit-plugin.txt new file mode 100644 index 00000000..3d6b9055 --- /dev/null +++ b/doc/ft-gitcommit-plugin.txt @@ -0,0 +1,25 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1 + +GIT COMMIT *ft-gitcommit-plugin* + +One command, :DiffGitCached, is provided to show a diff of the current commit +in the preview window. It is equivalent to calling "git diff --cached" plus +any arguments given to the command. + +GIT REBASE *ft-gitrebase-plugin* + +In a gitrebase filetype buffer, the following commands are provided: + + `:Pick` Changes the cursor line to a `pick` line. + `:Squash` Changes the cursor line to a `squash` line + `:Edit` Changes the cursor line to an `edit` line + `:Reword` Changes the cursor line to a `reword` line + `:Fixup` Changes the cursor line to a `fixup` line + `:Drop` Changes the cursor line to a `drop` line + `:Cycle` Cycles between the first 5 gitrebase commands + +To make the `:Cycle` command more useful, it might be mapped, e.g. > + nnoremap <buffer> <silent> S :Cycle<CR> +< + +endif diff --git a/doc/ft-ruby-indent.txt b/doc/ft-ruby-indent.txt new file mode 100644 index 00000000..5e274965 --- /dev/null +++ b/doc/ft-ruby-indent.txt @@ -0,0 +1,152 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1 + +RUBY *ft-ruby-indent* + *vim-ruby-indent* + + Ruby: Access modifier indentation |ruby-access-modifier-indentation| + Ruby: Block style indentation |ruby-block-style-indentation| + Ruby: Assignment style indentation |ruby-assignment-style-indentation| + Ruby: Hanging element indentation |ruby-hanging-element-indentation| + + *ruby-access-modifier-indentation* + *g:ruby_indent_access_modifier_style* + Ruby: Access modifier indentation ~ + +Different access modifier indentation styles can be used by setting: > + + :let g:ruby_indent_access_modifier_style = 'normal' + :let g:ruby_indent_access_modifier_style = 'indent' + :let g:ruby_indent_access_modifier_style = 'outdent' +< +By default, the "normal" access modifier style is used. + +Access modifier style "normal": +> + class Indent + private :method + protected :method + private + def method; end + protected + def method; end + public + def method; end + end +< +Access modifier style "indent": +> + class Indent + private :method + protected :method + private + def method; end + protected + def method; end + public + def method; end + end +< +Access modifier style "outdent": +> + class Indent + private :method + protected :method + private + def method; end + protected + def method; end + public + def method; end + end +< + *ruby-block-style-indentation* + *g:ruby_indent_block_style* + Ruby: Block style indentation ~ + +Different block indentation styles can be used by setting: > + + :let g:ruby_indent_block_style = 'expression' + :let g:ruby_indent_block_style = 'do' +< +By default, the "do" block indent style is used. + +Block indent style "expression": +> + first + .second do |x| + something + end +< +Block indent style "do": +> + first + .second do |x| + something + end +< + + *ruby-assignment-style-indentation* + *g:ruby_indent_assignment_style* + Ruby: Assignment style indentation ~ + +Different styles of indenting assignment for multiline expressions: +> + :let g:ruby_indent_assignment_style = 'hanging' + :let g:ruby_indent_assignment_style = 'variable' +< +By default, the "hanging" style is used. + +Assignment indent style "hanging": +> + x = if condition + something + end +< +Assignment indent style "variable": +> + x = if condition + something + end +< + + *ruby-hanging-element-indentation* + *g:ruby_indent_hanging_elements* + Ruby: Hanging element indentation ~ + +Elements of multiline collections -- such as arrays, hashes, and method +argument lists -- can have hanging indentation enabled or disabled with the +following setting. +> + :let g:ruby_indent_hanging_elements = 1 + :let g:ruby_indent_hanging_elements = 0 +< +By default, this setting is "1" (true) meaning that hanging indentation is +enabled in some cases. + +Here is an example method call when the setting is true (non-zero): +> + render('product/show', + product: product, + on_sale: true, + ) +< +And the same method call when the setting is false (zero): +> + render('product/show', + product: product, + on_sale: true, + ) +< +Note that, even if the setting is turned on, you can still get non-hanging +indentation by putting each argument on a separate line: +> + render( + 'product/show', + product: product, + on_sale: true, + ) +< + + vim:tw=78:sw=4:ts=8:ft=help:norl: + +endif diff --git a/doc/ft-ruby-omni.txt b/doc/ft-ruby-omni.txt new file mode 100644 index 00000000..dc78493b --- /dev/null +++ b/doc/ft-ruby-omni.txt @@ -0,0 +1,56 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1 + +RUBY *ft-ruby-omni* + *vim-ruby-omni* + +Completion of Ruby code requires that Vim be built with |+ruby|. + +Ruby completion will parse your buffer on demand in order to provide a list of +completions. These completions will be drawn from modules loaded by "require" +and modules defined in the current buffer. + +The completions provided by CTRL-X CTRL-O are sensitive to the context: + + CONTEXT COMPLETIONS PROVIDED ~ + + 1. Not inside a class definition Classes, constants and globals + + 2. Inside a class definition Methods or constants defined in the class + + 3. After '.', '::' or ':' Methods applicable to the object being + dereferenced + + 4. After ':' or ':foo' Symbol name (beginning with "foo") + +Notes: + - Vim will load/evaluate code in order to provide completions. This may + cause some code execution, which may be a concern. This is no longer + enabled by default, to enable this feature add > + let g:rubycomplete_buffer_loading = 1 +< - In context 1 above, Vim can parse the entire buffer to add a list of + classes to the completion results. This feature is turned off by default, + to enable it add > + let g:rubycomplete_classes_in_global = 1 +< to your vimrc + - In context 2 above, anonymous classes are not supported. + - In context 3 above, Vim will attempt to determine the methods supported by + the object. + - Vim can detect and load the Rails environment for files within a rails + project. The feature is disabled by default, to enable it add > + let g:rubycomplete_rails = 1 +< to your vimrc + - Vim can parse a Gemfile, in case gems are being implicitly required. To + activate the feature: > + let g:rubycomplete_load_gemfile = 1 +< To specify an alternative path, use: > + let g:rubycomplete_gemfile_path = 'Gemfile.aux' +< To use Bundler.require instead of parsing the Gemfile, set: > + let g:rubycomplete_use_bundler = 1 +< To use custom paths that should be added to $LOAD_PATH to correctly + resolve requires, set: > + let g:rubycomplete_load_paths = ["/path/to/code", "./lib/example"] + + + vim:tw=78:sw=4:ts=8:ft=help:norl: + +endif diff --git a/doc/ft-ruby-plugin.txt b/doc/ft-ruby-plugin.txt new file mode 100644 index 00000000..2380240d --- /dev/null +++ b/doc/ft-ruby-plugin.txt @@ -0,0 +1,85 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1 + +RUBY *ft-ruby-plugin* + *vim-ruby-plugin* + + + Ruby: Recommended settings |ruby-recommended| + Ruby: Motion commands |ruby-motion| + Ruby: Text objects |ruby-text-objects| + + *ruby-recommended* + *g:ruby_recommended_style* + Ruby: Recommended settings ~ + +The `g:ruby_recommended_style` variable activates indentation settings +according to the most common ruby convention: two spaces for indentation. It's +turned on by default to ensure an unsurprising default experience for most +ruby developers. + +If you'd like to enforce your own style, it's possible to apply your own +preferences in your own configuration in `after/ftplugin/ruby.vim`. You can +also disable the setting by setting the variable to 0: +> + let g:ruby_recommended_style = 0 +< + + *ruby-motion* + Ruby: Motion commands ~ + +Vim provides motions such as |[m| and |]m| for jumping to the start or end of +a method definition. Out of the box, these work for curly-bracket languages, +but not for Ruby. The vim-ruby plugin enhances these motions, by making them +also work on Ruby files. + + *ruby-]m* +]m Go to start of next method definition. + + *ruby-]M* +]M Go to end of next method definition. + + *ruby-[m* +[m Go to start of previous method definition. + + *ruby-[M* +[M Go to end of previous method definition. + + *ruby-]]* +]] Go to start of next module or class definition. + + *ruby-][* +][ Go to end of next module or class definition. + + *ruby-[[* +[[ Go to start of previous module or class definition. + + *ruby-[]* +[] Go to end of previous module or class definition. + + *ruby-text-objects* + Ruby: Text objects ~ + +Vim's |text-objects| can be used to select or operate upon regions of text +that are defined by structure. The vim-ruby plugin adds text objects for +operating on methods and classes. + + *ruby-v_am* *ruby-am* +am "a method", select from "def" until matching "end" + keyword. + + *ruby-v_im* *ruby-im* +im "inner method", select contents of "def"/"end" block, + excluding the "def" and "end" themselves. + + *ruby-v_aM* *ruby-aM* +aM "a class", select from "class" until matching "end" + keyword. + + *ruby-v_iM* *ruby-iM* +iM "inner class", select contents of "class"/"end" + block, excluding the "class" and "end" themselves. + + + vim:tw=78:sw=4:ts=8:ft=help:norl: + +endif diff --git a/doc/ft-ruby-syntax.txt b/doc/ft-ruby-syntax.txt new file mode 100644 index 00000000..c8c8b9cf --- /dev/null +++ b/doc/ft-ruby-syntax.txt @@ -0,0 +1,123 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1 + +RUBY *ruby.vim* *ft-ruby-syntax* + *vim-ruby-syntax* + + Ruby: Operator highlighting |ruby_operators| + Ruby: Whitespace errors |ruby_space_errors| + Ruby: Syntax errors |ruby_syntax_errors| + Ruby: Folding |ruby_fold| |ruby_foldable_groups| + Ruby: Reducing expensive operations |ruby_no_expensive| |ruby_minlines| + Ruby: Spellchecking strings |ruby_spellcheck_strings| + + *ruby_operators* + Ruby: Operator highlighting ~ + +Operators, and pseudo operators, can be highlighted by defining: > + + :let ruby_operators = 1 + :let ruby_pseudo_operators = 1 +< +The supported pseudo operators are ., &., ::, *, **, &, <, << and ->. + + *ruby_space_errors* + Ruby: Whitespace errors ~ + +Whitespace errors can be highlighted by defining "ruby_space_errors": > + + :let ruby_space_errors = 1 +< +This will highlight trailing whitespace and tabs preceded by a space character +as errors. This can be refined by defining "ruby_no_trail_space_error" and +"ruby_no_tab_space_error" which will ignore trailing whitespace and tabs after +spaces respectively. + + *ruby_syntax_errors* + Ruby: Syntax errors ~ + +Redundant line continuations and predefined global variable look-alikes (such +as $# and $-z) can be highlighted as errors by defining: +> + :let ruby_line_continuation_error = 1 + :let ruby_global_variable_error = 1 +< + *ruby_fold* + Ruby: Folding ~ + +Folding can be enabled by defining "ruby_fold": > + + :let ruby_fold = 1 +< +This will set the value of 'foldmethod' to "syntax" locally to the current +buffer or window, which will enable syntax-based folding when editing Ruby +filetypes. + + *ruby_foldable_groups* +Default folding is rather detailed, i.e., small syntax units like "if", "do", +"%w[]" may create corresponding fold levels. + +You can set "ruby_foldable_groups" to restrict which groups are foldable: > + + :let ruby_foldable_groups = 'if case %' +< +The value is a space-separated list of keywords: + + keyword meaning ~ + -------- ------------------------------------- ~ + ALL Most block syntax (default) + NONE Nothing + if "if" or "unless" block + def "def" block + class "class" block + module "module" block + do "do" block + begin "begin" block + case "case" block + for "for", "while", "until" loops + { Curly bracket block or hash literal + [ Array literal + % Literal with "%" notation, e.g.: %w(STRING), %!STRING! + / Regexp + string String and shell command output (surrounded by ', ", `) + : Symbol + # Multiline comment + << Here documents + __END__ Source code after "__END__" directive + +NONE and ALL have priority, in that order, over all other folding groups. + + *ruby_no_expensive* + Ruby: Reducing expensive operations ~ + +By default, the "end" keyword is colorized according to the opening statement +of the block it closes. While useful, this feature can be expensive; if you +experience slow redrawing (or you are on a terminal with poor color support) +you may want to turn it off by defining the "ruby_no_expensive" variable: > + + :let ruby_no_expensive = 1 +< +In this case the same color will be used for all control keywords. + + *ruby_minlines* + +If you do want this feature enabled, but notice highlighting errors while +scrolling backwards, which are fixed when redrawing with CTRL-L, try setting +the "ruby_minlines" variable to a value larger than 50: > + + :let ruby_minlines = 100 +< +Ideally, this value should be a number of lines large enough to embrace your +largest class or module. + + *ruby_spellcheck_strings* + Ruby: Spellchecking strings ~ + +Ruby syntax will perform spellchecking of strings if you define +"ruby_spellcheck_strings": > + + :let ruby_spellcheck_strings = 1 +< + + vim:tw=78:sw=4:ts=8:ft=help:norl: + +endif diff --git a/doc/haskell-vim.txt b/doc/haskell-vim.txt new file mode 100644 index 00000000..d2083ca5 --- /dev/null +++ b/doc/haskell-vim.txt @@ -0,0 +1,163 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haskell') == -1 + +*haskell-vim.txt* Last Change 2016 March 14 +=============================================================================== +=============================================================================== + +=============================================================================== +CONTENTS *haskell-vim-contents* + + 1. Features |haskell-vim-features| + 2. Configuration |haskell-vim-configuration| + 3. Highlighting |haskell-vim-indentation| + +=============================================================================== +FEATURES *haskell-vim-features* + + * Covers a broader spectrum of keywords + * Highlighting for new features like type families, pattern synonyms, + arrow syntax, recursive do, role annotations, QuasiQuotation + * More contextual highlighting + (e.g. highlight "as" or "family" only in appropriate places) + * Smarter indentation + * Better Cabal support + +=============================================================================== +CONFIGURATION *haskell-vim-configuration* + +To enable the features you would like to use, just add the according line to +your `.vimrc`. + +=============================================================================== +HIGHLIGHTING *haskell-vim-highlighting* + +`haskell-vim` can highlight additional keywords. This is enabled by setting +the according variable to 1 in the `.vimrc`. + + * |haskell-vim-enable-quantification| + * |haskell-vim-enable-recursivedo| + * |haskell-vim-enable-arrowsyntax| + * |haskell-vim-enable-pattern-synonyms| + * |haskell-vim-enable-typeroles| + * |haskell-vim-enable-static-pointers| + * |haskell-vim-classic-highlighting| + * |haskell-vim-disable-TH| + + *haskell-vim-enable-quantification* +`g:haskell_enable_quantification` Enables highlighting of `forall`. + + *haskell-vim-enable-recursivedo* +`g:haskell_enable_recursivedo` Enables highlighting of `mdo` and `rec`. + + *haskell-vim-enable-arrowsyntax* +`g:haskell_enable_arrowsyntax` Enables highlighting of `proc`. + + *haskell-vim-enable-pattern-synonyms* +`g:haskell_enable_pattern_synonyms` Enables highlighting of the `pattern` keyword. + + *haskell-vim-enable-typeroles* +`g:haskell_enable_typeroles` Enables highlighting of the `role` keyword, as + well as `phantom`, `norminal` and + `representational`. + + *haskell-vim-enable-static-pointers* +`g:haskell_enable_static_pointers` Enables highlighting of the `static` keyword. + + *haskell-vim-classic-highlighting* +`haskell-vim` has an opinionated highlighting. If you do not like that you can +switch to a more traditional mode by setting `g:haskell_classic_highlighting` +to 1. + + *haskell-vim-disable-TH* +Disabling Template Haskell and Quasiquoting syntax is possible by setting +`g:haskell_disable_TH` to `1`. + +=============================================================================== +INDENTATION *haskell-vim-indentation* + +To configure indentation in `haskell-vim` you can use the following variables to +change indentation depth, just add the according line to your `.vimrc`. + +You can disable the indentation by setting `g:haskell_indent_disable` to `1`. + +Haskell~ + + * |haskell-vim-indent-if| + * |haskell-vim-indent-case| + * |haskell-vim-indent-let| + * |haskell-vim-indent-where| + * |haskell-vim-indent-before-where| + * |haskell-vim-indent-after-bare-where| + * |haskell-vim-indent-do| + * |haskell-vim-indent-in| + * |haskell-vim-indent-guard| + *haskell-vim-indent-if* +* let g:haskell_indent_if = 3 > + + if bool + >>>then ... + >>>else ... +< + + *haskell-vim-indent-case* +* let g:haskell_indent_case = 2 > + + case xs of + >>[] -> ... + >>(y:ys) -> ... +< + *haskell-vim-indent-let* +* let g:haskell_indent_let = 4 > + + let x = 0 in + >>>>x +< + *haskell-vim-indent-where* +* let g:haskell_indent_where = 6 > + + where f :: Int -> Int + >>>>>>f x = x +< + *haskell-vim-indent-before-where* +* let g:haskell_indent_before_where = 2 > + + foo + >>where +< + *haskell-vim-indent-after-bare-where* +* let g:haskell_indent_after_bare_where = 2 > + + where + >>foo +< + *haskell-vim-indent-do* +* let g:haskell_indent_do = 3 > + + do x <- a + >>>y <- b +< + *haskell-vim-indent-in* +* let g:haskell_indent_in = 1 > + + let x = 1 + >in x +< + *haskell-vim-indent-guard* +* let g:haskell_indent_guard = 2 > + + f x y + >>| +< + +Cabal~ + + * |cabal-vim-indent-section| + + *cabal-vim-indent-section* +* let g:cabal_indent_section = 2 (limited to max. 4 spaces) > + + executable name + >>main-is: Main.hs +< + +endif diff --git a/doc/idris-vim.txt b/doc/idris-vim.txt new file mode 100644 index 00000000..e3d48e9e --- /dev/null +++ b/doc/idris-vim.txt @@ -0,0 +1,158 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'idris') == -1 + +*idris-vim.txt* Last change 2014 April 24 +=============================================================================== +=============================================================================== + @@@@ @@@@@@@@ @@@@@@@@ @@@@ @@@@@@ @@ @@ @@@@ @@ @@ + @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@@ @@@ + @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@@@ @@@@ + @@ @@ @@ @@@@@@@@ @@ @@@@@@ @@@@@@@ @@ @@ @@ @@ @@@ @@ + @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ + @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ + @@@@ @@@@@@@@ @@ @@ @@@@ @@@@@@ @@@ @@@@ @@ @@ +=============================================================================== +CONTENTS *idris-vim-contents* + + 1. Features: |idris-vim-features| + 2. Requirements: |idris-vim-requirements| + 3. Functions: |idris-vim-functions| + 4. Troubleshooting |idris-vim-troubleshooting| + 5. Examples: |idris-vim-examples| + 6. Information: |idris-vim-information| + +=============================================================================== +FEATURES *idris-vim-features* + + * Syntax Highlighting + * Indentation + * Unicode Concealing + * Syntax Checking (via Syntastic(https://github.com/scrooloose/syntastic)) + * Interactive Editing via the REPL + +=============================================================================== +REQUIREMENTS *idris-vim-requirements* + + * Idris (http://www.idris-lang.org/) + + OPTIONAL: + + * Syntastic(https://github.com/scrooloose/syntastic) for syntax checking + * Vimshell(https://github.com/Shougo/vimshell.vim) for a REPL + +=============================================================================== +FUNCTIONS *idris-vim-functions* + +All of the functions in idris-vim are essentially just calls back to the REPL, +so documentation for each of them is also available there. + +IdrisDocumentation *IdrisDocumentation* + Shows internal documentation of the primitive under the cursor. + + Mapped to '<LocalLeader>_h' by default. + +IdrisResponseWin *IdrisResponseWin* + This opens an idris response window in a new pane. + + Mapped to '<LocalLeader>_i' by default. + +IdrisShowType *IdrisShowType* + This shows the type of the name under the cursor (or, if the cursor happens + to be over a metavariable, a bit more information about its context). + + Mapped to '<LocalLeader>_t' by default. + +IdrisReload *IdrisReload* + This reloads the file and type-checks the file in the current buffer. + + Mapped to '<LocalLeader>_r' by default. + +IdrisEval *IdrisEval* + This prompts for an expression and then evaluates it in the REPL, then + returns the result. + + Mapped to '<LocalLeader>_e' by default. + +IdrisCaseSplit *IdrisCaseSplit* + When the cursor is over a variable in a pattern match clause or case + expression, this splits the variable into all well-typed patterns. + + Mapped to '<LocalLeader>_c' by default + +IdrisAddClause *IdrisAddClause* + When the cursor is at a type declaration this creates a new clause for that + signature. + + By default mapped to '<LocalLeader>_d' for an ordinary top-level definition, + '<LocalLeader>_b' for a typeclass instance definition, and + '<LocalLeader>_md' to add a pattern-matching proof clause. + +IdrisAddMissing: *IdrisAddMissing* + When the cursor is over a function, this adds all clauses necessary to make + that function cover all inputs. This also eliminates clauses which would + lead to unification errors from appearing. + + Mapped to '<LocalLeader>_m' by default + +IdrisRefine: *IdrisRefine* + Refines the item the cursor is over (applies the name and fills in any + arguments which can be filled in via unification) + + Mapped to '<LocalLeader>_f' by default + +IdrisProofSearch: *IdrisProofSearch* + This attempts to find a value for the metavariable it was called on by + looking at the rest of the code. It can also be called with hints, which + are functions that can apply to help solve for the metavariable. + + Mapped to '<LocalLeader>_o' without hints and '<LocalLeader>p' with hints by + default + +IdrisMakeWith: *IdrisMakeWith* + When the cursor is over a pattern clause and this is called, it creates a + new with clause. + + Mapped to '<LocalLeader>_w' by default + +IdrisMakeLemma: *IdrisMakeLemma* + When the cursor is over a metavariable and this is called, it creates a new + top-level definition to solve the metavariable. + + Mapped to '<LocalLeader>_l' by default + +=============================================================================== +TROUBLESHOOTING *idris-vim-troubleshooting* + +If this isn't working for you, make sure that: + + * There is an Idris REPL running + * For syntax checking, you have syntastic installed + * The plugins mappings exists and don't conflict with anything else installed + (You can use ':map' to check. There should be mappings similar to + '\h * :call IdrisShowDoc()'.) + * Vim recognizes you're in an idris file (you can use ':verb set ft' to check) + +If none of this works, check to issue tracker on github and if nothing is +there create an issue with a detailed description of the problem. + +=============================================================================== +EXAMPLES *idris-vim-examples* + +Some excellent tutorials/examples for interactive editing using the above +functions can be found at: + http://edwinb.wordpress.com/2013/10/28/interactive-idris-editing-with-vim/ +and + http://www.scribd.com/doc/214031954/60/Interactive-Editing-in-Vim + +=============================================================================== +INFORMATION *idris-vim-information* + +Author: edwinb +Repo: https://github.com/idris-hackers/idris-vim + +Documentation by japesinator + +=============================================================================== +=============================================================================== +" vim:ft=help:et:ts=2:sw=2:sts=2:norl: + +endif diff --git a/doc/julia-vim-L2U-table.txt b/doc/julia-vim-L2U-table.txt new file mode 100644 index 00000000..06f8a394 --- /dev/null +++ b/doc/julia-vim-L2U-table.txt @@ -0,0 +1,3282 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'julia') == -1 + +julia-vim-L2U-table.txt LaTeX-to-Unicode reference table + +=================================================================== +LATEX-TO-UNICODE REFERENCE TABLE *L2U-ref* *julia-vim-L2U-reference* + + Note: This file is autogenerated from the script 'generate_latex_symbols_table.jl' + The symbols are based on the documentation of Julia version 1.5.0-DEV.67 + See |julia-vim| for the LaTeX-to-Unicode manual. + +Code point(s) Character(s) Tab completion sequence(s) Unicode name(s)~ +----------------- ------------ -------------------------------------------- -------------------------------------------------------------------------------------------------------- +U+000A1 ¡ \exclamdown INVERTED EXCLAMATION MARK +U+000A3 £ \sterling POUND SIGN +U+000A5 ¥ \yen YEN SIGN +U+000A6 ¦ \brokenbar BROKEN BAR / BROKEN VERTICAL BAR +U+000A7 § \S SECTION SIGN +U+000A9 © \copyright, \:copyright: COPYRIGHT SIGN +U+000AA ª \ordfeminine FEMININE ORDINAL INDICATOR +U+000AC ¬ \neg NOT SIGN +U+000AE ® \circledR, \:registered: REGISTERED SIGN / REGISTERED TRADE MARK SIGN +U+000AF ¯ \highminus MACRON / SPACING MACRON +U+000B0 ° \degree DEGREE SIGN +U+000B1 ± \pm PLUS-MINUS SIGN / PLUS-OR-MINUS SIGN +U+000B2 ² \^2 SUPERSCRIPT TWO / SUPERSCRIPT DIGIT TWO +U+000B3 ³ \^3 SUPERSCRIPT THREE / SUPERSCRIPT DIGIT THREE +U+000B6 ¶ \P PILCROW SIGN / PARAGRAPH SIGN +U+000B7 · \cdotp MIDDLE DOT +U+000B9 ¹ \^1 SUPERSCRIPT ONE / SUPERSCRIPT DIGIT ONE +U+000BA º \ordmasculine MASCULINE ORDINAL INDICATOR +U+000BC ¼ \1/4 VULGAR FRACTION ONE QUARTER / FRACTION ONE QUARTER +U+000BD ½ \1/2 VULGAR FRACTION ONE HALF / FRACTION ONE HALF +U+000BE ¾ \3/4 VULGAR FRACTION THREE QUARTERS / FRACTION THREE QUARTERS +U+000BF ¿ \questiondown INVERTED QUESTION MARK +U+000C5 Å \AA LATIN CAPITAL LETTER A WITH RING ABOVE / LATIN CAPITAL LETTER A RING +U+000C6 Æ \AE LATIN CAPITAL LETTER AE / LATIN CAPITAL LETTER A E +U+000D0 Ð \DH LATIN CAPITAL LETTER ETH +U+000D7 × \times MULTIPLICATION SIGN +U+000D8 Ø \O LATIN CAPITAL LETTER O WITH STROKE / LATIN CAPITAL LETTER O SLASH +U+000DE Þ \TH LATIN CAPITAL LETTER THORN +U+000DF ß \ss LATIN SMALL LETTER SHARP S +U+000E5 å \aa LATIN SMALL LETTER A WITH RING ABOVE / LATIN SMALL LETTER A RING +U+000E6 æ \ae LATIN SMALL LETTER AE / LATIN SMALL LETTER A E +U+000F0 ð \eth, \dh LATIN SMALL LETTER ETH +U+000F7 ÷ \div DIVISION SIGN +U+000F8 ø \o LATIN SMALL LETTER O WITH STROKE / LATIN SMALL LETTER O SLASH +U+000FE þ \th LATIN SMALL LETTER THORN +U+00110 Đ \DJ LATIN CAPITAL LETTER D WITH STROKE / LATIN CAPITAL LETTER D BAR +U+00111 đ \dj LATIN SMALL LETTER D WITH STROKE / LATIN SMALL LETTER D BAR +U+00127 ħ \hbar LATIN SMALL LETTER H WITH STROKE / LATIN SMALL LETTER H BAR +U+00131 ı \imath LATIN SMALL LETTER DOTLESS I +U+00141 Ł \L LATIN CAPITAL LETTER L WITH STROKE / LATIN CAPITAL LETTER L SLASH +U+00142 ł \l LATIN SMALL LETTER L WITH STROKE / LATIN SMALL LETTER L SLASH +U+0014A Ŋ \NG LATIN CAPITAL LETTER ENG +U+0014B ŋ \ng LATIN SMALL LETTER ENG +U+00152 Œ \OE LATIN CAPITAL LIGATURE OE / LATIN CAPITAL LETTER O E +U+00153 œ \oe LATIN SMALL LIGATURE OE / LATIN SMALL LETTER O E +U+00195 ƕ \hvlig LATIN SMALL LETTER HV / LATIN SMALL LETTER H V +U+0019E ƞ \nrleg LATIN SMALL LETTER N WITH LONG RIGHT LEG +U+001B5 Ƶ \Zbar LATIN CAPITAL LETTER Z WITH STROKE / LATIN CAPITAL LETTER Z BAR +U+001C2 ǂ \doublepipe LATIN LETTER ALVEOLAR CLICK / LATIN LETTER PIPE DOUBLE BAR +U+00237 ȷ \jmath LATIN SMALL LETTER DOTLESS J +U+00250 ɐ \trna LATIN SMALL LETTER TURNED A +U+00252 ɒ \trnsa LATIN SMALL LETTER TURNED ALPHA / LATIN SMALL LETTER TURNED SCRIPT A +U+00254 ɔ \openo LATIN SMALL LETTER OPEN O +U+00256 ɖ \rtld LATIN SMALL LETTER D WITH TAIL / LATIN SMALL LETTER D RETROFLEX HOOK +U+00259 ə \schwa LATIN SMALL LETTER SCHWA +U+00263 ɣ \pgamma LATIN SMALL LETTER GAMMA +U+00264 ɤ \pbgam LATIN SMALL LETTER RAMS HORN / LATIN SMALL LETTER BABY GAMMA +U+00265 ɥ \trnh LATIN SMALL LETTER TURNED H +U+0026C ɬ \btdl LATIN SMALL LETTER L WITH BELT / LATIN SMALL LETTER L BELT +U+0026D ɭ \rtll LATIN SMALL LETTER L WITH RETROFLEX HOOK / LATIN SMALL LETTER L RETROFLEX HOOK +U+0026F ɯ \trnm LATIN SMALL LETTER TURNED M +U+00270 ɰ \trnmlr LATIN SMALL LETTER TURNED M WITH LONG LEG +U+00271 ɱ \ltlmr LATIN SMALL LETTER M WITH HOOK / LATIN SMALL LETTER M HOOK +U+00272 ɲ \ltln LATIN SMALL LETTER N WITH LEFT HOOK / LATIN SMALL LETTER N HOOK +U+00273 ɳ \rtln LATIN SMALL LETTER N WITH RETROFLEX HOOK / LATIN SMALL LETTER N RETROFLEX HOOK +U+00277 ɷ \clomeg LATIN SMALL LETTER CLOSED OMEGA +U+00278 ɸ \ltphi LATIN SMALL LETTER PHI +U+00279 ɹ \trnr LATIN SMALL LETTER TURNED R +U+0027A ɺ \trnrl LATIN SMALL LETTER TURNED R WITH LONG LEG +U+0027B ɻ \rttrnr LATIN SMALL LETTER TURNED R WITH HOOK / LATIN SMALL LETTER TURNED R HOOK +U+0027C ɼ \rl LATIN SMALL LETTER R WITH LONG LEG +U+0027D ɽ \rtlr LATIN SMALL LETTER R WITH TAIL / LATIN SMALL LETTER R HOOK +U+0027E ɾ \fhr LATIN SMALL LETTER R WITH FISHHOOK / LATIN SMALL LETTER FISHHOOK R +U+00282 ʂ \rtls LATIN SMALL LETTER S WITH HOOK / LATIN SMALL LETTER S HOOK +U+00283 ʃ \esh LATIN SMALL LETTER ESH +U+00287 ʇ \trnt LATIN SMALL LETTER TURNED T +U+00288 ʈ \rtlt LATIN SMALL LETTER T WITH RETROFLEX HOOK / LATIN SMALL LETTER T RETROFLEX HOOK +U+0028A ʊ \pupsil LATIN SMALL LETTER UPSILON +U+0028B ʋ \pscrv LATIN SMALL LETTER V WITH HOOK / LATIN SMALL LETTER SCRIPT V +U+0028C ʌ \invv LATIN SMALL LETTER TURNED V +U+0028D ʍ \invw LATIN SMALL LETTER TURNED W +U+0028E ʎ \trny LATIN SMALL LETTER TURNED Y +U+00290 ʐ \rtlz LATIN SMALL LETTER Z WITH RETROFLEX HOOK / LATIN SMALL LETTER Z RETROFLEX HOOK +U+00292 ʒ \yogh LATIN SMALL LETTER EZH / LATIN SMALL LETTER YOGH +U+00294 ʔ \glst LATIN LETTER GLOTTAL STOP +U+00295 ʕ \reglst LATIN LETTER PHARYNGEAL VOICED FRICATIVE / LATIN LETTER REVERSED GLOTTAL STOP +U+00296 ʖ \inglst LATIN LETTER INVERTED GLOTTAL STOP +U+0029E ʞ \turnk LATIN SMALL LETTER TURNED K +U+002A4 ʤ \dyogh LATIN SMALL LETTER DEZH DIGRAPH / LATIN SMALL LETTER D YOGH +U+002A7 ʧ \tesh LATIN SMALL LETTER TESH DIGRAPH / LATIN SMALL LETTER T ESH +U+002B0 ʰ \^h MODIFIER LETTER SMALL H +U+002B2 ʲ \^j MODIFIER LETTER SMALL J +U+002B3 ʳ \^r MODIFIER LETTER SMALL R +U+002B7 ʷ \^w MODIFIER LETTER SMALL W +U+002B8 ʸ \^y MODIFIER LETTER SMALL Y +U+002BC ʼ \rasp MODIFIER LETTER APOSTROPHE +U+002C8 ˈ \verts MODIFIER LETTER VERTICAL LINE +U+002CC ˌ \verti MODIFIER LETTER LOW VERTICAL LINE +U+002D0 ː \lmrk MODIFIER LETTER TRIANGULAR COLON +U+002D1 ˑ \hlmrk MODIFIER LETTER HALF TRIANGULAR COLON +U+002D2 ˒ \sbrhr MODIFIER LETTER CENTRED RIGHT HALF RING / MODIFIER LETTER CENTERED RIGHT HALF RING +U+002D3 ˓ \sblhr MODIFIER LETTER CENTRED LEFT HALF RING / MODIFIER LETTER CENTERED LEFT HALF RING +U+002D4 ˔ \rais MODIFIER LETTER UP TACK +U+002D5 ˕ \low MODIFIER LETTER DOWN TACK +U+002D8 ˘ \u BREVE / SPACING BREVE +U+002DC ˜ \tildelow SMALL TILDE / SPACING TILDE +U+002E1 ˡ \^l MODIFIER LETTER SMALL L +U+002E2 ˢ \^s MODIFIER LETTER SMALL S +U+002E3 ˣ \^x MODIFIER LETTER SMALL X +U+00300 ◌̀ \grave COMBINING GRAVE ACCENT / NON-SPACING GRAVE +U+00301 ◌́ \acute COMBINING ACUTE ACCENT / NON-SPACING ACUTE +U+00302 ◌̂ \hat COMBINING CIRCUMFLEX ACCENT / NON-SPACING CIRCUMFLEX +U+00303 ◌̃ \tilde COMBINING TILDE / NON-SPACING TILDE +U+00304 ◌̄ \bar COMBINING MACRON / NON-SPACING MACRON +U+00305 ◌̅ \overbar COMBINING OVERLINE / NON-SPACING OVERSCORE +U+00306 ◌̆ \breve COMBINING BREVE / NON-SPACING BREVE +U+00307 ◌̇ \dot COMBINING DOT ABOVE / NON-SPACING DOT ABOVE +U+00308 ◌̈ \ddot COMBINING DIAERESIS / NON-SPACING DIAERESIS +U+00309 ◌̉ \ovhook COMBINING HOOK ABOVE / NON-SPACING HOOK ABOVE +U+0030A ◌̊ \ocirc COMBINING RING ABOVE / NON-SPACING RING ABOVE +U+0030B ◌̋ \H COMBINING DOUBLE ACUTE ACCENT / NON-SPACING DOUBLE ACUTE +U+0030C ◌̌ \check COMBINING CARON / NON-SPACING HACEK +U+00310 ◌̐ \candra COMBINING CANDRABINDU / NON-SPACING CANDRABINDU +U+00312 ◌̒ \oturnedcomma COMBINING TURNED COMMA ABOVE / NON-SPACING TURNED COMMA ABOVE +U+00315 ◌̕ \ocommatopright COMBINING COMMA ABOVE RIGHT / NON-SPACING COMMA ABOVE RIGHT +U+0031A ◌̚ \droang COMBINING LEFT ANGLE ABOVE / NON-SPACING LEFT ANGLE ABOVE +U+00321 ◌̡ \palh COMBINING PALATALIZED HOOK BELOW / NON-SPACING PALATALIZED HOOK BELOW +U+00322 ◌̢ \rh COMBINING RETROFLEX HOOK BELOW / NON-SPACING RETROFLEX HOOK BELOW +U+00327 ◌̧ \c COMBINING CEDILLA / NON-SPACING CEDILLA +U+00328 ◌̨ \k COMBINING OGONEK / NON-SPACING OGONEK +U+0032A ◌̪ \sbbrg COMBINING BRIDGE BELOW / NON-SPACING BRIDGE BELOW +U+00330 ◌̰ \wideutilde COMBINING TILDE BELOW / NON-SPACING TILDE BELOW +U+00332 ◌̲ \underbar COMBINING LOW LINE / NON-SPACING UNDERSCORE +U+00336 ◌̶ \strike, \sout COMBINING LONG STROKE OVERLAY / NON-SPACING LONG BAR OVERLAY +U+00338 ◌̸ \not COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY +U+0034D ◌͍ \underleftrightarrow COMBINING LEFT RIGHT ARROW BELOW +U+00391 Α \Alpha GREEK CAPITAL LETTER ALPHA +U+00392 Β \Beta GREEK CAPITAL LETTER BETA +U+00393 Γ \Gamma GREEK CAPITAL LETTER GAMMA +U+00394 Δ \Delta GREEK CAPITAL LETTER DELTA +U+00395 Ε \Epsilon GREEK CAPITAL LETTER EPSILON +U+00396 Ζ \Zeta GREEK CAPITAL LETTER ZETA +U+00397 Η \Eta GREEK CAPITAL LETTER ETA +U+00398 Θ \Theta GREEK CAPITAL LETTER THETA +U+00399 Ι \Iota GREEK CAPITAL LETTER IOTA +U+0039A Κ \Kappa GREEK CAPITAL LETTER KAPPA +U+0039B Λ \Lambda GREEK CAPITAL LETTER LAMDA / GREEK CAPITAL LETTER LAMBDA +U+0039C Μ \upMu GREEK CAPITAL LETTER MU +U+0039D Ν \upNu GREEK CAPITAL LETTER NU +U+0039E Ξ \Xi GREEK CAPITAL LETTER XI +U+0039F Ο \upOmicron GREEK CAPITAL LETTER OMICRON +U+003A0 Π \Pi GREEK CAPITAL LETTER PI +U+003A1 Ρ \Rho GREEK CAPITAL LETTER RHO +U+003A3 Σ \Sigma GREEK CAPITAL LETTER SIGMA +U+003A4 Τ \Tau GREEK CAPITAL LETTER TAU +U+003A5 Υ \Upsilon GREEK CAPITAL LETTER UPSILON +U+003A6 Φ \Phi GREEK CAPITAL LETTER PHI +U+003A7 Χ \Chi GREEK CAPITAL LETTER CHI +U+003A8 Ψ \Psi GREEK CAPITAL LETTER PSI +U+003A9 Ω \Omega GREEK CAPITAL LETTER OMEGA +U+003B1 α \alpha GREEK SMALL LETTER ALPHA +U+003B2 β \beta GREEK SMALL LETTER BETA +U+003B3 γ \gamma GREEK SMALL LETTER GAMMA +U+003B4 δ \delta GREEK SMALL LETTER DELTA +U+003B5 ε \upepsilon, \varepsilon GREEK SMALL LETTER EPSILON +U+003B6 ζ \zeta GREEK SMALL LETTER ZETA +U+003B7 η \eta GREEK SMALL LETTER ETA +U+003B8 θ \theta GREEK SMALL LETTER THETA +U+003B9 ι \iota GREEK SMALL LETTER IOTA +U+003BA κ \kappa GREEK SMALL LETTER KAPPA +U+003BB λ \lambda GREEK SMALL LETTER LAMDA / GREEK SMALL LETTER LAMBDA +U+003BC μ \mu GREEK SMALL LETTER MU +U+003BD ν \nu GREEK SMALL LETTER NU +U+003BE ξ \xi GREEK SMALL LETTER XI +U+003BF ο \upomicron GREEK SMALL LETTER OMICRON +U+003C0 π \pi GREEK SMALL LETTER PI +U+003C1 ρ \rho GREEK SMALL LETTER RHO +U+003C2 ς \varsigma GREEK SMALL LETTER FINAL SIGMA +U+003C3 σ \sigma GREEK SMALL LETTER SIGMA +U+003C4 τ \tau GREEK SMALL LETTER TAU +U+003C5 υ \upsilon GREEK SMALL LETTER UPSILON +U+003C6 φ \varphi GREEK SMALL LETTER PHI +U+003C7 χ \chi GREEK SMALL LETTER CHI +U+003C8 ψ \psi GREEK SMALL LETTER PSI +U+003C9 ω \omega GREEK SMALL LETTER OMEGA +U+003D0 ϐ \upvarbeta GREEK BETA SYMBOL / GREEK SMALL LETTER CURLED BETA +U+003D1 ϑ \vartheta GREEK THETA SYMBOL / GREEK SMALL LETTER SCRIPT THETA +U+003D5 ϕ \phi GREEK PHI SYMBOL / GREEK SMALL LETTER SCRIPT PHI +U+003D6 ϖ \varpi GREEK PI SYMBOL / GREEK SMALL LETTER OMEGA PI +U+003D8 Ϙ \upoldKoppa GREEK LETTER ARCHAIC KOPPA +U+003D9 ϙ \upoldkoppa GREEK SMALL LETTER ARCHAIC KOPPA +U+003DA Ϛ \Stigma GREEK LETTER STIGMA / GREEK CAPITAL LETTER STIGMA +U+003DB ϛ \upstigma GREEK SMALL LETTER STIGMA +U+003DC Ϝ \Digamma GREEK LETTER DIGAMMA / GREEK CAPITAL LETTER DIGAMMA +U+003DD ϝ \digamma GREEK SMALL LETTER DIGAMMA +U+003DE Ϟ \Koppa GREEK LETTER KOPPA / GREEK CAPITAL LETTER KOPPA +U+003DF ϟ \upkoppa GREEK SMALL LETTER KOPPA +U+003E0 Ϡ \Sampi GREEK LETTER SAMPI / GREEK CAPITAL LETTER SAMPI +U+003E1 ϡ \upsampi GREEK SMALL LETTER SAMPI +U+003F0 ϰ \varkappa GREEK KAPPA SYMBOL / GREEK SMALL LETTER SCRIPT KAPPA +U+003F1 ϱ \varrho GREEK RHO SYMBOL / GREEK SMALL LETTER TAILED RHO +U+003F4 ϴ \varTheta GREEK CAPITAL THETA SYMBOL +U+003F5 ϵ \epsilon GREEK LUNATE EPSILON SYMBOL +U+003F6 ϶ \backepsilon GREEK REVERSED LUNATE EPSILON SYMBOL +U+01D2C ᴬ \^A MODIFIER LETTER CAPITAL A +U+01D2E ᴮ \^B MODIFIER LETTER CAPITAL B +U+01D30 ᴰ \^D MODIFIER LETTER CAPITAL D +U+01D31 ᴱ \^E MODIFIER LETTER CAPITAL E +U+01D33 ᴳ \^G MODIFIER LETTER CAPITAL G +U+01D34 ᴴ \^H MODIFIER LETTER CAPITAL H +U+01D35 ᴵ \^I MODIFIER LETTER CAPITAL I +U+01D36 ᴶ \^J MODIFIER LETTER CAPITAL J +U+01D37 ᴷ \^K MODIFIER LETTER CAPITAL K +U+01D38 ᴸ \^L MODIFIER LETTER CAPITAL L +U+01D39 ᴹ \^M MODIFIER LETTER CAPITAL M +U+01D3A ᴺ \^N MODIFIER LETTER CAPITAL N +U+01D3C ᴼ \^O MODIFIER LETTER CAPITAL O +U+01D3E ᴾ \^P MODIFIER LETTER CAPITAL P +U+01D3F ᴿ \^R MODIFIER LETTER CAPITAL R +U+01D40 ᵀ \^T MODIFIER LETTER CAPITAL T +U+01D41 ᵁ \^U MODIFIER LETTER CAPITAL U +U+01D42 ᵂ \^W MODIFIER LETTER CAPITAL W +U+01D43 ᵃ \^a MODIFIER LETTER SMALL A +U+01D45 ᵅ \^alpha MODIFIER LETTER SMALL ALPHA +U+01D47 ᵇ \^b MODIFIER LETTER SMALL B +U+01D48 ᵈ \^d MODIFIER LETTER SMALL D +U+01D49 ᵉ \^e MODIFIER LETTER SMALL E +U+01D4B ᵋ \^epsilon MODIFIER LETTER SMALL OPEN E +U+01D4D ᵍ \^g MODIFIER LETTER SMALL G +U+01D4F ᵏ \^k MODIFIER LETTER SMALL K +U+01D50 ᵐ \^m MODIFIER LETTER SMALL M +U+01D52 ᵒ \^o MODIFIER LETTER SMALL O +U+01D56 ᵖ \^p MODIFIER LETTER SMALL P +U+01D57 ᵗ \^t MODIFIER LETTER SMALL T +U+01D58 ᵘ \^u MODIFIER LETTER SMALL U +U+01D5B ᵛ \^v MODIFIER LETTER SMALL V +U+01D5D ᵝ \^beta MODIFIER LETTER SMALL BETA +U+01D5E ᵞ \^gamma MODIFIER LETTER SMALL GREEK GAMMA +U+01D5F ᵟ \^delta MODIFIER LETTER SMALL DELTA +U+01D60 ᵠ \^phi MODIFIER LETTER SMALL GREEK PHI +U+01D61 ᵡ \^chi MODIFIER LETTER SMALL CHI +U+01D62 ᵢ \_i LATIN SUBSCRIPT SMALL LETTER I +U+01D63 ᵣ \_r LATIN SUBSCRIPT SMALL LETTER R +U+01D64 ᵤ \_u LATIN SUBSCRIPT SMALL LETTER U +U+01D65 ᵥ \_v LATIN SUBSCRIPT SMALL LETTER V +U+01D66 ᵦ \_beta GREEK SUBSCRIPT SMALL LETTER BETA +U+01D67 ᵧ \_gamma GREEK SUBSCRIPT SMALL LETTER GAMMA +U+01D68 ᵨ \_rho GREEK SUBSCRIPT SMALL LETTER RHO +U+01D69 ᵩ \_phi GREEK SUBSCRIPT SMALL LETTER PHI +U+01D6A ᵪ \_chi GREEK SUBSCRIPT SMALL LETTER CHI +U+01D9C ᶜ \^c MODIFIER LETTER SMALL C +U+01DA0 ᶠ \^f MODIFIER LETTER SMALL F +U+01DA5 ᶥ \^iota MODIFIER LETTER SMALL IOTA +U+01DB2 ᶲ \^Phi MODIFIER LETTER SMALL PHI +U+01DBB ᶻ \^z MODIFIER LETTER SMALL Z +U+01DBF ᶿ \^theta MODIFIER LETTER SMALL THETA +U+02002 \enspace EN SPACE +U+02003 \quad EM SPACE +U+02005 \thickspace FOUR-PER-EM SPACE +U+02009 \thinspace THIN SPACE +U+0200A \hspace HAIR SPACE +U+02013 – \endash EN DASH +U+02014 — \emdash EM DASH +U+02016 ‖ \Vert DOUBLE VERTICAL LINE / DOUBLE VERTICAL BAR +U+02018 ‘ \lq LEFT SINGLE QUOTATION MARK / SINGLE TURNED COMMA QUOTATION MARK +U+02019 ’ \rq RIGHT SINGLE QUOTATION MARK / SINGLE COMMA QUOTATION MARK +U+0201B ‛ \reapos SINGLE HIGH-REVERSED-9 QUOTATION MARK / SINGLE REVERSED COMMA QUOTATION MARK +U+0201C “ \quotedblleft LEFT DOUBLE QUOTATION MARK / DOUBLE TURNED COMMA QUOTATION MARK +U+0201D ” \quotedblright RIGHT DOUBLE QUOTATION MARK / DOUBLE COMMA QUOTATION MARK +U+02020 † \dagger DAGGER +U+02021 ‡ \ddagger DOUBLE DAGGER +U+02022 • \bullet BULLET +U+02026 … \dots, \ldots HORIZONTAL ELLIPSIS +U+02030 ‰ \perthousand PER MILLE SIGN +U+02031 ‱ \pertenthousand PER TEN THOUSAND SIGN +U+02032 ′ \prime PRIME +U+02033 ″ \pprime DOUBLE PRIME +U+02034 ‴ \ppprime TRIPLE PRIME +U+02035 ‵ \backprime REVERSED PRIME +U+02036 ‶ \backpprime REVERSED DOUBLE PRIME +U+02037 ‷ \backppprime REVERSED TRIPLE PRIME +U+02039 ‹ \guilsinglleft SINGLE LEFT-POINTING ANGLE QUOTATION MARK / LEFT POINTING SINGLE GUILLEMET +U+0203A › \guilsinglright SINGLE RIGHT-POINTING ANGLE QUOTATION MARK / RIGHT POINTING SINGLE GUILLEMET +U+0203C ‼ \:bangbang: DOUBLE EXCLAMATION MARK +U+02040 ⁀ \tieconcat CHARACTER TIE +U+02049 ⁉ \:interrobang: EXCLAMATION QUESTION MARK +U+02057 ⁗ \pppprime QUADRUPLE PRIME +U+0205D ⁝ \tricolon TRICOLON +U+02060 \nolinebreak WORD JOINER +U+02070 ⁰ \^0 SUPERSCRIPT ZERO / SUPERSCRIPT DIGIT ZERO +U+02071 ⁱ \^i SUPERSCRIPT LATIN SMALL LETTER I +U+02074 ⁴ \^4 SUPERSCRIPT FOUR / SUPERSCRIPT DIGIT FOUR +U+02075 ⁵ \^5 SUPERSCRIPT FIVE / SUPERSCRIPT DIGIT FIVE +U+02076 ⁶ \^6 SUPERSCRIPT SIX / SUPERSCRIPT DIGIT SIX +U+02077 ⁷ \^7 SUPERSCRIPT SEVEN / SUPERSCRIPT DIGIT SEVEN +U+02078 ⁸ \^8 SUPERSCRIPT EIGHT / SUPERSCRIPT DIGIT EIGHT +U+02079 ⁹ \^9 SUPERSCRIPT NINE / SUPERSCRIPT DIGIT NINE +U+0207A ⁺ \^+ SUPERSCRIPT PLUS SIGN +U+0207B ⁻ \^- SUPERSCRIPT MINUS / SUPERSCRIPT HYPHEN-MINUS +U+0207C ⁼ \^= SUPERSCRIPT EQUALS SIGN +U+0207D ⁽ \^( SUPERSCRIPT LEFT PARENTHESIS / SUPERSCRIPT OPENING PARENTHESIS +U+0207E ⁾ \^) SUPERSCRIPT RIGHT PARENTHESIS / SUPERSCRIPT CLOSING PARENTHESIS +U+0207F ⁿ \^n SUPERSCRIPT LATIN SMALL LETTER N +U+02080 ₀ \_0 SUBSCRIPT ZERO / SUBSCRIPT DIGIT ZERO +U+02081 ₁ \_1 SUBSCRIPT ONE / SUBSCRIPT DIGIT ONE +U+02082 ₂ \_2 SUBSCRIPT TWO / SUBSCRIPT DIGIT TWO +U+02083 ₃ \_3 SUBSCRIPT THREE / SUBSCRIPT DIGIT THREE +U+02084 ₄ \_4 SUBSCRIPT FOUR / SUBSCRIPT DIGIT FOUR +U+02085 ₅ \_5 SUBSCRIPT FIVE / SUBSCRIPT DIGIT FIVE +U+02086 ₆ \_6 SUBSCRIPT SIX / SUBSCRIPT DIGIT SIX +U+02087 ₇ \_7 SUBSCRIPT SEVEN / SUBSCRIPT DIGIT SEVEN +U+02088 ₈ \_8 SUBSCRIPT EIGHT / SUBSCRIPT DIGIT EIGHT +U+02089 ₉ \_9 SUBSCRIPT NINE / SUBSCRIPT DIGIT NINE +U+0208A ₊ \_+ SUBSCRIPT PLUS SIGN +U+0208B ₋ \_- SUBSCRIPT MINUS / SUBSCRIPT HYPHEN-MINUS +U+0208C ₌ \_= SUBSCRIPT EQUALS SIGN +U+0208D ₍ \_( SUBSCRIPT LEFT PARENTHESIS / SUBSCRIPT OPENING PARENTHESIS +U+0208E ₎ \_) SUBSCRIPT RIGHT PARENTHESIS / SUBSCRIPT CLOSING PARENTHESIS +U+02090 ₐ \_a LATIN SUBSCRIPT SMALL LETTER A +U+02091 ₑ \_e LATIN SUBSCRIPT SMALL LETTER E +U+02092 ₒ \_o LATIN SUBSCRIPT SMALL LETTER O +U+02093 ₓ \_x LATIN SUBSCRIPT SMALL LETTER X +U+02094 ₔ \_schwa LATIN SUBSCRIPT SMALL LETTER SCHWA +U+02095 ₕ \_h LATIN SUBSCRIPT SMALL LETTER H +U+02096 ₖ \_k LATIN SUBSCRIPT SMALL LETTER K +U+02097 ₗ \_l LATIN SUBSCRIPT SMALL LETTER L +U+02098 ₘ \_m LATIN SUBSCRIPT SMALL LETTER M +U+02099 ₙ \_n LATIN SUBSCRIPT SMALL LETTER N +U+0209A ₚ \_p LATIN SUBSCRIPT SMALL LETTER P +U+0209B ₛ \_s LATIN SUBSCRIPT SMALL LETTER S +U+0209C ₜ \_t LATIN SUBSCRIPT SMALL LETTER T +U+020A7 ₧ \pes PESETA SIGN +U+020AC € \euro EURO SIGN +U+020D0 ◌⃐ \leftharpoonaccent COMBINING LEFT HARPOON ABOVE / NON-SPACING LEFT HARPOON ABOVE +U+020D1 ◌⃑ \rightharpoonaccent COMBINING RIGHT HARPOON ABOVE / NON-SPACING RIGHT HARPOON ABOVE +U+020D2 ◌⃒ \vertoverlay COMBINING LONG VERTICAL LINE OVERLAY / NON-SPACING LONG VERTICAL BAR OVERLAY +U+020D6 ◌⃖ \overleftarrow COMBINING LEFT ARROW ABOVE / NON-SPACING LEFT ARROW ABOVE +U+020D7 ◌⃗ \vec COMBINING RIGHT ARROW ABOVE / NON-SPACING RIGHT ARROW ABOVE +U+020DB ◌⃛ \dddot COMBINING THREE DOTS ABOVE / NON-SPACING THREE DOTS ABOVE +U+020DC ◌⃜ \ddddot COMBINING FOUR DOTS ABOVE / NON-SPACING FOUR DOTS ABOVE +U+020DD ◌⃝ \enclosecircle COMBINING ENCLOSING CIRCLE / ENCLOSING CIRCLE +U+020DE ◌⃞ \enclosesquare COMBINING ENCLOSING SQUARE / ENCLOSING SQUARE +U+020DF ◌⃟ \enclosediamond COMBINING ENCLOSING DIAMOND / ENCLOSING DIAMOND +U+020E1 ◌⃡ \overleftrightarrow COMBINING LEFT RIGHT ARROW ABOVE / NON-SPACING LEFT RIGHT ARROW ABOVE +U+020E4 ◌⃤ \enclosetriangle COMBINING ENCLOSING UPWARD POINTING TRIANGLE +U+020E7 ◌⃧ \annuity COMBINING ANNUITY SYMBOL +U+020E8 ◌⃨ \threeunderdot COMBINING TRIPLE UNDERDOT +U+020E9 ◌⃩ \widebridgeabove COMBINING WIDE BRIDGE ABOVE +U+020EC ◌⃬ \underrightharpoondown COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS +U+020ED ◌⃭ \underleftharpoondown COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS +U+020EE ◌⃮ \underleftarrow COMBINING LEFT ARROW BELOW +U+020EF ◌⃯ \underrightarrow COMBINING RIGHT ARROW BELOW +U+020F0 ◌⃰ \asteraccent COMBINING ASTERISK ABOVE +U+02102 ℂ \bbC DOUBLE-STRUCK CAPITAL C / DOUBLE-STRUCK C +U+02107 ℇ \eulermascheroni EULER CONSTANT / EULERS +U+0210A ℊ \scrg SCRIPT SMALL G +U+0210B ℋ \scrH SCRIPT CAPITAL H / SCRIPT H +U+0210C ℌ \frakH BLACK-LETTER CAPITAL H / BLACK-LETTER H +U+0210D ℍ \bbH DOUBLE-STRUCK CAPITAL H / DOUBLE-STRUCK H +U+0210E ℎ \planck PLANCK CONSTANT +U+0210F ℏ \hslash PLANCK CONSTANT OVER TWO PI / PLANCK CONSTANT OVER 2 PI +U+02110 ℐ \scrI SCRIPT CAPITAL I / SCRIPT I +U+02111 ℑ \Im BLACK-LETTER CAPITAL I / BLACK-LETTER I +U+02112 ℒ \scrL SCRIPT CAPITAL L / SCRIPT L +U+02113 ℓ \ell SCRIPT SMALL L +U+02115 ℕ \bbN DOUBLE-STRUCK CAPITAL N / DOUBLE-STRUCK N +U+02116 № \numero NUMERO SIGN / NUMERO +U+02118 ℘ \wp SCRIPT CAPITAL P / SCRIPT P +U+02119 ℙ \bbP DOUBLE-STRUCK CAPITAL P / DOUBLE-STRUCK P +U+0211A ℚ \bbQ DOUBLE-STRUCK CAPITAL Q / DOUBLE-STRUCK Q +U+0211B ℛ \scrR SCRIPT CAPITAL R / SCRIPT R +U+0211C ℜ \Re BLACK-LETTER CAPITAL R / BLACK-LETTER R +U+0211D ℝ \bbR DOUBLE-STRUCK CAPITAL R / DOUBLE-STRUCK R +U+0211E ℞ \xrat PRESCRIPTION TAKE +U+02122 ™ \trademark, \:tm: TRADE MARK SIGN / TRADEMARK +U+02124 ℤ \bbZ DOUBLE-STRUCK CAPITAL Z / DOUBLE-STRUCK Z +U+02126 Ω \ohm OHM SIGN / OHM +U+02127 ℧ \mho INVERTED OHM SIGN / MHO +U+02128 ℨ \frakZ BLACK-LETTER CAPITAL Z / BLACK-LETTER Z +U+02129 ℩ \turnediota TURNED GREEK SMALL LETTER IOTA +U+0212B Å \Angstrom ANGSTROM SIGN / ANGSTROM UNIT +U+0212C ℬ \scrB SCRIPT CAPITAL B / SCRIPT B +U+0212D ℭ \frakC BLACK-LETTER CAPITAL C / BLACK-LETTER C +U+0212F ℯ \scre, \euler SCRIPT SMALL E +U+02130 ℰ \scrE SCRIPT CAPITAL E / SCRIPT E +U+02131 ℱ \scrF SCRIPT CAPITAL F / SCRIPT F +U+02132 Ⅎ \Finv TURNED CAPITAL F / TURNED F +U+02133 ℳ \scrM SCRIPT CAPITAL M / SCRIPT M +U+02134 ℴ \scro SCRIPT SMALL O +U+02135 ℵ \aleph ALEF SYMBOL / FIRST TRANSFINITE CARDINAL +U+02136 ℶ \beth BET SYMBOL / SECOND TRANSFINITE CARDINAL +U+02137 ℷ \gimel GIMEL SYMBOL / THIRD TRANSFINITE CARDINAL +U+02138 ℸ \daleth DALET SYMBOL / FOURTH TRANSFINITE CARDINAL +U+02139 ℹ \:information_source: INFORMATION SOURCE +U+0213C ℼ \bbpi DOUBLE-STRUCK SMALL PI +U+0213D ℽ \bbgamma DOUBLE-STRUCK SMALL GAMMA +U+0213E ℾ \bbGamma DOUBLE-STRUCK CAPITAL GAMMA +U+0213F ℿ \bbPi DOUBLE-STRUCK CAPITAL PI +U+02140 ⅀ \bbsum DOUBLE-STRUCK N-ARY SUMMATION +U+02141 ⅁ \Game TURNED SANS-SERIF CAPITAL G +U+02142 ⅂ \sansLturned TURNED SANS-SERIF CAPITAL L +U+02143 ⅃ \sansLmirrored REVERSED SANS-SERIF CAPITAL L +U+02144 ⅄ \Yup TURNED SANS-SERIF CAPITAL Y +U+02145 ⅅ \bbiD DOUBLE-STRUCK ITALIC CAPITAL D +U+02146 ⅆ \bbid DOUBLE-STRUCK ITALIC SMALL D +U+02147 ⅇ \bbie DOUBLE-STRUCK ITALIC SMALL E +U+02148 ⅈ \bbii DOUBLE-STRUCK ITALIC SMALL I +U+02149 ⅉ \bbij DOUBLE-STRUCK ITALIC SMALL J +U+0214A ⅊ \PropertyLine PROPERTY LINE +U+0214B ⅋ \upand TURNED AMPERSAND +U+02150 ⅐ \1/7 VULGAR FRACTION ONE SEVENTH +U+02151 ⅑ \1/9 VULGAR FRACTION ONE NINTH +U+02152 ⅒ \1/10 VULGAR FRACTION ONE TENTH +U+02153 ⅓ \1/3 VULGAR FRACTION ONE THIRD / FRACTION ONE THIRD +U+02154 ⅔ \2/3 VULGAR FRACTION TWO THIRDS / FRACTION TWO THIRDS +U+02155 ⅕ \1/5 VULGAR FRACTION ONE FIFTH / FRACTION ONE FIFTH +U+02156 ⅖ \2/5 VULGAR FRACTION TWO FIFTHS / FRACTION TWO FIFTHS +U+02157 ⅗ \3/5 VULGAR FRACTION THREE FIFTHS / FRACTION THREE FIFTHS +U+02158 ⅘ \4/5 VULGAR FRACTION FOUR FIFTHS / FRACTION FOUR FIFTHS +U+02159 ⅙ \1/6 VULGAR FRACTION ONE SIXTH / FRACTION ONE SIXTH +U+0215A ⅚ \5/6 VULGAR FRACTION FIVE SIXTHS / FRACTION FIVE SIXTHS +U+0215B ⅛ \1/8 VULGAR FRACTION ONE EIGHTH / FRACTION ONE EIGHTH +U+0215C ⅜ \3/8 VULGAR FRACTION THREE EIGHTHS / FRACTION THREE EIGHTHS +U+0215D ⅝ \5/8 VULGAR FRACTION FIVE EIGHTHS / FRACTION FIVE EIGHTHS +U+0215E ⅞ \7/8 VULGAR FRACTION SEVEN EIGHTHS / FRACTION SEVEN EIGHTHS +U+0215F ⅟ \1/ FRACTION NUMERATOR ONE +U+02189 ↉ \0/3 VULGAR FRACTION ZERO THIRDS +U+02190 ← \leftarrow LEFTWARDS ARROW / LEFT ARROW +U+02191 ↑ \uparrow UPWARDS ARROW / UP ARROW +U+02192 → \to, \rightarrow RIGHTWARDS ARROW / RIGHT ARROW +U+02193 ↓ \downarrow DOWNWARDS ARROW / DOWN ARROW +U+02194 ↔ \leftrightarrow, \:left_right_arrow: LEFT RIGHT ARROW +U+02195 ↕ \updownarrow, \:arrow_up_down: UP DOWN ARROW +U+02196 ↖ \nwarrow, \:arrow_upper_left: NORTH WEST ARROW / UPPER LEFT ARROW +U+02197 ↗ \nearrow, \:arrow_upper_right: NORTH EAST ARROW / UPPER RIGHT ARROW +U+02198 ↘ \searrow, \:arrow_lower_right: SOUTH EAST ARROW / LOWER RIGHT ARROW +U+02199 ↙ \swarrow, \:arrow_lower_left: SOUTH WEST ARROW / LOWER LEFT ARROW +U+0219A ↚ \nleftarrow LEFTWARDS ARROW WITH STROKE / LEFT ARROW WITH STROKE +U+0219B ↛ \nrightarrow RIGHTWARDS ARROW WITH STROKE / RIGHT ARROW WITH STROKE +U+0219C ↜ \leftwavearrow LEFTWARDS WAVE ARROW / LEFT WAVE ARROW +U+0219D ↝ \rightwavearrow RIGHTWARDS WAVE ARROW / RIGHT WAVE ARROW +U+0219E ↞ \twoheadleftarrow LEFTWARDS TWO HEADED ARROW / LEFT TWO HEADED ARROW +U+0219F ↟ \twoheaduparrow UPWARDS TWO HEADED ARROW / UP TWO HEADED ARROW +U+021A0 ↠ \twoheadrightarrow RIGHTWARDS TWO HEADED ARROW / RIGHT TWO HEADED ARROW +U+021A1 ↡ \twoheaddownarrow DOWNWARDS TWO HEADED ARROW / DOWN TWO HEADED ARROW +U+021A2 ↢ \leftarrowtail LEFTWARDS ARROW WITH TAIL / LEFT ARROW WITH TAIL +U+021A3 ↣ \rightarrowtail RIGHTWARDS ARROW WITH TAIL / RIGHT ARROW WITH TAIL +U+021A4 ↤ \mapsfrom LEFTWARDS ARROW FROM BAR / LEFT ARROW FROM BAR +U+021A5 ↥ \mapsup UPWARDS ARROW FROM BAR / UP ARROW FROM BAR +U+021A6 ↦ \mapsto RIGHTWARDS ARROW FROM BAR / RIGHT ARROW FROM BAR +U+021A7 ↧ \mapsdown DOWNWARDS ARROW FROM BAR / DOWN ARROW FROM BAR +U+021A8 ↨ \updownarrowbar UP DOWN ARROW WITH BASE +U+021A9 ↩ \hookleftarrow, \:leftwards_arrow_with_hook: LEFTWARDS ARROW WITH HOOK / LEFT ARROW WITH HOOK +U+021AA ↪ \hookrightarrow, \:arrow_right_hook: RIGHTWARDS ARROW WITH HOOK / RIGHT ARROW WITH HOOK +U+021AB ↫ \looparrowleft LEFTWARDS ARROW WITH LOOP / LEFT ARROW WITH LOOP +U+021AC ↬ \looparrowright RIGHTWARDS ARROW WITH LOOP / RIGHT ARROW WITH LOOP +U+021AD ↭ \leftrightsquigarrow LEFT RIGHT WAVE ARROW +U+021AE ↮ \nleftrightarrow LEFT RIGHT ARROW WITH STROKE +U+021AF ↯ \downzigzagarrow DOWNWARDS ZIGZAG ARROW / DOWN ZIGZAG ARROW +U+021B0 ↰ \Lsh UPWARDS ARROW WITH TIP LEFTWARDS / UP ARROW WITH TIP LEFT +U+021B1 ↱ \Rsh UPWARDS ARROW WITH TIP RIGHTWARDS / UP ARROW WITH TIP RIGHT +U+021B2 ↲ \Ldsh DOWNWARDS ARROW WITH TIP LEFTWARDS / DOWN ARROW WITH TIP LEFT +U+021B3 ↳ \Rdsh DOWNWARDS ARROW WITH TIP RIGHTWARDS / DOWN ARROW WITH TIP RIGHT +U+021B4 ↴ \linefeed RIGHTWARDS ARROW WITH CORNER DOWNWARDS / RIGHT ARROW WITH CORNER DOWN +U+021B5 ↵ \carriagereturn DOWNWARDS ARROW WITH CORNER LEFTWARDS / DOWN ARROW WITH CORNER LEFT +U+021B6 ↶ \curvearrowleft ANTICLOCKWISE TOP SEMICIRCLE ARROW +U+021B7 ↷ \curvearrowright CLOCKWISE TOP SEMICIRCLE ARROW +U+021B8 ↸ \barovernorthwestarrow NORTH WEST ARROW TO LONG BAR / UPPER LEFT ARROW TO LONG BAR +U+021B9 ↹ \barleftarrowrightarrowbar LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR / LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR +U+021BA ↺ \circlearrowleft ANTICLOCKWISE OPEN CIRCLE ARROW +U+021BB ↻ \circlearrowright CLOCKWISE OPEN CIRCLE ARROW +U+021BC ↼ \leftharpoonup LEFTWARDS HARPOON WITH BARB UPWARDS / LEFT HARPOON WITH BARB UP +U+021BD ↽ \leftharpoondown LEFTWARDS HARPOON WITH BARB DOWNWARDS / LEFT HARPOON WITH BARB DOWN +U+021BE ↾ \upharpoonright UPWARDS HARPOON WITH BARB RIGHTWARDS / UP HARPOON WITH BARB RIGHT +U+021BF ↿ \upharpoonleft UPWARDS HARPOON WITH BARB LEFTWARDS / UP HARPOON WITH BARB LEFT +U+021C0 ⇀ \rightharpoonup RIGHTWARDS HARPOON WITH BARB UPWARDS / RIGHT HARPOON WITH BARB UP +U+021C1 ⇁ \rightharpoondown RIGHTWARDS HARPOON WITH BARB DOWNWARDS / RIGHT HARPOON WITH BARB DOWN +U+021C2 ⇂ \downharpoonright DOWNWARDS HARPOON WITH BARB RIGHTWARDS / DOWN HARPOON WITH BARB RIGHT +U+021C3 ⇃ \downharpoonleft DOWNWARDS HARPOON WITH BARB LEFTWARDS / DOWN HARPOON WITH BARB LEFT +U+021C4 ⇄ \rightleftarrows RIGHTWARDS ARROW OVER LEFTWARDS ARROW / RIGHT ARROW OVER LEFT ARROW +U+021C5 ⇅ \dblarrowupdown UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW / UP ARROW LEFT OF DOWN ARROW +U+021C6 ⇆ \leftrightarrows LEFTWARDS ARROW OVER RIGHTWARDS ARROW / LEFT ARROW OVER RIGHT ARROW +U+021C7 ⇇ \leftleftarrows LEFTWARDS PAIRED ARROWS / LEFT PAIRED ARROWS +U+021C8 ⇈ \upuparrows UPWARDS PAIRED ARROWS / UP PAIRED ARROWS +U+021C9 ⇉ \rightrightarrows RIGHTWARDS PAIRED ARROWS / RIGHT PAIRED ARROWS +U+021CA ⇊ \downdownarrows DOWNWARDS PAIRED ARROWS / DOWN PAIRED ARROWS +U+021CB ⇋ \leftrightharpoons LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON / LEFT HARPOON OVER RIGHT HARPOON +U+021CC ⇌ \rightleftharpoons RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON / RIGHT HARPOON OVER LEFT HARPOON +U+021CD ⇍ \nLeftarrow LEFTWARDS DOUBLE ARROW WITH STROKE / LEFT DOUBLE ARROW WITH STROKE +U+021CE ⇎ \nLeftrightarrow LEFT RIGHT DOUBLE ARROW WITH STROKE +U+021CF ⇏ \nRightarrow RIGHTWARDS DOUBLE ARROW WITH STROKE / RIGHT DOUBLE ARROW WITH STROKE +U+021D0 ⇐ \Leftarrow LEFTWARDS DOUBLE ARROW / LEFT DOUBLE ARROW +U+021D1 ⇑ \Uparrow UPWARDS DOUBLE ARROW / UP DOUBLE ARROW +U+021D2 ⇒ \Rightarrow RIGHTWARDS DOUBLE ARROW / RIGHT DOUBLE ARROW +U+021D3 ⇓ \Downarrow DOWNWARDS DOUBLE ARROW / DOWN DOUBLE ARROW +U+021D4 ⇔ \Leftrightarrow LEFT RIGHT DOUBLE ARROW +U+021D5 ⇕ \Updownarrow UP DOWN DOUBLE ARROW +U+021D6 ⇖ \Nwarrow NORTH WEST DOUBLE ARROW / UPPER LEFT DOUBLE ARROW +U+021D7 ⇗ \Nearrow NORTH EAST DOUBLE ARROW / UPPER RIGHT DOUBLE ARROW +U+021D8 ⇘ \Searrow SOUTH EAST DOUBLE ARROW / LOWER RIGHT DOUBLE ARROW +U+021D9 ⇙ \Swarrow SOUTH WEST DOUBLE ARROW / LOWER LEFT DOUBLE ARROW +U+021DA ⇚ \Lleftarrow LEFTWARDS TRIPLE ARROW / LEFT TRIPLE ARROW +U+021DB ⇛ \Rrightarrow RIGHTWARDS TRIPLE ARROW / RIGHT TRIPLE ARROW +U+021DC ⇜ \leftsquigarrow LEFTWARDS SQUIGGLE ARROW / LEFT SQUIGGLE ARROW +U+021DD ⇝ \rightsquigarrow RIGHTWARDS SQUIGGLE ARROW / RIGHT SQUIGGLE ARROW +U+021DE ⇞ \nHuparrow UPWARDS ARROW WITH DOUBLE STROKE / UP ARROW WITH DOUBLE STROKE +U+021DF ⇟ \nHdownarrow DOWNWARDS ARROW WITH DOUBLE STROKE / DOWN ARROW WITH DOUBLE STROKE +U+021E0 ⇠ \leftdasharrow LEFTWARDS DASHED ARROW / LEFT DASHED ARROW +U+021E1 ⇡ \updasharrow UPWARDS DASHED ARROW / UP DASHED ARROW +U+021E2 ⇢ \rightdasharrow RIGHTWARDS DASHED ARROW / RIGHT DASHED ARROW +U+021E3 ⇣ \downdasharrow DOWNWARDS DASHED ARROW / DOWN DASHED ARROW +U+021E4 ⇤ \barleftarrow LEFTWARDS ARROW TO BAR / LEFT ARROW TO BAR +U+021E5 ⇥ \rightarrowbar RIGHTWARDS ARROW TO BAR / RIGHT ARROW TO BAR +U+021E6 ⇦ \leftwhitearrow LEFTWARDS WHITE ARROW / WHITE LEFT ARROW +U+021E7 ⇧ \upwhitearrow UPWARDS WHITE ARROW / WHITE UP ARROW +U+021E8 ⇨ \rightwhitearrow RIGHTWARDS WHITE ARROW / WHITE RIGHT ARROW +U+021E9 ⇩ \downwhitearrow DOWNWARDS WHITE ARROW / WHITE DOWN ARROW +U+021EA ⇪ \whitearrowupfrombar UPWARDS WHITE ARROW FROM BAR / WHITE UP ARROW FROM BAR +U+021F4 ⇴ \circleonrightarrow RIGHT ARROW WITH SMALL CIRCLE +U+021F5 ⇵ \DownArrowUpArrow DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW +U+021F6 ⇶ \rightthreearrows THREE RIGHTWARDS ARROWS +U+021F7 ⇷ \nvleftarrow LEFTWARDS ARROW WITH VERTICAL STROKE +U+021F8 ⇸ \nvrightarrow RIGHTWARDS ARROW WITH VERTICAL STROKE +U+021F9 ⇹ \nvleftrightarrow LEFT RIGHT ARROW WITH VERTICAL STROKE +U+021FA ⇺ \nVleftarrow LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE +U+021FB ⇻ \nVrightarrow RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE +U+021FC ⇼ \nVleftrightarrow LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE +U+021FD ⇽ \leftarrowtriangle LEFTWARDS OPEN-HEADED ARROW +U+021FE ⇾ \rightarrowtriangle RIGHTWARDS OPEN-HEADED ARROW +U+021FF ⇿ \leftrightarrowtriangle LEFT RIGHT OPEN-HEADED ARROW +U+02200 ∀ \forall FOR ALL +U+02201 ∁ \complement COMPLEMENT +U+02202 ∂ \partial PARTIAL DIFFERENTIAL +U+02203 ∃ \exists THERE EXISTS +U+02204 ∄ \nexists THERE DOES NOT EXIST +U+02205 ∅ \varnothing, \emptyset EMPTY SET +U+02206 ∆ \increment INCREMENT +U+02207 ∇ \del, \nabla NABLA +U+02208 ∈ \in ELEMENT OF +U+02209 ∉ \notin NOT AN ELEMENT OF +U+0220A ∊ \smallin SMALL ELEMENT OF +U+0220B ∋ \ni CONTAINS AS MEMBER +U+0220C ∌ \nni DOES NOT CONTAIN AS MEMBER +U+0220D ∍ \smallni SMALL CONTAINS AS MEMBER +U+0220E ∎ \QED END OF PROOF +U+0220F ∏ \prod N-ARY PRODUCT +U+02210 ∐ \coprod N-ARY COPRODUCT +U+02211 ∑ \sum N-ARY SUMMATION +U+02212 − \minus MINUS SIGN +U+02213 ∓ \mp MINUS-OR-PLUS SIGN +U+02214 ∔ \dotplus DOT PLUS +U+02216 ∖ \setminus SET MINUS +U+02217 ∗ \ast ASTERISK OPERATOR +U+02218 ∘ \circ RING OPERATOR +U+02219 ∙ \vysmblkcircle BULLET OPERATOR +U+0221A √ \surd, \sqrt SQUARE ROOT +U+0221B ∛ \cbrt CUBE ROOT +U+0221C ∜ \fourthroot FOURTH ROOT +U+0221D ∝ \propto PROPORTIONAL TO +U+0221E ∞ \infty INFINITY +U+0221F ∟ \rightangle RIGHT ANGLE +U+02220 ∠ \angle ANGLE +U+02221 ∡ \measuredangle MEASURED ANGLE +U+02222 ∢ \sphericalangle SPHERICAL ANGLE +U+02223 ∣ \mid DIVIDES +U+02224 ∤ \nmid DOES NOT DIVIDE +U+02225 ∥ \parallel PARALLEL TO +U+02226 ∦ \nparallel NOT PARALLEL TO +U+02227 ∧ \wedge LOGICAL AND +U+02228 ∨ \vee LOGICAL OR +U+02229 ∩ \cap INTERSECTION +U+0222A ∪ \cup UNION +U+0222B ∫ \int INTEGRAL +U+0222C ∬ \iint DOUBLE INTEGRAL +U+0222D ∭ \iiint TRIPLE INTEGRAL +U+0222E ∮ \oint CONTOUR INTEGRAL +U+0222F ∯ \oiint SURFACE INTEGRAL +U+02230 ∰ \oiiint VOLUME INTEGRAL +U+02231 ∱ \clwintegral CLOCKWISE INTEGRAL +U+02232 ∲ \varointclockwise CLOCKWISE CONTOUR INTEGRAL +U+02233 ∳ \ointctrclockwise ANTICLOCKWISE CONTOUR INTEGRAL +U+02234 ∴ \therefore THEREFORE +U+02235 ∵ \because BECAUSE +U+02237 ∷ \Colon PROPORTION +U+02238 ∸ \dotminus DOT MINUS +U+0223A ∺ \dotsminusdots GEOMETRIC PROPORTION +U+0223B ∻ \kernelcontraction HOMOTHETIC +U+0223C ∼ \sim TILDE OPERATOR +U+0223D ∽ \backsim REVERSED TILDE +U+0223E ∾ \lazysinv INVERTED LAZY S +U+0223F ∿ \sinewave SINE WAVE +U+02240 ≀ \wr WREATH PRODUCT +U+02241 ≁ \nsim NOT TILDE +U+02242 ≂ \eqsim MINUS TILDE +U+02242 + U+00338 ≂̸ \neqsim MINUS TILDE + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY +U+02243 ≃ \simeq ASYMPTOTICALLY EQUAL TO +U+02244 ≄ \nsime NOT ASYMPTOTICALLY EQUAL TO +U+02245 ≅ \cong APPROXIMATELY EQUAL TO +U+02246 ≆ \approxnotequal APPROXIMATELY BUT NOT ACTUALLY EQUAL TO +U+02247 ≇ \ncong NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO +U+02248 ≈ \approx ALMOST EQUAL TO +U+02249 ≉ \napprox NOT ALMOST EQUAL TO +U+0224A ≊ \approxeq ALMOST EQUAL OR EQUAL TO +U+0224B ≋ \tildetrpl TRIPLE TILDE +U+0224C ≌ \allequal ALL EQUAL TO +U+0224D ≍ \asymp EQUIVALENT TO +U+0224E ≎ \Bumpeq GEOMETRICALLY EQUIVALENT TO +U+0224E + U+00338 ≎̸ \nBumpeq GEOMETRICALLY EQUIVALENT TO + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY +U+0224F ≏ \bumpeq DIFFERENCE BETWEEN +U+0224F + U+00338 ≏̸ \nbumpeq DIFFERENCE BETWEEN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY +U+02250 ≐ \doteq APPROACHES THE LIMIT +U+02251 ≑ \Doteq GEOMETRICALLY EQUAL TO +U+02252 ≒ \fallingdotseq APPROXIMATELY EQUAL TO OR THE IMAGE OF +U+02253 ≓ \risingdotseq IMAGE OF OR APPROXIMATELY EQUAL TO +U+02254 ≔ \coloneq COLON EQUALS / COLON EQUAL +U+02255 ≕ \eqcolon EQUALS COLON / EQUAL COLON +U+02256 ≖ \eqcirc RING IN EQUAL TO +U+02257 ≗ \circeq RING EQUAL TO +U+02258 ≘ \arceq CORRESPONDS TO +U+02259 ≙ \wedgeq ESTIMATES +U+0225A ≚ \veeeq EQUIANGULAR TO +U+0225B ≛ \starequal STAR EQUALS +U+0225C ≜ \triangleq DELTA EQUAL TO +U+0225D ≝ \eqdef EQUAL TO BY DEFINITION +U+0225E ≞ \measeq MEASURED BY +U+0225F ≟ \questeq QUESTIONED EQUAL TO +U+02260 ≠ \ne NOT EQUAL TO +U+02261 ≡ \equiv IDENTICAL TO +U+02262 ≢ \nequiv NOT IDENTICAL TO +U+02263 ≣ \Equiv STRICTLY EQUIVALENT TO +U+02264 ≤ \le, \leq LESS-THAN OR EQUAL TO / LESS THAN OR EQUAL TO +U+02265 ≥ \ge, \geq GREATER-THAN OR EQUAL TO / GREATER THAN OR EQUAL TO +U+02266 ≦ \leqq LESS-THAN OVER EQUAL TO / LESS THAN OVER EQUAL TO +U+02267 ≧ \geqq GREATER-THAN OVER EQUAL TO / GREATER THAN OVER EQUAL TO +U+02268 ≨ \lneqq LESS-THAN BUT NOT EQUAL TO / LESS THAN BUT NOT EQUAL TO +U+02268 + U+0FE00 ≨︀ \lvertneqq LESS-THAN BUT NOT EQUAL TO / LESS THAN BUT NOT EQUAL TO + VARIATION SELECTOR-1 +U+02269 ≩ \gneqq GREATER-THAN BUT NOT EQUAL TO / GREATER THAN BUT NOT EQUAL TO +U+02269 + U+0FE00 ≩︀ \gvertneqq GREATER-THAN BUT NOT EQUAL TO / GREATER THAN BUT NOT EQUAL TO + VARIATION SELECTOR-1 +U+0226A ≪ \ll MUCH LESS-THAN / MUCH LESS THAN +U+0226A + U+00338 ≪̸ \NotLessLess MUCH LESS-THAN / MUCH LESS THAN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY +U+0226B ≫ \gg MUCH GREATER-THAN / MUCH GREATER THAN +U+0226B + U+00338 ≫̸ \NotGreaterGreater MUCH GREATER-THAN / MUCH GREATER THAN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY +U+0226C ≬ \between BETWEEN +U+0226D ≭ \nasymp NOT EQUIVALENT TO +U+0226E ≮ \nless NOT LESS-THAN / NOT LESS THAN +U+0226F ≯ \ngtr NOT GREATER-THAN / NOT GREATER THAN +U+02270 ≰ \nleq NEITHER LESS-THAN NOR EQUAL TO / NEITHER LESS THAN NOR EQUAL TO +U+02271 ≱ \ngeq NEITHER GREATER-THAN NOR EQUAL TO / NEITHER GREATER THAN NOR EQUAL TO +U+02272 ≲ \lesssim LESS-THAN OR EQUIVALENT TO / LESS THAN OR EQUIVALENT TO +U+02273 ≳ \gtrsim GREATER-THAN OR EQUIVALENT TO / GREATER THAN OR EQUIVALENT TO +U+02274 ≴ \nlesssim NEITHER LESS-THAN NOR EQUIVALENT TO / NEITHER LESS THAN NOR EQUIVALENT TO +U+02275 ≵ \ngtrsim NEITHER GREATER-THAN NOR EQUIVALENT TO / NEITHER GREATER THAN NOR EQUIVALENT TO +U+02276 ≶ \lessgtr LESS-THAN OR GREATER-THAN / LESS THAN OR GREATER THAN +U+02277 ≷ \gtrless GREATER-THAN OR LESS-THAN / GREATER THAN OR LESS THAN +U+02278 ≸ \notlessgreater NEITHER LESS-THAN NOR GREATER-THAN / NEITHER LESS THAN NOR GREATER THAN +U+02279 ≹ \notgreaterless NEITHER GREATER-THAN NOR LESS-THAN / NEITHER GREATER THAN NOR LESS THAN +U+0227A ≺ \prec PRECEDES +U+0227B ≻ \succ SUCCEEDS +U+0227C ≼ \preccurlyeq PRECEDES OR EQUAL TO +U+0227D ≽ \succcurlyeq SUCCEEDS OR EQUAL TO +U+0227E ≾ \precsim PRECEDES OR EQUIVALENT TO +U+0227E + U+00338 ≾̸ \nprecsim PRECEDES OR EQUIVALENT TO + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY +U+0227F ≿ \succsim SUCCEEDS OR EQUIVALENT TO +U+0227F + U+00338 ≿̸ \nsuccsim SUCCEEDS OR EQUIVALENT TO + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY +U+02280 ⊀ \nprec DOES NOT PRECEDE +U+02281 ⊁ \nsucc DOES NOT SUCCEED +U+02282 ⊂ \subset SUBSET OF +U+02283 ⊃ \supset SUPERSET OF +U+02284 ⊄ \nsubset NOT A SUBSET OF +U+02285 ⊅ \nsupset NOT A SUPERSET OF +U+02286 ⊆ \subseteq SUBSET OF OR EQUAL TO +U+02287 ⊇ \supseteq SUPERSET OF OR EQUAL TO +U+02288 ⊈ \nsubseteq NEITHER A SUBSET OF NOR EQUAL TO +U+02289 ⊉ \nsupseteq NEITHER A SUPERSET OF NOR EQUAL TO +U+0228A ⊊ \subsetneq SUBSET OF WITH NOT EQUAL TO / SUBSET OF OR NOT EQUAL TO +U+0228A + U+0FE00 ⊊︀ \varsubsetneqq SUBSET OF WITH NOT EQUAL TO / SUBSET OF OR NOT EQUAL TO + VARIATION SELECTOR-1 +U+0228B ⊋ \supsetneq SUPERSET OF WITH NOT EQUAL TO / SUPERSET OF OR NOT EQUAL TO +U+0228B + U+0FE00 ⊋︀ \varsupsetneq SUPERSET OF WITH NOT EQUAL TO / SUPERSET OF OR NOT EQUAL TO + VARIATION SELECTOR-1 +U+0228D ⊍ \cupdot MULTISET MULTIPLICATION +U+0228E ⊎ \uplus MULTISET UNION +U+0228F ⊏ \sqsubset SQUARE IMAGE OF +U+0228F + U+00338 ⊏̸ \NotSquareSubset SQUARE IMAGE OF + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY +U+02290 ⊐ \sqsupset SQUARE ORIGINAL OF +U+02290 + U+00338 ⊐̸ \NotSquareSuperset SQUARE ORIGINAL OF + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY +U+02291 ⊑ \sqsubseteq SQUARE IMAGE OF OR EQUAL TO +U+02292 ⊒ \sqsupseteq SQUARE ORIGINAL OF OR EQUAL TO +U+02293 ⊓ \sqcap SQUARE CAP +U+02294 ⊔ \sqcup SQUARE CUP +U+02295 ⊕ \oplus CIRCLED PLUS +U+02296 ⊖ \ominus CIRCLED MINUS +U+02297 ⊗ \otimes CIRCLED TIMES +U+02298 ⊘ \oslash CIRCLED DIVISION SLASH +U+02299 ⊙ \odot CIRCLED DOT OPERATOR +U+0229A ⊚ \circledcirc CIRCLED RING OPERATOR +U+0229B ⊛ \circledast CIRCLED ASTERISK OPERATOR +U+0229C ⊜ \circledequal CIRCLED EQUALS +U+0229D ⊝ \circleddash CIRCLED DASH +U+0229E ⊞ \boxplus SQUARED PLUS +U+0229F ⊟ \boxminus SQUARED MINUS +U+022A0 ⊠ \boxtimes SQUARED TIMES +U+022A1 ⊡ \boxdot SQUARED DOT OPERATOR +U+022A2 ⊢ \vdash RIGHT TACK +U+022A3 ⊣ \dashv LEFT TACK +U+022A4 ⊤ \top DOWN TACK +U+022A5 ⊥ \bot UP TACK +U+022A7 ⊧ \models MODELS +U+022A8 ⊨ \vDash TRUE +U+022A9 ⊩ \Vdash FORCES +U+022AA ⊪ \Vvdash TRIPLE VERTICAL BAR RIGHT TURNSTILE +U+022AB ⊫ \VDash DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE +U+022AC ⊬ \nvdash DOES NOT PROVE +U+022AD ⊭ \nvDash NOT TRUE +U+022AE ⊮ \nVdash DOES NOT FORCE +U+022AF ⊯ \nVDash NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE +U+022B0 ⊰ \prurel PRECEDES UNDER RELATION +U+022B1 ⊱ \scurel SUCCEEDS UNDER RELATION +U+022B2 ⊲ \vartriangleleft NORMAL SUBGROUP OF +U+022B3 ⊳ \vartriangleright CONTAINS AS NORMAL SUBGROUP +U+022B4 ⊴ \trianglelefteq NORMAL SUBGROUP OF OR EQUAL TO +U+022B5 ⊵ \trianglerighteq CONTAINS AS NORMAL SUBGROUP OR EQUAL TO +U+022B6 ⊶ \original ORIGINAL OF +U+022B7 ⊷ \image IMAGE OF +U+022B8 ⊸ \multimap MULTIMAP +U+022B9 ⊹ \hermitconjmatrix HERMITIAN CONJUGATE MATRIX +U+022BA ⊺ \intercal INTERCALATE +U+022BB ⊻ \veebar, \xor XOR +U+022BC ⊼ \barwedge NAND +U+022BD ⊽ \barvee NOR +U+022BE ⊾ \rightanglearc RIGHT ANGLE WITH ARC +U+022BF ⊿ \varlrtriangle RIGHT TRIANGLE +U+022C0 ⋀ \bigwedge N-ARY LOGICAL AND +U+022C1 ⋁ \bigvee N-ARY LOGICAL OR +U+022C2 ⋂ \bigcap N-ARY INTERSECTION +U+022C3 ⋃ \bigcup N-ARY UNION +U+022C4 ⋄ \diamond DIAMOND OPERATOR +U+022C5 ⋅ \cdot DOT OPERATOR +U+022C6 ⋆ \star STAR OPERATOR +U+022C7 ⋇ \divideontimes DIVISION TIMES +U+022C8 ⋈ \bowtie BOWTIE +U+022C9 ⋉ \ltimes LEFT NORMAL FACTOR SEMIDIRECT PRODUCT +U+022CA ⋊ \rtimes RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT +U+022CB ⋋ \leftthreetimes LEFT SEMIDIRECT PRODUCT +U+022CC ⋌ \rightthreetimes RIGHT SEMIDIRECT PRODUCT +U+022CD ⋍ \backsimeq REVERSED TILDE EQUALS +U+022CE ⋎ \curlyvee CURLY LOGICAL OR +U+022CF ⋏ \curlywedge CURLY LOGICAL AND +U+022D0 ⋐ \Subset DOUBLE SUBSET +U+022D1 ⋑ \Supset DOUBLE SUPERSET +U+022D2 ⋒ \Cap DOUBLE INTERSECTION +U+022D3 ⋓ \Cup DOUBLE UNION +U+022D4 ⋔ \pitchfork PITCHFORK +U+022D5 ⋕ \equalparallel EQUAL AND PARALLEL TO +U+022D6 ⋖ \lessdot LESS-THAN WITH DOT / LESS THAN WITH DOT +U+022D7 ⋗ \gtrdot GREATER-THAN WITH DOT / GREATER THAN WITH DOT +U+022D8 ⋘ \verymuchless VERY MUCH LESS-THAN / VERY MUCH LESS THAN +U+022D9 ⋙ \ggg VERY MUCH GREATER-THAN / VERY MUCH GREATER THAN +U+022DA ⋚ \lesseqgtr LESS-THAN EQUAL TO OR GREATER-THAN / LESS THAN EQUAL TO OR GREATER THAN +U+022DB ⋛ \gtreqless GREATER-THAN EQUAL TO OR LESS-THAN / GREATER THAN EQUAL TO OR LESS THAN +U+022DC ⋜ \eqless EQUAL TO OR LESS-THAN / EQUAL TO OR LESS THAN +U+022DD ⋝ \eqgtr EQUAL TO OR GREATER-THAN / EQUAL TO OR GREATER THAN +U+022DE ⋞ \curlyeqprec EQUAL TO OR PRECEDES +U+022DF ⋟ \curlyeqsucc EQUAL TO OR SUCCEEDS +U+022E0 ⋠ \npreccurlyeq DOES NOT PRECEDE OR EQUAL +U+022E1 ⋡ \nsucccurlyeq DOES NOT SUCCEED OR EQUAL +U+022E2 ⋢ \nsqsubseteq NOT SQUARE IMAGE OF OR EQUAL TO +U+022E3 ⋣ \nsqsupseteq NOT SQUARE ORIGINAL OF OR EQUAL TO +U+022E4 ⋤ \sqsubsetneq SQUARE IMAGE OF OR NOT EQUAL TO +U+022E5 ⋥ \sqspne SQUARE ORIGINAL OF OR NOT EQUAL TO +U+022E6 ⋦ \lnsim LESS-THAN BUT NOT EQUIVALENT TO / LESS THAN BUT NOT EQUIVALENT TO +U+022E7 ⋧ \gnsim GREATER-THAN BUT NOT EQUIVALENT TO / GREATER THAN BUT NOT EQUIVALENT TO +U+022E8 ⋨ \precnsim PRECEDES BUT NOT EQUIVALENT TO +U+022E9 ⋩ \succnsim SUCCEEDS BUT NOT EQUIVALENT TO +U+022EA ⋪ \ntriangleleft NOT NORMAL SUBGROUP OF +U+022EB ⋫ \ntriangleright DOES NOT CONTAIN AS NORMAL SUBGROUP +U+022EC ⋬ \ntrianglelefteq NOT NORMAL SUBGROUP OF OR EQUAL TO +U+022ED ⋭ \ntrianglerighteq DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL +U+022EE ⋮ \vdots VERTICAL ELLIPSIS +U+022EF ⋯ \cdots MIDLINE HORIZONTAL ELLIPSIS +U+022F0 ⋰ \adots UP RIGHT DIAGONAL ELLIPSIS +U+022F1 ⋱ \ddots DOWN RIGHT DIAGONAL ELLIPSIS +U+022F2 ⋲ \disin ELEMENT OF WITH LONG HORIZONTAL STROKE +U+022F3 ⋳ \varisins ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +U+022F4 ⋴ \isins SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +U+022F5 ⋵ \isindot ELEMENT OF WITH DOT ABOVE +U+022F6 ⋶ \varisinobar ELEMENT OF WITH OVERBAR +U+022F7 ⋷ \isinobar SMALL ELEMENT OF WITH OVERBAR +U+022F8 ⋸ \isinvb ELEMENT OF WITH UNDERBAR +U+022F9 ⋹ \isinE ELEMENT OF WITH TWO HORIZONTAL STROKES +U+022FA ⋺ \nisd CONTAINS WITH LONG HORIZONTAL STROKE +U+022FB ⋻ \varnis CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +U+022FC ⋼ \nis SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE +U+022FD ⋽ \varniobar CONTAINS WITH OVERBAR +U+022FE ⋾ \niobar SMALL CONTAINS WITH OVERBAR +U+022FF ⋿ \bagmember Z NOTATION BAG MEMBERSHIP +U+02300 ⌀ \diameter DIAMETER SIGN +U+02302 ⌂ \house HOUSE +U+02305 ⌅ \varbarwedge PROJECTIVE +U+02306 ⌆ \vardoublebarwedge PERSPECTIVE +U+02308 ⌈ \lceil LEFT CEILING +U+02309 ⌉ \rceil RIGHT CEILING +U+0230A ⌊ \lfloor LEFT FLOOR +U+0230B ⌋ \rfloor RIGHT FLOOR +U+02310 ⌐ \invnot REVERSED NOT SIGN +U+02311 ⌑ \sqlozenge SQUARE LOZENGE +U+02312 ⌒ \profline ARC +U+02313 ⌓ \profsurf SEGMENT +U+02315 ⌕ \recorder TELEPHONE RECORDER +U+02317 ⌗ \viewdata VIEWDATA SQUARE +U+02319 ⌙ \turnednot TURNED NOT SIGN +U+0231A ⌚ \:watch: WATCH +U+0231B ⌛ \:hourglass: HOURGLASS +U+0231C ⌜ \ulcorner TOP LEFT CORNER +U+0231D ⌝ \urcorner TOP RIGHT CORNER +U+0231E ⌞ \llcorner BOTTOM LEFT CORNER +U+0231F ⌟ \lrcorner BOTTOM RIGHT CORNER +U+02322 ⌢ \frown FROWN +U+02323 ⌣ \smile SMILE +U+0232C ⌬ \varhexagonlrbonds BENZENE RING +U+02332 ⌲ \conictaper CONICAL TAPER +U+02336 ⌶ \topbot APL FUNCTIONAL SYMBOL I-BEAM +U+0233D ⌽ \obar APL FUNCTIONAL SYMBOL CIRCLE STILE +U+0233F ⌿ \notslash APL FUNCTIONAL SYMBOL SLASH BAR +U+02340 ⍀ \notbackslash APL FUNCTIONAL SYMBOL BACKSLASH BAR +U+02353 ⍓ \boxupcaret APL FUNCTIONAL SYMBOL QUAD UP CARET +U+02370 ⍰ \boxquestion APL FUNCTIONAL SYMBOL QUAD QUESTION +U+02394 ⎔ \hexagon SOFTWARE-FUNCTION SYMBOL +U+023A3 ⎣ \dlcorn LEFT SQUARE BRACKET LOWER CORNER +U+023B0 ⎰ \lmoustache UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION +U+023B1 ⎱ \rmoustache UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION +U+023B4 ⎴ \overbracket TOP SQUARE BRACKET +U+023B5 ⎵ \underbracket BOTTOM SQUARE BRACKET +U+023B6 ⎶ \bbrktbrk BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET +U+023B7 ⎷ \sqrtbottom RADICAL SYMBOL BOTTOM +U+023B8 ⎸ \lvboxline LEFT VERTICAL BOX LINE +U+023B9 ⎹ \rvboxline RIGHT VERTICAL BOX LINE +U+023CE ⏎ \varcarriagereturn RETURN SYMBOL +U+023DE ⏞ \overbrace TOP CURLY BRACKET +U+023DF ⏟ \underbrace BOTTOM CURLY BRACKET +U+023E2 ⏢ \trapezium WHITE TRAPEZIUM +U+023E3 ⏣ \benzenr BENZENE RING WITH CIRCLE +U+023E4 ⏤ \strns STRAIGHTNESS +U+023E5 ⏥ \fltns FLATNESS +U+023E6 ⏦ \accurrent AC CURRENT +U+023E7 ⏧ \elinters ELECTRICAL INTERSECTION +U+023E9 ⏩ \:fast_forward: BLACK RIGHT-POINTING DOUBLE TRIANGLE +U+023EA ⏪ \:rewind: BLACK LEFT-POINTING DOUBLE TRIANGLE +U+023EB ⏫ \:arrow_double_up: BLACK UP-POINTING DOUBLE TRIANGLE +U+023EC ⏬ \:arrow_double_down: BLACK DOWN-POINTING DOUBLE TRIANGLE +U+023F0 ⏰ \:alarm_clock: ALARM CLOCK +U+023F3 ⏳ \:hourglass_flowing_sand: HOURGLASS WITH FLOWING SAND +U+02422 ␢ \blanksymbol BLANK SYMBOL / BLANK +U+02423 ␣ \visiblespace OPEN BOX +U+024C2 Ⓜ \:m: CIRCLED LATIN CAPITAL LETTER M +U+024C8 Ⓢ \circledS CIRCLED LATIN CAPITAL LETTER S +U+02506 ┆ \dshfnc BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL / FORMS LIGHT TRIPLE DASH VERTICAL +U+02519 ┙ \sqfnw BOX DRAWINGS UP LIGHT AND LEFT HEAVY / FORMS UP LIGHT AND LEFT HEAVY +U+02571 ╱ \diagup BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT / FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT +U+02572 ╲ \diagdown BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT / FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT +U+02580 ▀ \blockuphalf UPPER HALF BLOCK +U+02584 ▄ \blocklowhalf LOWER HALF BLOCK +U+02588 █ \blockfull FULL BLOCK +U+0258C ▌ \blocklefthalf LEFT HALF BLOCK +U+02590 ▐ \blockrighthalf RIGHT HALF BLOCK +U+02591 ░ \blockqtrshaded LIGHT SHADE +U+02592 ▒ \blockhalfshaded MEDIUM SHADE +U+02593 ▓ \blockthreeqtrshaded DARK SHADE +U+025A0 ■ \blacksquare BLACK SQUARE +U+025A1 □ \square WHITE SQUARE +U+025A2 ▢ \squoval WHITE SQUARE WITH ROUNDED CORNERS +U+025A3 ▣ \blackinwhitesquare WHITE SQUARE CONTAINING BLACK SMALL SQUARE +U+025A4 ▤ \squarehfill SQUARE WITH HORIZONTAL FILL +U+025A5 ▥ \squarevfill SQUARE WITH VERTICAL FILL +U+025A6 ▦ \squarehvfill SQUARE WITH ORTHOGONAL CROSSHATCH FILL +U+025A7 ▧ \squarenwsefill SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL +U+025A8 ▨ \squareneswfill SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL +U+025A9 ▩ \squarecrossfill SQUARE WITH DIAGONAL CROSSHATCH FILL +U+025AA ▪ \smblksquare, \:black_small_square: BLACK SMALL SQUARE +U+025AB ▫ \smwhtsquare, \:white_small_square: WHITE SMALL SQUARE +U+025AC ▬ \hrectangleblack BLACK RECTANGLE +U+025AD ▭ \hrectangle WHITE RECTANGLE +U+025AE ▮ \vrectangleblack BLACK VERTICAL RECTANGLE +U+025AF ▯ \vrecto WHITE VERTICAL RECTANGLE +U+025B0 ▰ \parallelogramblack BLACK PARALLELOGRAM +U+025B1 ▱ \parallelogram WHITE PARALLELOGRAM +U+025B2 ▲ \bigblacktriangleup BLACK UP-POINTING TRIANGLE / BLACK UP POINTING TRIANGLE +U+025B3 △ \bigtriangleup WHITE UP-POINTING TRIANGLE / WHITE UP POINTING TRIANGLE +U+025B4 ▴ \blacktriangle BLACK UP-POINTING SMALL TRIANGLE / BLACK UP POINTING SMALL TRIANGLE +U+025B5 ▵ \vartriangle WHITE UP-POINTING SMALL TRIANGLE / WHITE UP POINTING SMALL TRIANGLE +U+025B6 ▶ \blacktriangleright, \:arrow_forward: BLACK RIGHT-POINTING TRIANGLE / BLACK RIGHT POINTING TRIANGLE +U+025B7 ▷ \triangleright WHITE RIGHT-POINTING TRIANGLE / WHITE RIGHT POINTING TRIANGLE +U+025B8 ▸ \smallblacktriangleright BLACK RIGHT-POINTING SMALL TRIANGLE / BLACK RIGHT POINTING SMALL TRIANGLE +U+025B9 ▹ \smalltriangleright WHITE RIGHT-POINTING SMALL TRIANGLE / WHITE RIGHT POINTING SMALL TRIANGLE +U+025BA ► \blackpointerright BLACK RIGHT-POINTING POINTER / BLACK RIGHT POINTING POINTER +U+025BB ▻ \whitepointerright WHITE RIGHT-POINTING POINTER / WHITE RIGHT POINTING POINTER +U+025BC ▼ \bigblacktriangledown BLACK DOWN-POINTING TRIANGLE / BLACK DOWN POINTING TRIANGLE +U+025BD ▽ \bigtriangledown WHITE DOWN-POINTING TRIANGLE / WHITE DOWN POINTING TRIANGLE +U+025BE ▾ \blacktriangledown BLACK DOWN-POINTING SMALL TRIANGLE / BLACK DOWN POINTING SMALL TRIANGLE +U+025BF ▿ \triangledown WHITE DOWN-POINTING SMALL TRIANGLE / WHITE DOWN POINTING SMALL TRIANGLE +U+025C0 ◀ \blacktriangleleft, \:arrow_backward: BLACK LEFT-POINTING TRIANGLE / BLACK LEFT POINTING TRIANGLE +U+025C1 ◁ \triangleleft WHITE LEFT-POINTING TRIANGLE / WHITE LEFT POINTING TRIANGLE +U+025C2 ◂ \smallblacktriangleleft BLACK LEFT-POINTING SMALL TRIANGLE / BLACK LEFT POINTING SMALL TRIANGLE +U+025C3 ◃ \smalltriangleleft WHITE LEFT-POINTING SMALL TRIANGLE / WHITE LEFT POINTING SMALL TRIANGLE +U+025C4 ◄ \blackpointerleft BLACK LEFT-POINTING POINTER / BLACK LEFT POINTING POINTER +U+025C5 ◅ \whitepointerleft WHITE LEFT-POINTING POINTER / WHITE LEFT POINTING POINTER +U+025C6 ◆ \mdlgblkdiamond BLACK DIAMOND +U+025C7 ◇ \mdlgwhtdiamond WHITE DIAMOND +U+025C8 ◈ \blackinwhitediamond WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND +U+025C9 ◉ \fisheye FISHEYE +U+025CA ◊ \lozenge LOZENGE +U+025CB ○ \bigcirc WHITE CIRCLE +U+025CC ◌ \dottedcircle DOTTED CIRCLE +U+025CD ◍ \circlevertfill CIRCLE WITH VERTICAL FILL +U+025CE ◎ \bullseye BULLSEYE +U+025CF ● \mdlgblkcircle BLACK CIRCLE +U+025D0 ◐ \cirfl CIRCLE WITH LEFT HALF BLACK +U+025D1 ◑ \cirfr CIRCLE WITH RIGHT HALF BLACK +U+025D2 ◒ \cirfb CIRCLE WITH LOWER HALF BLACK +U+025D3 ◓ \circletophalfblack CIRCLE WITH UPPER HALF BLACK +U+025D4 ◔ \circleurquadblack CIRCLE WITH UPPER RIGHT QUADRANT BLACK +U+025D5 ◕ \blackcircleulquadwhite CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK +U+025D6 ◖ \blacklefthalfcircle LEFT HALF BLACK CIRCLE +U+025D7 ◗ \blackrighthalfcircle RIGHT HALF BLACK CIRCLE +U+025D8 ◘ \rvbull INVERSE BULLET +U+025D9 ◙ \inversewhitecircle INVERSE WHITE CIRCLE +U+025DA ◚ \invwhiteupperhalfcircle UPPER HALF INVERSE WHITE CIRCLE +U+025DB ◛ \invwhitelowerhalfcircle LOWER HALF INVERSE WHITE CIRCLE +U+025DC ◜ \ularc UPPER LEFT QUADRANT CIRCULAR ARC +U+025DD ◝ \urarc UPPER RIGHT QUADRANT CIRCULAR ARC +U+025DE ◞ \lrarc LOWER RIGHT QUADRANT CIRCULAR ARC +U+025DF ◟ \llarc LOWER LEFT QUADRANT CIRCULAR ARC +U+025E0 ◠ \topsemicircle UPPER HALF CIRCLE +U+025E1 ◡ \botsemicircle LOWER HALF CIRCLE +U+025E2 ◢ \lrblacktriangle BLACK LOWER RIGHT TRIANGLE +U+025E3 ◣ \llblacktriangle BLACK LOWER LEFT TRIANGLE +U+025E4 ◤ \ulblacktriangle BLACK UPPER LEFT TRIANGLE +U+025E5 ◥ \urblacktriangle BLACK UPPER RIGHT TRIANGLE +U+025E6 ◦ \smwhtcircle WHITE BULLET +U+025E7 ◧ \sqfl SQUARE WITH LEFT HALF BLACK +U+025E8 ◨ \sqfr SQUARE WITH RIGHT HALF BLACK +U+025E9 ◩ \squareulblack SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK +U+025EA ◪ \sqfse SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK +U+025EB ◫ \boxbar WHITE SQUARE WITH VERTICAL BISECTING LINE +U+025EC ◬ \trianglecdot WHITE UP-POINTING TRIANGLE WITH DOT / WHITE UP POINTING TRIANGLE WITH DOT +U+025ED ◭ \triangleleftblack UP-POINTING TRIANGLE WITH LEFT HALF BLACK / UP POINTING TRIANGLE WITH LEFT HALF BLACK +U+025EE ◮ \trianglerightblack UP-POINTING TRIANGLE WITH RIGHT HALF BLACK / UP POINTING TRIANGLE WITH RIGHT HALF BLACK +U+025EF ◯ \lgwhtcircle LARGE CIRCLE +U+025F0 ◰ \squareulquad WHITE SQUARE WITH UPPER LEFT QUADRANT +U+025F1 ◱ \squarellquad WHITE SQUARE WITH LOWER LEFT QUADRANT +U+025F2 ◲ \squarelrquad WHITE SQUARE WITH LOWER RIGHT QUADRANT +U+025F3 ◳ \squareurquad WHITE SQUARE WITH UPPER RIGHT QUADRANT +U+025F4 ◴ \circleulquad WHITE CIRCLE WITH UPPER LEFT QUADRANT +U+025F5 ◵ \circlellquad WHITE CIRCLE WITH LOWER LEFT QUADRANT +U+025F6 ◶ \circlelrquad WHITE CIRCLE WITH LOWER RIGHT QUADRANT +U+025F7 ◷ \circleurquad WHITE CIRCLE WITH UPPER RIGHT QUADRANT +U+025F8 ◸ \ultriangle UPPER LEFT TRIANGLE +U+025F9 ◹ \urtriangle UPPER RIGHT TRIANGLE +U+025FA ◺ \lltriangle LOWER LEFT TRIANGLE +U+025FB ◻ \mdwhtsquare, \:white_medium_square: WHITE MEDIUM SQUARE +U+025FC ◼ \mdblksquare, \:black_medium_square: BLACK MEDIUM SQUARE +U+025FD ◽ \mdsmwhtsquare, \:white_medium_small_square: WHITE MEDIUM SMALL SQUARE +U+025FE ◾ \mdsmblksquare, \:black_medium_small_square: BLACK MEDIUM SMALL SQUARE +U+025FF ◿ \lrtriangle LOWER RIGHT TRIANGLE +U+02600 ☀ \:sunny: BLACK SUN WITH RAYS +U+02601 ☁ \:cloud: CLOUD +U+02605 ★ \bigstar BLACK STAR +U+02606 ☆ \bigwhitestar WHITE STAR +U+02609 ☉ \astrosun SUN +U+0260E ☎ \:phone: BLACK TELEPHONE +U+02611 ☑ \:ballot_box_with_check: BALLOT BOX WITH CHECK +U+02614 ☔ \:umbrella: UMBRELLA WITH RAIN DROPS +U+02615 ☕ \:coffee: HOT BEVERAGE +U+0261D ☝ \:point_up: WHITE UP POINTING INDEX +U+02621 ☡ \danger CAUTION SIGN +U+0263A ☺ \:relaxed: WHITE SMILING FACE +U+0263B ☻ \blacksmiley BLACK SMILING FACE +U+0263C ☼ \sun WHITE SUN WITH RAYS +U+0263D ☽ \rightmoon FIRST QUARTER MOON +U+0263E ☾ \leftmoon LAST QUARTER MOON +U+0263F ☿ \mercury MERCURY +U+02640 ♀ \venus, \female FEMALE SIGN +U+02642 ♂ \male, \mars MALE SIGN +U+02643 ♃ \jupiter JUPITER +U+02644 ♄ \saturn SATURN +U+02645 ♅ \uranus URANUS +U+02646 ♆ \neptune NEPTUNE +U+02647 ♇ \pluto PLUTO +U+02648 ♈ \aries, \:aries: ARIES +U+02649 ♉ \taurus, \:taurus: TAURUS +U+0264A ♊ \gemini, \:gemini: GEMINI +U+0264B ♋ \cancer, \:cancer: CANCER +U+0264C ♌ \leo, \:leo: LEO +U+0264D ♍ \virgo, \:virgo: VIRGO +U+0264E ♎ \libra, \:libra: LIBRA +U+0264F ♏ \scorpio, \:scorpius: SCORPIUS +U+02650 ♐ \sagittarius, \:sagittarius: SAGITTARIUS +U+02651 ♑ \capricornus, \:capricorn: CAPRICORN +U+02652 ♒ \aquarius, \:aquarius: AQUARIUS +U+02653 ♓ \pisces, \:pisces: PISCES +U+02660 ♠ \spadesuit, \:spades: BLACK SPADE SUIT +U+02661 ♡ \heartsuit WHITE HEART SUIT +U+02662 ♢ \diamondsuit WHITE DIAMOND SUIT +U+02663 ♣ \clubsuit, \:clubs: BLACK CLUB SUIT +U+02664 ♤ \varspadesuit WHITE SPADE SUIT +U+02665 ♥ \varheartsuit, \:hearts: BLACK HEART SUIT +U+02666 ♦ \vardiamondsuit, \:diamonds: BLACK DIAMOND SUIT +U+02667 ♧ \varclubsuit WHITE CLUB SUIT +U+02668 ♨ \:hotsprings: HOT SPRINGS +U+02669 ♩ \quarternote QUARTER NOTE +U+0266A ♪ \eighthnote EIGHTH NOTE +U+0266B ♫ \twonotes BEAMED EIGHTH NOTES / BARRED EIGHTH NOTES +U+0266D ♭ \flat MUSIC FLAT SIGN / FLAT +U+0266E ♮ \natural MUSIC NATURAL SIGN / NATURAL +U+0266F ♯ \sharp MUSIC SHARP SIGN / SHARP +U+0267B ♻ \:recycle: BLACK UNIVERSAL RECYCLING SYMBOL +U+0267E ♾ \acidfree PERMANENT PAPER SIGN +U+0267F ♿ \:wheelchair: WHEELCHAIR SYMBOL +U+02680 ⚀ \dicei DIE FACE-1 +U+02681 ⚁ \diceii DIE FACE-2 +U+02682 ⚂ \diceiii DIE FACE-3 +U+02683 ⚃ \diceiv DIE FACE-4 +U+02684 ⚄ \dicev DIE FACE-5 +U+02685 ⚅ \dicevi DIE FACE-6 +U+02686 ⚆ \circledrightdot WHITE CIRCLE WITH DOT RIGHT +U+02687 ⚇ \circledtwodots WHITE CIRCLE WITH TWO DOTS +U+02688 ⚈ \blackcircledrightdot BLACK CIRCLE WITH WHITE DOT RIGHT +U+02689 ⚉ \blackcircledtwodots BLACK CIRCLE WITH TWO WHITE DOTS +U+02693 ⚓ \:anchor: ANCHOR +U+026A0 ⚠ \:warning: WARNING SIGN +U+026A1 ⚡ \:zap: HIGH VOLTAGE SIGN +U+026A5 ⚥ \hermaphrodite MALE AND FEMALE SIGN +U+026AA ⚪ \mdwhtcircle, \:white_circle: MEDIUM WHITE CIRCLE +U+026AB ⚫ \mdblkcircle, \:black_circle: MEDIUM BLACK CIRCLE +U+026AC ⚬ \mdsmwhtcircle MEDIUM SMALL WHITE CIRCLE +U+026B2 ⚲ \neuter NEUTER +U+026BD ⚽ \:soccer: SOCCER BALL +U+026BE ⚾ \:baseball: BASEBALL +U+026C4 ⛄ \:snowman: SNOWMAN WITHOUT SNOW +U+026C5 ⛅ \:partly_sunny: SUN BEHIND CLOUD +U+026CE ⛎ \:ophiuchus: OPHIUCHUS +U+026D4 ⛔ \:no_entry: NO ENTRY +U+026EA ⛪ \:church: CHURCH +U+026F2 ⛲ \:fountain: FOUNTAIN +U+026F3 ⛳ \:golf: FLAG IN HOLE +U+026F5 ⛵ \:boat: SAILBOAT +U+026FA ⛺ \:tent: TENT +U+026FD ⛽ \:fuelpump: FUEL PUMP +U+02702 ✂ \:scissors: BLACK SCISSORS +U+02705 ✅ \:white_check_mark: WHITE HEAVY CHECK MARK +U+02708 ✈ \:airplane: AIRPLANE +U+02709 ✉ \:email: ENVELOPE +U+0270A ✊ \:fist: RAISED FIST +U+0270B ✋ \:hand: RAISED HAND +U+0270C ✌ \:v: VICTORY HAND +U+0270F ✏ \:pencil2: PENCIL +U+02712 ✒ \:black_nib: BLACK NIB +U+02713 ✓ \checkmark CHECK MARK +U+02714 ✔ \:heavy_check_mark: HEAVY CHECK MARK +U+02716 ✖ \:heavy_multiplication_x: HEAVY MULTIPLICATION X +U+02720 ✠ \maltese MALTESE CROSS +U+02728 ✨ \:sparkles: SPARKLES +U+0272A ✪ \circledstar CIRCLED WHITE STAR +U+02733 ✳ \:eight_spoked_asterisk: EIGHT SPOKED ASTERISK +U+02734 ✴ \:eight_pointed_black_star: EIGHT POINTED BLACK STAR +U+02736 ✶ \varstar SIX POINTED BLACK STAR +U+0273D ✽ \dingasterisk HEAVY TEARDROP-SPOKED ASTERISK +U+02744 ❄ \:snowflake: SNOWFLAKE +U+02747 ❇ \:sparkle: SPARKLE +U+0274C ❌ \:x: CROSS MARK +U+0274E ❎ \:negative_squared_cross_mark: NEGATIVE SQUARED CROSS MARK +U+02753 ❓ \:question: BLACK QUESTION MARK ORNAMENT +U+02754 ❔ \:grey_question: WHITE QUESTION MARK ORNAMENT +U+02755 ❕ \:grey_exclamation: WHITE EXCLAMATION MARK ORNAMENT +U+02757 ❗ \:exclamation: HEAVY EXCLAMATION MARK SYMBOL +U+02764 ❤ \:heart: HEAVY BLACK HEART +U+02795 ➕ \:heavy_plus_sign: HEAVY PLUS SIGN +U+02796 ➖ \:heavy_minus_sign: HEAVY MINUS SIGN +U+02797 ➗ \:heavy_division_sign: HEAVY DIVISION SIGN +U+0279B ➛ \draftingarrow DRAFTING POINT RIGHTWARDS ARROW / DRAFTING POINT RIGHT ARROW +U+027A1 ➡ \:arrow_right: BLACK RIGHTWARDS ARROW / BLACK RIGHT ARROW +U+027B0 ➰ \:curly_loop: CURLY LOOP +U+027BF ➿ \:loop: DOUBLE CURLY LOOP +U+027C0 ⟀ \threedangle THREE DIMENSIONAL ANGLE +U+027C1 ⟁ \whiteinwhitetriangle WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE +U+027C2 ⟂ \perp PERPENDICULAR +U+027C8 ⟈ \bsolhsub REVERSE SOLIDUS PRECEDING SUBSET +U+027C9 ⟉ \suphsol SUPERSET PRECEDING SOLIDUS +U+027D1 ⟑ \wedgedot AND WITH DOT +U+027D2 ⟒ \upin ELEMENT OF OPENING UPWARDS +U+027D5 ⟕ \leftouterjoin LEFT OUTER JOIN +U+027D6 ⟖ \rightouterjoin RIGHT OUTER JOIN +U+027D7 ⟗ \fullouterjoin FULL OUTER JOIN +U+027D8 ⟘ \bigbot LARGE UP TACK +U+027D9 ⟙ \bigtop LARGE DOWN TACK +U+027E6 ⟦ \llbracket, \openbracketleft MATHEMATICAL LEFT WHITE SQUARE BRACKET +U+027E7 ⟧ \openbracketright, \rrbracket MATHEMATICAL RIGHT WHITE SQUARE BRACKET +U+027E8 ⟨ \langle MATHEMATICAL LEFT ANGLE BRACKET +U+027E9 ⟩ \rangle MATHEMATICAL RIGHT ANGLE BRACKET +U+027F0 ⟰ \UUparrow UPWARDS QUADRUPLE ARROW +U+027F1 ⟱ \DDownarrow DOWNWARDS QUADRUPLE ARROW +U+027F5 ⟵ \longleftarrow LONG LEFTWARDS ARROW +U+027F6 ⟶ \longrightarrow LONG RIGHTWARDS ARROW +U+027F7 ⟷ \longleftrightarrow LONG LEFT RIGHT ARROW +U+027F8 ⟸ \impliedby, \Longleftarrow LONG LEFTWARDS DOUBLE ARROW +U+027F9 ⟹ \implies, \Longrightarrow LONG RIGHTWARDS DOUBLE ARROW +U+027FA ⟺ \Longleftrightarrow, \iff LONG LEFT RIGHT DOUBLE ARROW +U+027FB ⟻ \longmapsfrom LONG LEFTWARDS ARROW FROM BAR +U+027FC ⟼ \longmapsto LONG RIGHTWARDS ARROW FROM BAR +U+027FD ⟽ \Longmapsfrom LONG LEFTWARDS DOUBLE ARROW FROM BAR +U+027FE ⟾ \Longmapsto LONG RIGHTWARDS DOUBLE ARROW FROM BAR +U+027FF ⟿ \longrightsquigarrow LONG RIGHTWARDS SQUIGGLE ARROW +U+02900 ⤀ \nvtwoheadrightarrow RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE +U+02901 ⤁ \nVtwoheadrightarrow RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE +U+02902 ⤂ \nvLeftarrow LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE +U+02903 ⤃ \nvRightarrow RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE +U+02904 ⤄ \nvLeftrightarrow LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE +U+02905 ⤅ \twoheadmapsto RIGHTWARDS TWO-HEADED ARROW FROM BAR +U+02906 ⤆ \Mapsfrom LEFTWARDS DOUBLE ARROW FROM BAR +U+02907 ⤇ \Mapsto RIGHTWARDS DOUBLE ARROW FROM BAR +U+02908 ⤈ \downarrowbarred DOWNWARDS ARROW WITH HORIZONTAL STROKE +U+02909 ⤉ \uparrowbarred UPWARDS ARROW WITH HORIZONTAL STROKE +U+0290A ⤊ \Uuparrow UPWARDS TRIPLE ARROW +U+0290B ⤋ \Ddownarrow DOWNWARDS TRIPLE ARROW +U+0290C ⤌ \leftbkarrow LEFTWARDS DOUBLE DASH ARROW +U+0290D ⤍ \bkarow RIGHTWARDS DOUBLE DASH ARROW +U+0290E ⤎ \leftdbkarrow LEFTWARDS TRIPLE DASH ARROW +U+0290F ⤏ \dbkarow RIGHTWARDS TRIPLE DASH ARROW +U+02910 ⤐ \drbkarrow RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW +U+02911 ⤑ \rightdotarrow RIGHTWARDS ARROW WITH DOTTED STEM +U+02912 ⤒ \UpArrowBar UPWARDS ARROW TO BAR +U+02913 ⤓ \DownArrowBar DOWNWARDS ARROW TO BAR +U+02914 ⤔ \nvrightarrowtail RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE +U+02915 ⤕ \nVrightarrowtail RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE +U+02916 ⤖ \twoheadrightarrowtail RIGHTWARDS TWO-HEADED ARROW WITH TAIL +U+02917 ⤗ \nvtwoheadrightarrowtail RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE +U+02918 ⤘ \nVtwoheadrightarrowtail RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE +U+0291D ⤝ \diamondleftarrow LEFTWARDS ARROW TO BLACK DIAMOND +U+0291E ⤞ \rightarrowdiamond RIGHTWARDS ARROW TO BLACK DIAMOND +U+0291F ⤟ \diamondleftarrowbar LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND +U+02920 ⤠ \barrightarrowdiamond RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND +U+02925 ⤥ \hksearow SOUTH EAST ARROW WITH HOOK +U+02926 ⤦ \hkswarow SOUTH WEST ARROW WITH HOOK +U+02927 ⤧ \tona NORTH WEST ARROW AND NORTH EAST ARROW +U+02928 ⤨ \toea NORTH EAST ARROW AND SOUTH EAST ARROW +U+02929 ⤩ \tosa SOUTH EAST ARROW AND SOUTH WEST ARROW +U+0292A ⤪ \towa SOUTH WEST ARROW AND NORTH WEST ARROW +U+0292B ⤫ \rdiagovfdiag RISING DIAGONAL CROSSING FALLING DIAGONAL +U+0292C ⤬ \fdiagovrdiag FALLING DIAGONAL CROSSING RISING DIAGONAL +U+0292D ⤭ \seovnearrow SOUTH EAST ARROW CROSSING NORTH EAST ARROW +U+0292E ⤮ \neovsearrow NORTH EAST ARROW CROSSING SOUTH EAST ARROW +U+0292F ⤯ \fdiagovnearrow FALLING DIAGONAL CROSSING NORTH EAST ARROW +U+02930 ⤰ \rdiagovsearrow RISING DIAGONAL CROSSING SOUTH EAST ARROW +U+02931 ⤱ \neovnwarrow NORTH EAST ARROW CROSSING NORTH WEST ARROW +U+02932 ⤲ \nwovnearrow NORTH WEST ARROW CROSSING NORTH EAST ARROW +U+02934 ⤴ \:arrow_heading_up: ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS +U+02935 ⤵ \:arrow_heading_down: ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS +U+02942 ⥂ \Rlarr RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW +U+02944 ⥄ \rLarr SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW +U+02945 ⥅ \rightarrowplus RIGHTWARDS ARROW WITH PLUS BELOW +U+02946 ⥆ \leftarrowplus LEFTWARDS ARROW WITH PLUS BELOW +U+02947 ⥇ \rarrx RIGHTWARDS ARROW THROUGH X +U+02948 ⥈ \leftrightarrowcircle LEFT RIGHT ARROW THROUGH SMALL CIRCLE +U+02949 ⥉ \twoheaduparrowcircle UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE +U+0294A ⥊ \leftrightharpoonupdown LEFT BARB UP RIGHT BARB DOWN HARPOON +U+0294B ⥋ \leftrightharpoondownup LEFT BARB DOWN RIGHT BARB UP HARPOON +U+0294C ⥌ \updownharpoonrightleft UP BARB RIGHT DOWN BARB LEFT HARPOON +U+0294D ⥍ \updownharpoonleftright UP BARB LEFT DOWN BARB RIGHT HARPOON +U+0294E ⥎ \LeftRightVector LEFT BARB UP RIGHT BARB UP HARPOON +U+0294F ⥏ \RightUpDownVector UP BARB RIGHT DOWN BARB RIGHT HARPOON +U+02950 ⥐ \DownLeftRightVector LEFT BARB DOWN RIGHT BARB DOWN HARPOON +U+02951 ⥑ \LeftUpDownVector UP BARB LEFT DOWN BARB LEFT HARPOON +U+02952 ⥒ \LeftVectorBar LEFTWARDS HARPOON WITH BARB UP TO BAR +U+02953 ⥓ \RightVectorBar RIGHTWARDS HARPOON WITH BARB UP TO BAR +U+02954 ⥔ \RightUpVectorBar UPWARDS HARPOON WITH BARB RIGHT TO BAR +U+02955 ⥕ \RightDownVectorBar DOWNWARDS HARPOON WITH BARB RIGHT TO BAR +U+02956 ⥖ \DownLeftVectorBar LEFTWARDS HARPOON WITH BARB DOWN TO BAR +U+02957 ⥗ \DownRightVectorBar RIGHTWARDS HARPOON WITH BARB DOWN TO BAR +U+02958 ⥘ \LeftUpVectorBar UPWARDS HARPOON WITH BARB LEFT TO BAR +U+02959 ⥙ \LeftDownVectorBar DOWNWARDS HARPOON WITH BARB LEFT TO BAR +U+0295A ⥚ \LeftTeeVector LEFTWARDS HARPOON WITH BARB UP FROM BAR +U+0295B ⥛ \RightTeeVector RIGHTWARDS HARPOON WITH BARB UP FROM BAR +U+0295C ⥜ \RightUpTeeVector UPWARDS HARPOON WITH BARB RIGHT FROM BAR +U+0295D ⥝ \RightDownTeeVector DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR +U+0295E ⥞ \DownLeftTeeVector LEFTWARDS HARPOON WITH BARB DOWN FROM BAR +U+0295F ⥟ \DownRightTeeVector RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR +U+02960 ⥠ \LeftUpTeeVector UPWARDS HARPOON WITH BARB LEFT FROM BAR +U+02961 ⥡ \LeftDownTeeVector DOWNWARDS HARPOON WITH BARB LEFT FROM BAR +U+02962 ⥢ \leftharpoonsupdown LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN +U+02963 ⥣ \upharpoonsleftright UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT +U+02964 ⥤ \rightharpoonsupdown RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN +U+02965 ⥥ \downharpoonsleftright DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT +U+02966 ⥦ \leftrightharpoonsup LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP +U+02967 ⥧ \leftrightharpoonsdown LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN +U+02968 ⥨ \rightleftharpoonsup RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP +U+02969 ⥩ \rightleftharpoonsdown RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN +U+0296A ⥪ \leftharpoonupdash LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH +U+0296B ⥫ \dashleftharpoondown LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH +U+0296C ⥬ \rightharpoonupdash RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH +U+0296D ⥭ \dashrightharpoondown RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH +U+0296E ⥮ \UpEquilibrium UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT +U+0296F ⥯ \ReverseUpEquilibrium DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT +U+02970 ⥰ \RoundImplies RIGHT DOUBLE ARROW WITH ROUNDED HEAD +U+02980 ⦀ \Vvert TRIPLE VERTICAL BAR DELIMITER +U+02986 ⦆ \Elroang RIGHT WHITE PARENTHESIS +U+02999 ⦙ \ddfnc DOTTED FENCE +U+0299B ⦛ \measuredangleleft MEASURED ANGLE OPENING LEFT +U+0299C ⦜ \Angle RIGHT ANGLE VARIANT WITH SQUARE +U+0299D ⦝ \rightanglemdot MEASURED RIGHT ANGLE WITH DOT +U+0299E ⦞ \angles ANGLE WITH S INSIDE +U+0299F ⦟ \angdnr ACUTE ANGLE +U+029A0 ⦠ \lpargt SPHERICAL ANGLE OPENING LEFT +U+029A1 ⦡ \sphericalangleup SPHERICAL ANGLE OPENING UP +U+029A2 ⦢ \turnangle TURNED ANGLE +U+029A3 ⦣ \revangle REVERSED ANGLE +U+029A4 ⦤ \angleubar ANGLE WITH UNDERBAR +U+029A5 ⦥ \revangleubar REVERSED ANGLE WITH UNDERBAR +U+029A6 ⦦ \wideangledown OBLIQUE ANGLE OPENING UP +U+029A7 ⦧ \wideangleup OBLIQUE ANGLE OPENING DOWN +U+029A8 ⦨ \measanglerutone MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT +U+029A9 ⦩ \measanglelutonw MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT +U+029AA ⦪ \measanglerdtose MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT +U+029AB ⦫ \measangleldtosw MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT +U+029AC ⦬ \measangleurtone MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP +U+029AD ⦭ \measangleultonw MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP +U+029AE ⦮ \measangledrtose MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN +U+029AF ⦯ \measangledltosw MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN +U+029B0 ⦰ \revemptyset REVERSED EMPTY SET +U+029B1 ⦱ \emptysetobar EMPTY SET WITH OVERBAR +U+029B2 ⦲ \emptysetocirc EMPTY SET WITH SMALL CIRCLE ABOVE +U+029B3 ⦳ \emptysetoarr EMPTY SET WITH RIGHT ARROW ABOVE +U+029B4 ⦴ \emptysetoarrl EMPTY SET WITH LEFT ARROW ABOVE +U+029B7 ⦷ \circledparallel CIRCLED PARALLEL +U+029B8 ⦸ \obslash CIRCLED REVERSE SOLIDUS +U+029BC ⦼ \odotslashdot CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN +U+029BE ⦾ \circledwhitebullet CIRCLED WHITE BULLET +U+029BF ⦿ \circledbullet CIRCLED BULLET +U+029C0 ⧀ \olessthan CIRCLED LESS-THAN +U+029C1 ⧁ \ogreaterthan CIRCLED GREATER-THAN +U+029C4 ⧄ \boxdiag SQUARED RISING DIAGONAL SLASH +U+029C5 ⧅ \boxbslash SQUARED FALLING DIAGONAL SLASH +U+029C6 ⧆ \boxast SQUARED ASTERISK +U+029C7 ⧇ \boxcircle SQUARED SMALL CIRCLE +U+029CA ⧊ \Lap TRIANGLE WITH DOT ABOVE +U+029CB ⧋ \defas TRIANGLE WITH UNDERBAR +U+029CF ⧏ \LeftTriangleBar LEFT TRIANGLE BESIDE VERTICAL BAR +U+029CF + U+00338 ⧏̸ \NotLeftTriangleBar LEFT TRIANGLE BESIDE VERTICAL BAR + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY +U+029D0 ⧐ \RightTriangleBar VERTICAL BAR BESIDE RIGHT TRIANGLE +U+029D0 + U+00338 ⧐̸ \NotRightTriangleBar VERTICAL BAR BESIDE RIGHT TRIANGLE + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY +U+029DF ⧟ \dualmap DOUBLE-ENDED MULTIMAP +U+029E1 ⧡ \lrtriangleeq INCREASES AS +U+029E2 ⧢ \shuffle SHUFFLE PRODUCT +U+029E3 ⧣ \eparsl EQUALS SIGN AND SLANTED PARALLEL +U+029E4 ⧤ \smeparsl EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE +U+029E5 ⧥ \eqvparsl IDENTICAL TO AND SLANTED PARALLEL +U+029EB ⧫ \blacklozenge BLACK LOZENGE +U+029F4 ⧴ \RuleDelayed RULE-DELAYED +U+029F6 ⧶ \dsol SOLIDUS WITH OVERBAR +U+029F7 ⧷ \rsolbar REVERSE SOLIDUS WITH HORIZONTAL STROKE +U+029FA ⧺ \doubleplus DOUBLE PLUS +U+029FB ⧻ \tripleplus TRIPLE PLUS +U+02A00 ⨀ \bigodot N-ARY CIRCLED DOT OPERATOR +U+02A01 ⨁ \bigoplus N-ARY CIRCLED PLUS OPERATOR +U+02A02 ⨂ \bigotimes N-ARY CIRCLED TIMES OPERATOR +U+02A03 ⨃ \bigcupdot N-ARY UNION OPERATOR WITH DOT +U+02A04 ⨄ \biguplus N-ARY UNION OPERATOR WITH PLUS +U+02A05 ⨅ \bigsqcap N-ARY SQUARE INTERSECTION OPERATOR +U+02A06 ⨆ \bigsqcup N-ARY SQUARE UNION OPERATOR +U+02A07 ⨇ \conjquant TWO LOGICAL AND OPERATOR +U+02A08 ⨈ \disjquant TWO LOGICAL OR OPERATOR +U+02A09 ⨉ \bigtimes N-ARY TIMES OPERATOR +U+02A0A ⨊ \modtwosum MODULO TWO SUM +U+02A0B ⨋ \sumint SUMMATION WITH INTEGRAL +U+02A0C ⨌ \iiiint QUADRUPLE INTEGRAL OPERATOR +U+02A0D ⨍ \intbar FINITE PART INTEGRAL +U+02A0E ⨎ \intBar INTEGRAL WITH DOUBLE STROKE +U+02A0F ⨏ \clockoint INTEGRAL AVERAGE WITH SLASH +U+02A10 ⨐ \cirfnint CIRCULATION FUNCTION +U+02A11 ⨑ \awint ANTICLOCKWISE INTEGRATION +U+02A12 ⨒ \rppolint LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE +U+02A13 ⨓ \scpolint LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE +U+02A14 ⨔ \npolint LINE INTEGRATION NOT INCLUDING THE POLE +U+02A15 ⨕ \pointint INTEGRAL AROUND A POINT OPERATOR +U+02A16 ⨖ \sqrint QUATERNION INTEGRAL OPERATOR +U+02A18 ⨘ \intx INTEGRAL WITH TIMES SIGN +U+02A19 ⨙ \intcap INTEGRAL WITH INTERSECTION +U+02A1A ⨚ \intcup INTEGRAL WITH UNION +U+02A1B ⨛ \upint INTEGRAL WITH OVERBAR +U+02A1C ⨜ \lowint INTEGRAL WITH UNDERBAR +U+02A1D ⨝ \Join, \join JOIN +U+02A22 ⨢ \ringplus PLUS SIGN WITH SMALL CIRCLE ABOVE +U+02A23 ⨣ \plushat PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE +U+02A24 ⨤ \simplus PLUS SIGN WITH TILDE ABOVE +U+02A25 ⨥ \plusdot PLUS SIGN WITH DOT BELOW +U+02A26 ⨦ \plussim PLUS SIGN WITH TILDE BELOW +U+02A27 ⨧ \plussubtwo PLUS SIGN WITH SUBSCRIPT TWO +U+02A28 ⨨ \plustrif PLUS SIGN WITH BLACK TRIANGLE +U+02A29 ⨩ \commaminus MINUS SIGN WITH COMMA ABOVE +U+02A2A ⨪ \minusdot MINUS SIGN WITH DOT BELOW +U+02A2B ⨫ \minusfdots MINUS SIGN WITH FALLING DOTS +U+02A2C ⨬ \minusrdots MINUS SIGN WITH RISING DOTS +U+02A2D ⨭ \opluslhrim PLUS SIGN IN LEFT HALF CIRCLE +U+02A2E ⨮ \oplusrhrim PLUS SIGN IN RIGHT HALF CIRCLE +U+02A2F ⨯ \Times VECTOR OR CROSS PRODUCT +U+02A30 ⨰ \dottimes MULTIPLICATION SIGN WITH DOT ABOVE +U+02A31 ⨱ \timesbar MULTIPLICATION SIGN WITH UNDERBAR +U+02A32 ⨲ \btimes SEMIDIRECT PRODUCT WITH BOTTOM CLOSED +U+02A33 ⨳ \smashtimes SMASH PRODUCT +U+02A34 ⨴ \otimeslhrim MULTIPLICATION SIGN IN LEFT HALF CIRCLE +U+02A35 ⨵ \otimesrhrim MULTIPLICATION SIGN IN RIGHT HALF CIRCLE +U+02A36 ⨶ \otimeshat CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT +U+02A37 ⨷ \Otimes MULTIPLICATION SIGN IN DOUBLE CIRCLE +U+02A38 ⨸ \odiv CIRCLED DIVISION SIGN +U+02A39 ⨹ \triangleplus PLUS SIGN IN TRIANGLE +U+02A3A ⨺ \triangleminus MINUS SIGN IN TRIANGLE +U+02A3B ⨻ \triangletimes MULTIPLICATION SIGN IN TRIANGLE +U+02A3C ⨼ \intprod INTERIOR PRODUCT +U+02A3D ⨽ \intprodr RIGHTHAND INTERIOR PRODUCT +U+02A3F ⨿ \amalg AMALGAMATION OR COPRODUCT +U+02A40 ⩀ \capdot INTERSECTION WITH DOT +U+02A41 ⩁ \uminus UNION WITH MINUS SIGN +U+02A42 ⩂ \barcup UNION WITH OVERBAR +U+02A43 ⩃ \barcap INTERSECTION WITH OVERBAR +U+02A44 ⩄ \capwedge INTERSECTION WITH LOGICAL AND +U+02A45 ⩅ \cupvee UNION WITH LOGICAL OR +U+02A4A ⩊ \twocups UNION BESIDE AND JOINED WITH UNION +U+02A4B ⩋ \twocaps INTERSECTION BESIDE AND JOINED WITH INTERSECTION +U+02A4C ⩌ \closedvarcup CLOSED UNION WITH SERIFS +U+02A4D ⩍ \closedvarcap CLOSED INTERSECTION WITH SERIFS +U+02A4E ⩎ \Sqcap DOUBLE SQUARE INTERSECTION +U+02A4F ⩏ \Sqcup DOUBLE SQUARE UNION +U+02A50 ⩐ \closedvarcupsmashprod CLOSED UNION WITH SERIFS AND SMASH PRODUCT +U+02A51 ⩑ \wedgeodot LOGICAL AND WITH DOT ABOVE +U+02A52 ⩒ \veeodot LOGICAL OR WITH DOT ABOVE +U+02A53 ⩓ \And DOUBLE LOGICAL AND +U+02A54 ⩔ \Or DOUBLE LOGICAL OR +U+02A55 ⩕ \wedgeonwedge TWO INTERSECTING LOGICAL AND +U+02A56 ⩖ \ElOr TWO INTERSECTING LOGICAL OR +U+02A57 ⩗ \bigslopedvee SLOPING LARGE OR +U+02A58 ⩘ \bigslopedwedge SLOPING LARGE AND +U+02A5A ⩚ \wedgemidvert LOGICAL AND WITH MIDDLE STEM +U+02A5B ⩛ \veemidvert LOGICAL OR WITH MIDDLE STEM +U+02A5C ⩜ \midbarwedge LOGICAL AND WITH HORIZONTAL DASH +U+02A5D ⩝ \midbarvee LOGICAL OR WITH HORIZONTAL DASH +U+02A5E ⩞ \perspcorrespond LOGICAL AND WITH DOUBLE OVERBAR +U+02A5F ⩟ \minhat LOGICAL AND WITH UNDERBAR +U+02A60 ⩠ \wedgedoublebar LOGICAL AND WITH DOUBLE UNDERBAR +U+02A61 ⩡ \varveebar SMALL VEE WITH UNDERBAR +U+02A62 ⩢ \doublebarvee LOGICAL OR WITH DOUBLE OVERBAR +U+02A63 ⩣ \veedoublebar LOGICAL OR WITH DOUBLE UNDERBAR +U+02A66 ⩦ \eqdot EQUALS SIGN WITH DOT BELOW +U+02A67 ⩧ \dotequiv IDENTICAL WITH DOT ABOVE +U+02A6A ⩪ \dotsim TILDE OPERATOR WITH DOT ABOVE +U+02A6B ⩫ \simrdots TILDE OPERATOR WITH RISING DOTS +U+02A6C ⩬ \simminussim SIMILAR MINUS SIMILAR +U+02A6D ⩭ \congdot CONGRUENT WITH DOT ABOVE +U+02A6E ⩮ \asteq EQUALS WITH ASTERISK +U+02A6F ⩯ \hatapprox ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT +U+02A70 ⩰ \approxeqq APPROXIMATELY EQUAL OR EQUAL TO +U+02A71 ⩱ \eqqplus EQUALS SIGN ABOVE PLUS SIGN +U+02A72 ⩲ \pluseqq PLUS SIGN ABOVE EQUALS SIGN +U+02A73 ⩳ \eqqsim EQUALS SIGN ABOVE TILDE OPERATOR +U+02A74 ⩴ \Coloneq DOUBLE COLON EQUAL +U+02A75 ⩵ \Equal TWO CONSECUTIVE EQUALS SIGNS +U+02A76 ⩶ \eqeqeq THREE CONSECUTIVE EQUALS SIGNS +U+02A77 ⩷ \ddotseq EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW +U+02A78 ⩸ \equivDD EQUIVALENT WITH FOUR DOTS ABOVE +U+02A79 ⩹ \ltcir LESS-THAN WITH CIRCLE INSIDE +U+02A7A ⩺ \gtcir GREATER-THAN WITH CIRCLE INSIDE +U+02A7B ⩻ \ltquest LESS-THAN WITH QUESTION MARK ABOVE +U+02A7C ⩼ \gtquest GREATER-THAN WITH QUESTION MARK ABOVE +U+02A7D ⩽ \leqslant LESS-THAN OR SLANTED EQUAL TO +U+02A7D + U+00338 ⩽̸ \nleqslant LESS-THAN OR SLANTED EQUAL TO + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY +U+02A7E ⩾ \geqslant GREATER-THAN OR SLANTED EQUAL TO +U+02A7E + U+00338 ⩾̸ \ngeqslant GREATER-THAN OR SLANTED EQUAL TO + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY +U+02A7F ⩿ \lesdot LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE +U+02A80 ⪀ \gesdot GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE +U+02A81 ⪁ \lesdoto LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE +U+02A82 ⪂ \gesdoto GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE +U+02A83 ⪃ \lesdotor LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT +U+02A84 ⪄ \gesdotol GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT +U+02A85 ⪅ \lessapprox LESS-THAN OR APPROXIMATE +U+02A86 ⪆ \gtrapprox GREATER-THAN OR APPROXIMATE +U+02A87 ⪇ \lneq LESS-THAN AND SINGLE-LINE NOT EQUAL TO +U+02A88 ⪈ \gneq GREATER-THAN AND SINGLE-LINE NOT EQUAL TO +U+02A89 ⪉ \lnapprox LESS-THAN AND NOT APPROXIMATE +U+02A8A ⪊ \gnapprox GREATER-THAN AND NOT APPROXIMATE +U+02A8B ⪋ \lesseqqgtr LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN +U+02A8C ⪌ \gtreqqless GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN +U+02A8D ⪍ \lsime LESS-THAN ABOVE SIMILAR OR EQUAL +U+02A8E ⪎ \gsime GREATER-THAN ABOVE SIMILAR OR EQUAL +U+02A8F ⪏ \lsimg LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN +U+02A90 ⪐ \gsiml GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN +U+02A91 ⪑ \lgE LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL +U+02A92 ⪒ \glE GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL +U+02A93 ⪓ \lesges LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL +U+02A94 ⪔ \gesles GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL +U+02A95 ⪕ \eqslantless SLANTED EQUAL TO OR LESS-THAN +U+02A96 ⪖ \eqslantgtr SLANTED EQUAL TO OR GREATER-THAN +U+02A97 ⪗ \elsdot SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE +U+02A98 ⪘ \egsdot SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE +U+02A99 ⪙ \eqqless DOUBLE-LINE EQUAL TO OR LESS-THAN +U+02A9A ⪚ \eqqgtr DOUBLE-LINE EQUAL TO OR GREATER-THAN +U+02A9B ⪛ \eqqslantless DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN +U+02A9C ⪜ \eqqslantgtr DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN +U+02A9D ⪝ \simless SIMILAR OR LESS-THAN +U+02A9E ⪞ \simgtr SIMILAR OR GREATER-THAN +U+02A9F ⪟ \simlE SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN +U+02AA0 ⪠ \simgE SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN +U+02AA1 ⪡ \NestedLessLess DOUBLE NESTED LESS-THAN +U+02AA1 + U+00338 ⪡̸ \NotNestedLessLess DOUBLE NESTED LESS-THAN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY +U+02AA2 ⪢ \NestedGreaterGreater DOUBLE NESTED GREATER-THAN +U+02AA2 + U+00338 ⪢̸ \NotNestedGreaterGreater DOUBLE NESTED GREATER-THAN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY +U+02AA3 ⪣ \partialmeetcontraction DOUBLE NESTED LESS-THAN WITH UNDERBAR +U+02AA4 ⪤ \glj GREATER-THAN OVERLAPPING LESS-THAN +U+02AA5 ⪥ \gla GREATER-THAN BESIDE LESS-THAN +U+02AA6 ⪦ \ltcc LESS-THAN CLOSED BY CURVE +U+02AA7 ⪧ \gtcc GREATER-THAN CLOSED BY CURVE +U+02AA8 ⪨ \lescc LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL +U+02AA9 ⪩ \gescc GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL +U+02AAA ⪪ \smt SMALLER THAN +U+02AAB ⪫ \lat LARGER THAN +U+02AAC ⪬ \smte SMALLER THAN OR EQUAL TO +U+02AAD ⪭ \late LARGER THAN OR EQUAL TO +U+02AAE ⪮ \bumpeqq EQUALS SIGN WITH BUMPY ABOVE +U+02AAF ⪯ \preceq PRECEDES ABOVE SINGLE-LINE EQUALS SIGN +U+02AAF + U+00338 ⪯̸ \npreceq PRECEDES ABOVE SINGLE-LINE EQUALS SIGN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY +U+02AB0 ⪰ \succeq SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN +U+02AB0 + U+00338 ⪰̸ \nsucceq SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY +U+02AB1 ⪱ \precneq PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO +U+02AB2 ⪲ \succneq SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO +U+02AB3 ⪳ \preceqq PRECEDES ABOVE EQUALS SIGN +U+02AB4 ⪴ \succeqq SUCCEEDS ABOVE EQUALS SIGN +U+02AB5 ⪵ \precneqq PRECEDES ABOVE NOT EQUAL TO +U+02AB6 ⪶ \succneqq SUCCEEDS ABOVE NOT EQUAL TO +U+02AB7 ⪷ \precapprox PRECEDES ABOVE ALMOST EQUAL TO +U+02AB8 ⪸ \succapprox SUCCEEDS ABOVE ALMOST EQUAL TO +U+02AB9 ⪹ \precnapprox PRECEDES ABOVE NOT ALMOST EQUAL TO +U+02ABA ⪺ \succnapprox SUCCEEDS ABOVE NOT ALMOST EQUAL TO +U+02ABB ⪻ \Prec DOUBLE PRECEDES +U+02ABC ⪼ \Succ DOUBLE SUCCEEDS +U+02ABD ⪽ \subsetdot SUBSET WITH DOT +U+02ABE ⪾ \supsetdot SUPERSET WITH DOT +U+02ABF ⪿ \subsetplus SUBSET WITH PLUS SIGN BELOW +U+02AC0 ⫀ \supsetplus SUPERSET WITH PLUS SIGN BELOW +U+02AC1 ⫁ \submult SUBSET WITH MULTIPLICATION SIGN BELOW +U+02AC2 ⫂ \supmult SUPERSET WITH MULTIPLICATION SIGN BELOW +U+02AC3 ⫃ \subedot SUBSET OF OR EQUAL TO WITH DOT ABOVE +U+02AC4 ⫄ \supedot SUPERSET OF OR EQUAL TO WITH DOT ABOVE +U+02AC5 ⫅ \subseteqq SUBSET OF ABOVE EQUALS SIGN +U+02AC5 + U+00338 ⫅̸ \nsubseteqq SUBSET OF ABOVE EQUALS SIGN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY +U+02AC6 ⫆ \supseteqq SUPERSET OF ABOVE EQUALS SIGN +U+02AC6 + U+00338 ⫆̸ \nsupseteqq SUPERSET OF ABOVE EQUALS SIGN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY +U+02AC7 ⫇ \subsim SUBSET OF ABOVE TILDE OPERATOR +U+02AC8 ⫈ \supsim SUPERSET OF ABOVE TILDE OPERATOR +U+02AC9 ⫉ \subsetapprox SUBSET OF ABOVE ALMOST EQUAL TO +U+02ACA ⫊ \supsetapprox SUPERSET OF ABOVE ALMOST EQUAL TO +U+02ACB ⫋ \subsetneqq SUBSET OF ABOVE NOT EQUAL TO +U+02ACC ⫌ \supsetneqq SUPERSET OF ABOVE NOT EQUAL TO +U+02ACD ⫍ \lsqhook SQUARE LEFT OPEN BOX OPERATOR +U+02ACE ⫎ \rsqhook SQUARE RIGHT OPEN BOX OPERATOR +U+02ACF ⫏ \csub CLOSED SUBSET +U+02AD0 ⫐ \csup CLOSED SUPERSET +U+02AD1 ⫑ \csube CLOSED SUBSET OR EQUAL TO +U+02AD2 ⫒ \csupe CLOSED SUPERSET OR EQUAL TO +U+02AD3 ⫓ \subsup SUBSET ABOVE SUPERSET +U+02AD4 ⫔ \supsub SUPERSET ABOVE SUBSET +U+02AD5 ⫕ \subsub SUBSET ABOVE SUBSET +U+02AD6 ⫖ \supsup SUPERSET ABOVE SUPERSET +U+02AD7 ⫗ \suphsub SUPERSET BESIDE SUBSET +U+02AD8 ⫘ \supdsub SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET +U+02AD9 ⫙ \forkv ELEMENT OF OPENING DOWNWARDS +U+02ADB ⫛ \mlcp TRANSVERSAL INTERSECTION +U+02ADC ⫝̸ \forks FORKING +U+02ADD ⫝ \forksnot NONFORKING +U+02AE3 ⫣ \dashV DOUBLE VERTICAL BAR LEFT TURNSTILE +U+02AE4 ⫤ \Dashv VERTICAL BAR DOUBLE LEFT TURNSTILE +U+02AF4 ⫴ \interleave TRIPLE VERTICAL BAR BINARY RELATION +U+02AF6 ⫶ \tdcol TRIPLE COLON OPERATOR +U+02AF7 ⫷ \lllnest TRIPLE NESTED LESS-THAN +U+02AF8 ⫸ \gggnest TRIPLE NESTED GREATER-THAN +U+02AF9 ⫹ \leqqslant DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO +U+02AFA ⫺ \geqqslant DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO +U+02B05 ⬅ \:arrow_left: LEFTWARDS BLACK ARROW +U+02B06 ⬆ \:arrow_up: UPWARDS BLACK ARROW +U+02B07 ⬇ \:arrow_down: DOWNWARDS BLACK ARROW +U+02B12 ⬒ \squaretopblack SQUARE WITH TOP HALF BLACK +U+02B13 ⬓ \squarebotblack SQUARE WITH BOTTOM HALF BLACK +U+02B14 ⬔ \squareurblack SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK +U+02B15 ⬕ \squarellblack SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK +U+02B16 ⬖ \diamondleftblack DIAMOND WITH LEFT HALF BLACK +U+02B17 ⬗ \diamondrightblack DIAMOND WITH RIGHT HALF BLACK +U+02B18 ⬘ \diamondtopblack DIAMOND WITH TOP HALF BLACK +U+02B19 ⬙ \diamondbotblack DIAMOND WITH BOTTOM HALF BLACK +U+02B1A ⬚ \dottedsquare DOTTED SQUARE +U+02B1B ⬛ \lgblksquare, \:black_large_square: BLACK LARGE SQUARE +U+02B1C ⬜ \lgwhtsquare, \:white_large_square: WHITE LARGE SQUARE +U+02B1D ⬝ \vysmblksquare BLACK VERY SMALL SQUARE +U+02B1E ⬞ \vysmwhtsquare WHITE VERY SMALL SQUARE +U+02B1F ⬟ \pentagonblack BLACK PENTAGON +U+02B20 ⬠ \pentagon WHITE PENTAGON +U+02B21 ⬡ \varhexagon WHITE HEXAGON +U+02B22 ⬢ \varhexagonblack BLACK HEXAGON +U+02B23 ⬣ \hexagonblack HORIZONTAL BLACK HEXAGON +U+02B24 ⬤ \lgblkcircle BLACK LARGE CIRCLE +U+02B25 ⬥ \mdblkdiamond BLACK MEDIUM DIAMOND +U+02B26 ⬦ \mdwhtdiamond WHITE MEDIUM DIAMOND +U+02B27 ⬧ \mdblklozenge BLACK MEDIUM LOZENGE +U+02B28 ⬨ \mdwhtlozenge WHITE MEDIUM LOZENGE +U+02B29 ⬩ \smblkdiamond BLACK SMALL DIAMOND +U+02B2A ⬪ \smblklozenge BLACK SMALL LOZENGE +U+02B2B ⬫ \smwhtlozenge WHITE SMALL LOZENGE +U+02B2C ⬬ \blkhorzoval BLACK HORIZONTAL ELLIPSE +U+02B2D ⬭ \whthorzoval WHITE HORIZONTAL ELLIPSE +U+02B2E ⬮ \blkvertoval BLACK VERTICAL ELLIPSE +U+02B2F ⬯ \whtvertoval WHITE VERTICAL ELLIPSE +U+02B30 ⬰ \circleonleftarrow LEFT ARROW WITH SMALL CIRCLE +U+02B31 ⬱ \leftthreearrows THREE LEFTWARDS ARROWS +U+02B32 ⬲ \leftarrowonoplus LEFT ARROW WITH CIRCLED PLUS +U+02B33 ⬳ \longleftsquigarrow LONG LEFTWARDS SQUIGGLE ARROW +U+02B34 ⬴ \nvtwoheadleftarrow LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE +U+02B35 ⬵ \nVtwoheadleftarrow LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE +U+02B36 ⬶ \twoheadmapsfrom LEFTWARDS TWO-HEADED ARROW FROM BAR +U+02B37 ⬷ \twoheadleftdbkarrow LEFTWARDS TWO-HEADED TRIPLE DASH ARROW +U+02B38 ⬸ \leftdotarrow LEFTWARDS ARROW WITH DOTTED STEM +U+02B39 ⬹ \nvleftarrowtail LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE +U+02B3A ⬺ \nVleftarrowtail LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE +U+02B3B ⬻ \twoheadleftarrowtail LEFTWARDS TWO-HEADED ARROW WITH TAIL +U+02B3C ⬼ \nvtwoheadleftarrowtail LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE +U+02B3D ⬽ \nVtwoheadleftarrowtail LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE +U+02B3E ⬾ \leftarrowx LEFTWARDS ARROW THROUGH X +U+02B3F ⬿ \leftcurvedarrow WAVE ARROW POINTING DIRECTLY LEFT +U+02B40 ⭀ \equalleftarrow EQUALS SIGN ABOVE LEFTWARDS ARROW +U+02B41 ⭁ \bsimilarleftarrow REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW +U+02B42 ⭂ \leftarrowbackapprox LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO +U+02B43 ⭃ \rightarrowgtr RIGHTWARDS ARROW THROUGH GREATER-THAN +U+02B44 ⭄ \rightarrowsupset RIGHTWARDS ARROW THROUGH SUPERSET +U+02B45 ⭅ \LLeftarrow LEFTWARDS QUADRUPLE ARROW +U+02B46 ⭆ \RRightarrow RIGHTWARDS QUADRUPLE ARROW +U+02B47 ⭇ \bsimilarrightarrow REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW +U+02B48 ⭈ \rightarrowbackapprox RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO +U+02B49 ⭉ \similarleftarrow TILDE OPERATOR ABOVE LEFTWARDS ARROW +U+02B4A ⭊ \leftarrowapprox LEFTWARDS ARROW ABOVE ALMOST EQUAL TO +U+02B4B ⭋ \leftarrowbsimilar LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR +U+02B4C ⭌ \rightarrowbsimilar RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR +U+02B50 ⭐ \medwhitestar, \:star: WHITE MEDIUM STAR +U+02B51 ⭑ \medblackstar BLACK SMALL STAR +U+02B52 ⭒ \smwhitestar WHITE SMALL STAR +U+02B53 ⭓ \rightpentagonblack BLACK RIGHT-POINTING PENTAGON +U+02B54 ⭔ \rightpentagon WHITE RIGHT-POINTING PENTAGON +U+02B55 ⭕ \:o: HEAVY LARGE CIRCLE +U+02C7C ⱼ \_j LATIN SUBSCRIPT SMALL LETTER J +U+02C7D ⱽ \^V MODIFIER LETTER CAPITAL V +U+03012 〒 \postalmark POSTAL MARK +U+03030 〰 \:wavy_dash: WAVY DASH +U+0303D 〽 \:part_alternation_mark: PART ALTERNATION MARK +U+03297 ㊗ \:congratulations: CIRCLED IDEOGRAPH CONGRATULATION +U+03299 ㊙ \:secret: CIRCLED IDEOGRAPH SECRET +U+1D400 𝐀 \bfA MATHEMATICAL BOLD CAPITAL A +U+1D401 𝐁 \bfB MATHEMATICAL BOLD CAPITAL B +U+1D402 𝐂 \bfC MATHEMATICAL BOLD CAPITAL C +U+1D403 𝐃 \bfD MATHEMATICAL BOLD CAPITAL D +U+1D404 𝐄 \bfE MATHEMATICAL BOLD CAPITAL E +U+1D405 𝐅 \bfF MATHEMATICAL BOLD CAPITAL F +U+1D406 𝐆 \bfG MATHEMATICAL BOLD CAPITAL G +U+1D407 𝐇 \bfH MATHEMATICAL BOLD CAPITAL H +U+1D408 𝐈 \bfI MATHEMATICAL BOLD CAPITAL I +U+1D409 𝐉 \bfJ MATHEMATICAL BOLD CAPITAL J +U+1D40A 𝐊 \bfK MATHEMATICAL BOLD CAPITAL K +U+1D40B 𝐋 \bfL MATHEMATICAL BOLD CAPITAL L +U+1D40C 𝐌 \bfM MATHEMATICAL BOLD CAPITAL M +U+1D40D 𝐍 \bfN MATHEMATICAL BOLD CAPITAL N +U+1D40E 𝐎 \bfO MATHEMATICAL BOLD CAPITAL O +U+1D40F 𝐏 \bfP MATHEMATICAL BOLD CAPITAL P +U+1D410 𝐐 \bfQ MATHEMATICAL BOLD CAPITAL Q +U+1D411 𝐑 \bfR MATHEMATICAL BOLD CAPITAL R +U+1D412 𝐒 \bfS MATHEMATICAL BOLD CAPITAL S +U+1D413 𝐓 \bfT MATHEMATICAL BOLD CAPITAL T +U+1D414 𝐔 \bfU MATHEMATICAL BOLD CAPITAL U +U+1D415 𝐕 \bfV MATHEMATICAL BOLD CAPITAL V +U+1D416 𝐖 \bfW MATHEMATICAL BOLD CAPITAL W +U+1D417 𝐗 \bfX MATHEMATICAL BOLD CAPITAL X +U+1D418 𝐘 \bfY MATHEMATICAL BOLD CAPITAL Y +U+1D419 𝐙 \bfZ MATHEMATICAL BOLD CAPITAL Z +U+1D41A 𝐚 \bfa MATHEMATICAL BOLD SMALL A +U+1D41B 𝐛 \bfb MATHEMATICAL BOLD SMALL B +U+1D41C 𝐜 \bfc MATHEMATICAL BOLD SMALL C +U+1D41D 𝐝 \bfd MATHEMATICAL BOLD SMALL D +U+1D41E 𝐞 \bfe MATHEMATICAL BOLD SMALL E +U+1D41F 𝐟 \bff MATHEMATICAL BOLD SMALL F +U+1D420 𝐠 \bfg MATHEMATICAL BOLD SMALL G +U+1D421 𝐡 \bfh MATHEMATICAL BOLD SMALL H +U+1D422 𝐢 \bfi MATHEMATICAL BOLD SMALL I +U+1D423 𝐣 \bfj MATHEMATICAL BOLD SMALL J +U+1D424 𝐤 \bfk MATHEMATICAL BOLD SMALL K +U+1D425 𝐥 \bfl MATHEMATICAL BOLD SMALL L +U+1D426 𝐦 \bfm MATHEMATICAL BOLD SMALL M +U+1D427 𝐧 \bfn MATHEMATICAL BOLD SMALL N +U+1D428 𝐨 \bfo MATHEMATICAL BOLD SMALL O +U+1D429 𝐩 \bfp MATHEMATICAL BOLD SMALL P +U+1D42A 𝐪 \bfq MATHEMATICAL BOLD SMALL Q +U+1D42B 𝐫 \bfr MATHEMATICAL BOLD SMALL R +U+1D42C 𝐬 \bfs MATHEMATICAL BOLD SMALL S +U+1D42D 𝐭 \bft MATHEMATICAL BOLD SMALL T +U+1D42E 𝐮 \bfu MATHEMATICAL BOLD SMALL U +U+1D42F 𝐯 \bfv MATHEMATICAL BOLD SMALL V +U+1D430 𝐰 \bfw MATHEMATICAL BOLD SMALL W +U+1D431 𝐱 \bfx MATHEMATICAL BOLD SMALL X +U+1D432 𝐲 \bfy MATHEMATICAL BOLD SMALL Y +U+1D433 𝐳 \bfz MATHEMATICAL BOLD SMALL Z +U+1D434 𝐴 \itA MATHEMATICAL ITALIC CAPITAL A +U+1D435 𝐵 \itB MATHEMATICAL ITALIC CAPITAL B +U+1D436 𝐶 \itC MATHEMATICAL ITALIC CAPITAL C +U+1D437 𝐷 \itD MATHEMATICAL ITALIC CAPITAL D +U+1D438 𝐸 \itE MATHEMATICAL ITALIC CAPITAL E +U+1D439 𝐹 \itF MATHEMATICAL ITALIC CAPITAL F +U+1D43A 𝐺 \itG MATHEMATICAL ITALIC CAPITAL G +U+1D43B 𝐻 \itH MATHEMATICAL ITALIC CAPITAL H +U+1D43C 𝐼 \itI MATHEMATICAL ITALIC CAPITAL I +U+1D43D 𝐽 \itJ MATHEMATICAL ITALIC CAPITAL J +U+1D43E 𝐾 \itK MATHEMATICAL ITALIC CAPITAL K +U+1D43F 𝐿 \itL MATHEMATICAL ITALIC CAPITAL L +U+1D440 𝑀 \itM MATHEMATICAL ITALIC CAPITAL M +U+1D441 𝑁 \itN MATHEMATICAL ITALIC CAPITAL N +U+1D442 𝑂 \itO MATHEMATICAL ITALIC CAPITAL O +U+1D443 𝑃 \itP MATHEMATICAL ITALIC CAPITAL P +U+1D444 𝑄 \itQ MATHEMATICAL ITALIC CAPITAL Q +U+1D445 𝑅 \itR MATHEMATICAL ITALIC CAPITAL R +U+1D446 𝑆 \itS MATHEMATICAL ITALIC CAPITAL S +U+1D447 𝑇 \itT MATHEMATICAL ITALIC CAPITAL T +U+1D448 𝑈 \itU MATHEMATICAL ITALIC CAPITAL U +U+1D449 𝑉 \itV MATHEMATICAL ITALIC CAPITAL V +U+1D44A 𝑊 \itW MATHEMATICAL ITALIC CAPITAL W +U+1D44B 𝑋 \itX MATHEMATICAL ITALIC CAPITAL X +U+1D44C 𝑌 \itY MATHEMATICAL ITALIC CAPITAL Y +U+1D44D 𝑍 \itZ MATHEMATICAL ITALIC CAPITAL Z +U+1D44E 𝑎 \ita MATHEMATICAL ITALIC SMALL A +U+1D44F 𝑏 \itb MATHEMATICAL ITALIC SMALL B +U+1D450 𝑐 \itc MATHEMATICAL ITALIC SMALL C +U+1D451 𝑑 \itd MATHEMATICAL ITALIC SMALL D +U+1D452 𝑒 \ite MATHEMATICAL ITALIC SMALL E +U+1D453 𝑓 \itf MATHEMATICAL ITALIC SMALL F +U+1D454 𝑔 \itg MATHEMATICAL ITALIC SMALL G +U+1D456 𝑖 \iti MATHEMATICAL ITALIC SMALL I +U+1D457 𝑗 \itj MATHEMATICAL ITALIC SMALL J +U+1D458 𝑘 \itk MATHEMATICAL ITALIC SMALL K +U+1D459 𝑙 \itl MATHEMATICAL ITALIC SMALL L +U+1D45A 𝑚 \itm MATHEMATICAL ITALIC SMALL M +U+1D45B 𝑛 \itn MATHEMATICAL ITALIC SMALL N +U+1D45C 𝑜 \ito MATHEMATICAL ITALIC SMALL O +U+1D45D 𝑝 \itp MATHEMATICAL ITALIC SMALL P +U+1D45E 𝑞 \itq MATHEMATICAL ITALIC SMALL Q +U+1D45F 𝑟 \itr MATHEMATICAL ITALIC SMALL R +U+1D460 𝑠 \its MATHEMATICAL ITALIC SMALL S +U+1D461 𝑡 \itt MATHEMATICAL ITALIC SMALL T +U+1D462 𝑢 \itu MATHEMATICAL ITALIC SMALL U +U+1D463 𝑣 \itv MATHEMATICAL ITALIC SMALL V +U+1D464 𝑤 \itw MATHEMATICAL ITALIC SMALL W +U+1D465 𝑥 \itx MATHEMATICAL ITALIC SMALL X +U+1D466 𝑦 \ity MATHEMATICAL ITALIC SMALL Y +U+1D467 𝑧 \itz MATHEMATICAL ITALIC SMALL Z +U+1D468 𝑨 \biA MATHEMATICAL BOLD ITALIC CAPITAL A +U+1D469 𝑩 \biB MATHEMATICAL BOLD ITALIC CAPITAL B +U+1D46A 𝑪 \biC MATHEMATICAL BOLD ITALIC CAPITAL C +U+1D46B 𝑫 \biD MATHEMATICAL BOLD ITALIC CAPITAL D +U+1D46C 𝑬 \biE MATHEMATICAL BOLD ITALIC CAPITAL E +U+1D46D 𝑭 \biF MATHEMATICAL BOLD ITALIC CAPITAL F +U+1D46E 𝑮 \biG MATHEMATICAL BOLD ITALIC CAPITAL G +U+1D46F 𝑯 \biH MATHEMATICAL BOLD ITALIC CAPITAL H +U+1D470 𝑰 \biI MATHEMATICAL BOLD ITALIC CAPITAL I +U+1D471 𝑱 \biJ MATHEMATICAL BOLD ITALIC CAPITAL J +U+1D472 𝑲 \biK MATHEMATICAL BOLD ITALIC CAPITAL K +U+1D473 𝑳 \biL MATHEMATICAL BOLD ITALIC CAPITAL L +U+1D474 𝑴 \biM MATHEMATICAL BOLD ITALIC CAPITAL M +U+1D475 𝑵 \biN MATHEMATICAL BOLD ITALIC CAPITAL N +U+1D476 𝑶 \biO MATHEMATICAL BOLD ITALIC CAPITAL O +U+1D477 𝑷 \biP MATHEMATICAL BOLD ITALIC CAPITAL P +U+1D478 𝑸 \biQ MATHEMATICAL BOLD ITALIC CAPITAL Q +U+1D479 𝑹 \biR MATHEMATICAL BOLD ITALIC CAPITAL R +U+1D47A 𝑺 \biS MATHEMATICAL BOLD ITALIC CAPITAL S +U+1D47B 𝑻 \biT MATHEMATICAL BOLD ITALIC CAPITAL T +U+1D47C 𝑼 \biU MATHEMATICAL BOLD ITALIC CAPITAL U +U+1D47D 𝑽 \biV MATHEMATICAL BOLD ITALIC CAPITAL V +U+1D47E 𝑾 \biW MATHEMATICAL BOLD ITALIC CAPITAL W +U+1D47F 𝑿 \biX MATHEMATICAL BOLD ITALIC CAPITAL X +U+1D480 𝒀 \biY MATHEMATICAL BOLD ITALIC CAPITAL Y +U+1D481 𝒁 \biZ MATHEMATICAL BOLD ITALIC CAPITAL Z +U+1D482 𝒂 \bia MATHEMATICAL BOLD ITALIC SMALL A +U+1D483 𝒃 \bib MATHEMATICAL BOLD ITALIC SMALL B +U+1D484 𝒄 \bic MATHEMATICAL BOLD ITALIC SMALL C +U+1D485 𝒅 \bid MATHEMATICAL BOLD ITALIC SMALL D +U+1D486 𝒆 \bie MATHEMATICAL BOLD ITALIC SMALL E +U+1D487 𝒇 \bif MATHEMATICAL BOLD ITALIC SMALL F +U+1D488 𝒈 \big MATHEMATICAL BOLD ITALIC SMALL G +U+1D489 𝒉 \bih MATHEMATICAL BOLD ITALIC SMALL H +U+1D48A 𝒊 \bii MATHEMATICAL BOLD ITALIC SMALL I +U+1D48B 𝒋 \bij MATHEMATICAL BOLD ITALIC SMALL J +U+1D48C 𝒌 \bik MATHEMATICAL BOLD ITALIC SMALL K +U+1D48D 𝒍 \bil MATHEMATICAL BOLD ITALIC SMALL L +U+1D48E 𝒎 \bim MATHEMATICAL BOLD ITALIC SMALL M +U+1D48F 𝒏 \bin MATHEMATICAL BOLD ITALIC SMALL N +U+1D490 𝒐 \bio MATHEMATICAL BOLD ITALIC SMALL O +U+1D491 𝒑 \bip MATHEMATICAL BOLD ITALIC SMALL P +U+1D492 𝒒 \biq MATHEMATICAL BOLD ITALIC SMALL Q +U+1D493 𝒓 \bir MATHEMATICAL BOLD ITALIC SMALL R +U+1D494 𝒔 \bis MATHEMATICAL BOLD ITALIC SMALL S +U+1D495 𝒕 \bit MATHEMATICAL BOLD ITALIC SMALL T +U+1D496 𝒖 \biu MATHEMATICAL BOLD ITALIC SMALL U +U+1D497 𝒗 \biv MATHEMATICAL BOLD ITALIC SMALL V +U+1D498 𝒘 \biw MATHEMATICAL BOLD ITALIC SMALL W +U+1D499 𝒙 \bix MATHEMATICAL BOLD ITALIC SMALL X +U+1D49A 𝒚 \biy MATHEMATICAL BOLD ITALIC SMALL Y +U+1D49B 𝒛 \biz MATHEMATICAL BOLD ITALIC SMALL Z +U+1D49C 𝒜 \scrA MATHEMATICAL SCRIPT CAPITAL A +U+1D49E 𝒞 \scrC MATHEMATICAL SCRIPT CAPITAL C +U+1D49F 𝒟 \scrD MATHEMATICAL SCRIPT CAPITAL D +U+1D4A2 𝒢 \scrG MATHEMATICAL SCRIPT CAPITAL G +U+1D4A5 𝒥 \scrJ MATHEMATICAL SCRIPT CAPITAL J +U+1D4A6 𝒦 \scrK MATHEMATICAL SCRIPT CAPITAL K +U+1D4A9 𝒩 \scrN MATHEMATICAL SCRIPT CAPITAL N +U+1D4AA 𝒪 \scrO MATHEMATICAL SCRIPT CAPITAL O +U+1D4AB 𝒫 \scrP MATHEMATICAL SCRIPT CAPITAL P +U+1D4AC 𝒬 \scrQ MATHEMATICAL SCRIPT CAPITAL Q +U+1D4AE 𝒮 \scrS MATHEMATICAL SCRIPT CAPITAL S +U+1D4AF 𝒯 \scrT MATHEMATICAL SCRIPT CAPITAL T +U+1D4B0 𝒰 \scrU MATHEMATICAL SCRIPT CAPITAL U +U+1D4B1 𝒱 \scrV MATHEMATICAL SCRIPT CAPITAL V +U+1D4B2 𝒲 \scrW MATHEMATICAL SCRIPT CAPITAL W +U+1D4B3 𝒳 \scrX MATHEMATICAL SCRIPT CAPITAL X +U+1D4B4 𝒴 \scrY MATHEMATICAL SCRIPT CAPITAL Y +U+1D4B5 𝒵 \scrZ MATHEMATICAL SCRIPT CAPITAL Z +U+1D4B6 𝒶 \scra MATHEMATICAL SCRIPT SMALL A +U+1D4B7 𝒷 \scrb MATHEMATICAL SCRIPT SMALL B +U+1D4B8 𝒸 \scrc MATHEMATICAL SCRIPT SMALL C +U+1D4B9 𝒹 \scrd MATHEMATICAL SCRIPT SMALL D +U+1D4BB 𝒻 \scrf MATHEMATICAL SCRIPT SMALL F +U+1D4BD 𝒽 \scrh MATHEMATICAL SCRIPT SMALL H +U+1D4BE 𝒾 \scri MATHEMATICAL SCRIPT SMALL I +U+1D4BF 𝒿 \scrj MATHEMATICAL SCRIPT SMALL J +U+1D4C0 𝓀 \scrk MATHEMATICAL SCRIPT SMALL K +U+1D4C1 𝓁 \scrl MATHEMATICAL SCRIPT SMALL L +U+1D4C2 𝓂 \scrm MATHEMATICAL SCRIPT SMALL M +U+1D4C3 𝓃 \scrn MATHEMATICAL SCRIPT SMALL N +U+1D4C5 𝓅 \scrp MATHEMATICAL SCRIPT SMALL P +U+1D4C6 𝓆 \scrq MATHEMATICAL SCRIPT SMALL Q +U+1D4C7 𝓇 \scrr MATHEMATICAL SCRIPT SMALL R +U+1D4C8 𝓈 \scrs MATHEMATICAL SCRIPT SMALL S +U+1D4C9 𝓉 \scrt MATHEMATICAL SCRIPT SMALL T +U+1D4CA 𝓊 \scru MATHEMATICAL SCRIPT SMALL U +U+1D4CB 𝓋 \scrv MATHEMATICAL SCRIPT SMALL V +U+1D4CC 𝓌 \scrw MATHEMATICAL SCRIPT SMALL W +U+1D4CD 𝓍 \scrx MATHEMATICAL SCRIPT SMALL X +U+1D4CE 𝓎 \scry MATHEMATICAL SCRIPT SMALL Y +U+1D4CF 𝓏 \scrz MATHEMATICAL SCRIPT SMALL Z +U+1D4D0 𝓐 \bscrA MATHEMATICAL BOLD SCRIPT CAPITAL A +U+1D4D1 𝓑 \bscrB MATHEMATICAL BOLD SCRIPT CAPITAL B +U+1D4D2 𝓒 \bscrC MATHEMATICAL BOLD SCRIPT CAPITAL C +U+1D4D3 𝓓 \bscrD MATHEMATICAL BOLD SCRIPT CAPITAL D +U+1D4D4 𝓔 \bscrE MATHEMATICAL BOLD SCRIPT CAPITAL E +U+1D4D5 𝓕 \bscrF MATHEMATICAL BOLD SCRIPT CAPITAL F +U+1D4D6 𝓖 \bscrG MATHEMATICAL BOLD SCRIPT CAPITAL G +U+1D4D7 𝓗 \bscrH MATHEMATICAL BOLD SCRIPT CAPITAL H +U+1D4D8 𝓘 \bscrI MATHEMATICAL BOLD SCRIPT CAPITAL I +U+1D4D9 𝓙 \bscrJ MATHEMATICAL BOLD SCRIPT CAPITAL J +U+1D4DA 𝓚 \bscrK MATHEMATICAL BOLD SCRIPT CAPITAL K +U+1D4DB 𝓛 \bscrL MATHEMATICAL BOLD SCRIPT CAPITAL L +U+1D4DC 𝓜 \bscrM MATHEMATICAL BOLD SCRIPT CAPITAL M +U+1D4DD 𝓝 \bscrN MATHEMATICAL BOLD SCRIPT CAPITAL N +U+1D4DE 𝓞 \bscrO MATHEMATICAL BOLD SCRIPT CAPITAL O +U+1D4DF 𝓟 \bscrP MATHEMATICAL BOLD SCRIPT CAPITAL P +U+1D4E0 𝓠 \bscrQ MATHEMATICAL BOLD SCRIPT CAPITAL Q +U+1D4E1 𝓡 \bscrR MATHEMATICAL BOLD SCRIPT CAPITAL R +U+1D4E2 𝓢 \bscrS MATHEMATICAL BOLD SCRIPT CAPITAL S +U+1D4E3 𝓣 \bscrT MATHEMATICAL BOLD SCRIPT CAPITAL T +U+1D4E4 𝓤 \bscrU MATHEMATICAL BOLD SCRIPT CAPITAL U +U+1D4E5 𝓥 \bscrV MATHEMATICAL BOLD SCRIPT CAPITAL V +U+1D4E6 𝓦 \bscrW MATHEMATICAL BOLD SCRIPT CAPITAL W +U+1D4E7 𝓧 \bscrX MATHEMATICAL BOLD SCRIPT CAPITAL X +U+1D4E8 𝓨 \bscrY MATHEMATICAL BOLD SCRIPT CAPITAL Y +U+1D4E9 𝓩 \bscrZ MATHEMATICAL BOLD SCRIPT CAPITAL Z +U+1D4EA 𝓪 \bscra MATHEMATICAL BOLD SCRIPT SMALL A +U+1D4EB 𝓫 \bscrb MATHEMATICAL BOLD SCRIPT SMALL B +U+1D4EC 𝓬 \bscrc MATHEMATICAL BOLD SCRIPT SMALL C +U+1D4ED 𝓭 \bscrd MATHEMATICAL BOLD SCRIPT SMALL D +U+1D4EE 𝓮 \bscre MATHEMATICAL BOLD SCRIPT SMALL E +U+1D4EF 𝓯 \bscrf MATHEMATICAL BOLD SCRIPT SMALL F +U+1D4F0 𝓰 \bscrg MATHEMATICAL BOLD SCRIPT SMALL G +U+1D4F1 𝓱 \bscrh MATHEMATICAL BOLD SCRIPT SMALL H +U+1D4F2 𝓲 \bscri MATHEMATICAL BOLD SCRIPT SMALL I +U+1D4F3 𝓳 \bscrj MATHEMATICAL BOLD SCRIPT SMALL J +U+1D4F4 𝓴 \bscrk MATHEMATICAL BOLD SCRIPT SMALL K +U+1D4F5 𝓵 \bscrl MATHEMATICAL BOLD SCRIPT SMALL L +U+1D4F6 𝓶 \bscrm MATHEMATICAL BOLD SCRIPT SMALL M +U+1D4F7 𝓷 \bscrn MATHEMATICAL BOLD SCRIPT SMALL N +U+1D4F8 𝓸 \bscro MATHEMATICAL BOLD SCRIPT SMALL O +U+1D4F9 𝓹 \bscrp MATHEMATICAL BOLD SCRIPT SMALL P +U+1D4FA 𝓺 \bscrq MATHEMATICAL BOLD SCRIPT SMALL Q +U+1D4FB 𝓻 \bscrr MATHEMATICAL BOLD SCRIPT SMALL R +U+1D4FC 𝓼 \bscrs MATHEMATICAL BOLD SCRIPT SMALL S +U+1D4FD 𝓽 \bscrt MATHEMATICAL BOLD SCRIPT SMALL T +U+1D4FE 𝓾 \bscru MATHEMATICAL BOLD SCRIPT SMALL U +U+1D4FF 𝓿 \bscrv MATHEMATICAL BOLD SCRIPT SMALL V +U+1D500 𝔀 \bscrw MATHEMATICAL BOLD SCRIPT SMALL W +U+1D501 𝔁 \bscrx MATHEMATICAL BOLD SCRIPT SMALL X +U+1D502 𝔂 \bscry MATHEMATICAL BOLD SCRIPT SMALL Y +U+1D503 𝔃 \bscrz MATHEMATICAL BOLD SCRIPT SMALL Z +U+1D504 𝔄 \frakA MATHEMATICAL FRAKTUR CAPITAL A +U+1D505 𝔅 \frakB MATHEMATICAL FRAKTUR CAPITAL B +U+1D507 𝔇 \frakD MATHEMATICAL FRAKTUR CAPITAL D +U+1D508 𝔈 \frakE MATHEMATICAL FRAKTUR CAPITAL E +U+1D509 𝔉 \frakF MATHEMATICAL FRAKTUR CAPITAL F +U+1D50A 𝔊 \frakG MATHEMATICAL FRAKTUR CAPITAL G +U+1D50D 𝔍 \frakJ MATHEMATICAL FRAKTUR CAPITAL J +U+1D50E 𝔎 \frakK MATHEMATICAL FRAKTUR CAPITAL K +U+1D50F 𝔏 \frakL MATHEMATICAL FRAKTUR CAPITAL L +U+1D510 𝔐 \frakM MATHEMATICAL FRAKTUR CAPITAL M +U+1D511 𝔑 \frakN MATHEMATICAL FRAKTUR CAPITAL N +U+1D512 𝔒 \frakO MATHEMATICAL FRAKTUR CAPITAL O +U+1D513 𝔓 \frakP MATHEMATICAL FRAKTUR CAPITAL P +U+1D514 𝔔 \frakQ MATHEMATICAL FRAKTUR CAPITAL Q +U+1D516 𝔖 \frakS MATHEMATICAL FRAKTUR CAPITAL S +U+1D517 𝔗 \frakT MATHEMATICAL FRAKTUR CAPITAL T +U+1D518 𝔘 \frakU MATHEMATICAL FRAKTUR CAPITAL U +U+1D519 𝔙 \frakV MATHEMATICAL FRAKTUR CAPITAL V +U+1D51A 𝔚 \frakW MATHEMATICAL FRAKTUR CAPITAL W +U+1D51B 𝔛 \frakX MATHEMATICAL FRAKTUR CAPITAL X +U+1D51C 𝔜 \frakY MATHEMATICAL FRAKTUR CAPITAL Y +U+1D51E 𝔞 \fraka MATHEMATICAL FRAKTUR SMALL A +U+1D51F 𝔟 \frakb MATHEMATICAL FRAKTUR SMALL B +U+1D520 𝔠 \frakc MATHEMATICAL FRAKTUR SMALL C +U+1D521 𝔡 \frakd MATHEMATICAL FRAKTUR SMALL D +U+1D522 𝔢 \frake MATHEMATICAL FRAKTUR SMALL E +U+1D523 𝔣 \frakf MATHEMATICAL FRAKTUR SMALL F +U+1D524 𝔤 \frakg MATHEMATICAL FRAKTUR SMALL G +U+1D525 𝔥 \frakh MATHEMATICAL FRAKTUR SMALL H +U+1D526 𝔦 \fraki MATHEMATICAL FRAKTUR SMALL I +U+1D527 𝔧 \frakj MATHEMATICAL FRAKTUR SMALL J +U+1D528 𝔨 \frakk MATHEMATICAL FRAKTUR SMALL K +U+1D529 𝔩 \frakl MATHEMATICAL FRAKTUR SMALL L +U+1D52A 𝔪 \frakm MATHEMATICAL FRAKTUR SMALL M +U+1D52B 𝔫 \frakn MATHEMATICAL FRAKTUR SMALL N +U+1D52C 𝔬 \frako MATHEMATICAL FRAKTUR SMALL O +U+1D52D 𝔭 \frakp MATHEMATICAL FRAKTUR SMALL P +U+1D52E 𝔮 \frakq MATHEMATICAL FRAKTUR SMALL Q +U+1D52F 𝔯 \frakr MATHEMATICAL FRAKTUR SMALL R +U+1D530 𝔰 \fraks MATHEMATICAL FRAKTUR SMALL S +U+1D531 𝔱 \frakt MATHEMATICAL FRAKTUR SMALL T +U+1D532 𝔲 \fraku MATHEMATICAL FRAKTUR SMALL U +U+1D533 𝔳 \frakv MATHEMATICAL FRAKTUR SMALL V +U+1D534 𝔴 \frakw MATHEMATICAL FRAKTUR SMALL W +U+1D535 𝔵 \frakx MATHEMATICAL FRAKTUR SMALL X +U+1D536 𝔶 \fraky MATHEMATICAL FRAKTUR SMALL Y +U+1D537 𝔷 \frakz MATHEMATICAL FRAKTUR SMALL Z +U+1D538 𝔸 \bbA MATHEMATICAL DOUBLE-STRUCK CAPITAL A +U+1D539 𝔹 \bbB MATHEMATICAL DOUBLE-STRUCK CAPITAL B +U+1D53B 𝔻 \bbD MATHEMATICAL DOUBLE-STRUCK CAPITAL D +U+1D53C 𝔼 \bbE MATHEMATICAL DOUBLE-STRUCK CAPITAL E +U+1D53D 𝔽 \bbF MATHEMATICAL DOUBLE-STRUCK CAPITAL F +U+1D53E 𝔾 \bbG MATHEMATICAL DOUBLE-STRUCK CAPITAL G +U+1D540 𝕀 \bbI MATHEMATICAL DOUBLE-STRUCK CAPITAL I +U+1D541 𝕁 \bbJ MATHEMATICAL DOUBLE-STRUCK CAPITAL J +U+1D542 𝕂 \bbK MATHEMATICAL DOUBLE-STRUCK CAPITAL K +U+1D543 𝕃 \bbL MATHEMATICAL DOUBLE-STRUCK CAPITAL L +U+1D544 𝕄 \bbM MATHEMATICAL DOUBLE-STRUCK CAPITAL M +U+1D546 𝕆 \bbO MATHEMATICAL DOUBLE-STRUCK CAPITAL O +U+1D54A 𝕊 \bbS MATHEMATICAL DOUBLE-STRUCK CAPITAL S +U+1D54B 𝕋 \bbT MATHEMATICAL DOUBLE-STRUCK CAPITAL T +U+1D54C 𝕌 \bbU MATHEMATICAL DOUBLE-STRUCK CAPITAL U +U+1D54D 𝕍 \bbV MATHEMATICAL DOUBLE-STRUCK CAPITAL V +U+1D54E 𝕎 \bbW MATHEMATICAL DOUBLE-STRUCK CAPITAL W +U+1D54F 𝕏 \bbX MATHEMATICAL DOUBLE-STRUCK CAPITAL X +U+1D550 𝕐 \bbY MATHEMATICAL DOUBLE-STRUCK CAPITAL Y +U+1D552 𝕒 \bba MATHEMATICAL DOUBLE-STRUCK SMALL A +U+1D553 𝕓 \bbb MATHEMATICAL DOUBLE-STRUCK SMALL B +U+1D554 𝕔 \bbc MATHEMATICAL DOUBLE-STRUCK SMALL C +U+1D555 𝕕 \bbd MATHEMATICAL DOUBLE-STRUCK SMALL D +U+1D556 𝕖 \bbe MATHEMATICAL DOUBLE-STRUCK SMALL E +U+1D557 𝕗 \bbf MATHEMATICAL DOUBLE-STRUCK SMALL F +U+1D558 𝕘 \bbg MATHEMATICAL DOUBLE-STRUCK SMALL G +U+1D559 𝕙 \bbh MATHEMATICAL DOUBLE-STRUCK SMALL H +U+1D55A 𝕚 \bbi MATHEMATICAL DOUBLE-STRUCK SMALL I +U+1D55B 𝕛 \bbj MATHEMATICAL DOUBLE-STRUCK SMALL J +U+1D55C 𝕜 \bbk MATHEMATICAL DOUBLE-STRUCK SMALL K +U+1D55D 𝕝 \bbl MATHEMATICAL DOUBLE-STRUCK SMALL L +U+1D55E 𝕞 \bbm MATHEMATICAL DOUBLE-STRUCK SMALL M +U+1D55F 𝕟 \bbn MATHEMATICAL DOUBLE-STRUCK SMALL N +U+1D560 𝕠 \bbo MATHEMATICAL DOUBLE-STRUCK SMALL O +U+1D561 𝕡 \bbp MATHEMATICAL DOUBLE-STRUCK SMALL P +U+1D562 𝕢 \bbq MATHEMATICAL DOUBLE-STRUCK SMALL Q +U+1D563 𝕣 \bbr MATHEMATICAL DOUBLE-STRUCK SMALL R +U+1D564 𝕤 \bbs MATHEMATICAL DOUBLE-STRUCK SMALL S +U+1D565 𝕥 \bbt MATHEMATICAL DOUBLE-STRUCK SMALL T +U+1D566 𝕦 \bbu MATHEMATICAL DOUBLE-STRUCK SMALL U +U+1D567 𝕧 \bbv MATHEMATICAL DOUBLE-STRUCK SMALL V +U+1D568 𝕨 \bbw MATHEMATICAL DOUBLE-STRUCK SMALL W +U+1D569 𝕩 \bbx MATHEMATICAL DOUBLE-STRUCK SMALL X +U+1D56A 𝕪 \bby MATHEMATICAL DOUBLE-STRUCK SMALL Y +U+1D56B 𝕫 \bbz MATHEMATICAL DOUBLE-STRUCK SMALL Z +U+1D56C 𝕬 \bfrakA MATHEMATICAL BOLD FRAKTUR CAPITAL A +U+1D56D 𝕭 \bfrakB MATHEMATICAL BOLD FRAKTUR CAPITAL B +U+1D56E 𝕮 \bfrakC MATHEMATICAL BOLD FRAKTUR CAPITAL C +U+1D56F 𝕯 \bfrakD MATHEMATICAL BOLD FRAKTUR CAPITAL D +U+1D570 𝕰 \bfrakE MATHEMATICAL BOLD FRAKTUR CAPITAL E +U+1D571 𝕱 \bfrakF MATHEMATICAL BOLD FRAKTUR CAPITAL F +U+1D572 𝕲 \bfrakG MATHEMATICAL BOLD FRAKTUR CAPITAL G +U+1D573 𝕳 \bfrakH MATHEMATICAL BOLD FRAKTUR CAPITAL H +U+1D574 𝕴 \bfrakI MATHEMATICAL BOLD FRAKTUR CAPITAL I +U+1D575 𝕵 \bfrakJ MATHEMATICAL BOLD FRAKTUR CAPITAL J +U+1D576 𝕶 \bfrakK MATHEMATICAL BOLD FRAKTUR CAPITAL K +U+1D577 𝕷 \bfrakL MATHEMATICAL BOLD FRAKTUR CAPITAL L +U+1D578 𝕸 \bfrakM MATHEMATICAL BOLD FRAKTUR CAPITAL M +U+1D579 𝕹 \bfrakN MATHEMATICAL BOLD FRAKTUR CAPITAL N +U+1D57A 𝕺 \bfrakO MATHEMATICAL BOLD FRAKTUR CAPITAL O +U+1D57B 𝕻 \bfrakP MATHEMATICAL BOLD FRAKTUR CAPITAL P +U+1D57C 𝕼 \bfrakQ MATHEMATICAL BOLD FRAKTUR CAPITAL Q +U+1D57D 𝕽 \bfrakR MATHEMATICAL BOLD FRAKTUR CAPITAL R +U+1D57E 𝕾 \bfrakS MATHEMATICAL BOLD FRAKTUR CAPITAL S +U+1D57F 𝕿 \bfrakT MATHEMATICAL BOLD FRAKTUR CAPITAL T +U+1D580 𝖀 \bfrakU MATHEMATICAL BOLD FRAKTUR CAPITAL U +U+1D581 𝖁 \bfrakV MATHEMATICAL BOLD FRAKTUR CAPITAL V +U+1D582 𝖂 \bfrakW MATHEMATICAL BOLD FRAKTUR CAPITAL W +U+1D583 𝖃 \bfrakX MATHEMATICAL BOLD FRAKTUR CAPITAL X +U+1D584 𝖄 \bfrakY MATHEMATICAL BOLD FRAKTUR CAPITAL Y +U+1D585 𝖅 \bfrakZ MATHEMATICAL BOLD FRAKTUR CAPITAL Z +U+1D586 𝖆 \bfraka MATHEMATICAL BOLD FRAKTUR SMALL A +U+1D587 𝖇 \bfrakb MATHEMATICAL BOLD FRAKTUR SMALL B +U+1D588 𝖈 \bfrakc MATHEMATICAL BOLD FRAKTUR SMALL C +U+1D589 𝖉 \bfrakd MATHEMATICAL BOLD FRAKTUR SMALL D +U+1D58A 𝖊 \bfrake MATHEMATICAL BOLD FRAKTUR SMALL E +U+1D58B 𝖋 \bfrakf MATHEMATICAL BOLD FRAKTUR SMALL F +U+1D58C 𝖌 \bfrakg MATHEMATICAL BOLD FRAKTUR SMALL G +U+1D58D 𝖍 \bfrakh MATHEMATICAL BOLD FRAKTUR SMALL H +U+1D58E 𝖎 \bfraki MATHEMATICAL BOLD FRAKTUR SMALL I +U+1D58F 𝖏 \bfrakj MATHEMATICAL BOLD FRAKTUR SMALL J +U+1D590 𝖐 \bfrakk MATHEMATICAL BOLD FRAKTUR SMALL K +U+1D591 𝖑 \bfrakl MATHEMATICAL BOLD FRAKTUR SMALL L +U+1D592 𝖒 \bfrakm MATHEMATICAL BOLD FRAKTUR SMALL M +U+1D593 𝖓 \bfrakn MATHEMATICAL BOLD FRAKTUR SMALL N +U+1D594 𝖔 \bfrako MATHEMATICAL BOLD FRAKTUR SMALL O +U+1D595 𝖕 \bfrakp MATHEMATICAL BOLD FRAKTUR SMALL P +U+1D596 𝖖 \bfrakq MATHEMATICAL BOLD FRAKTUR SMALL Q +U+1D597 𝖗 \bfrakr MATHEMATICAL BOLD FRAKTUR SMALL R +U+1D598 𝖘 \bfraks MATHEMATICAL BOLD FRAKTUR SMALL S +U+1D599 𝖙 \bfrakt MATHEMATICAL BOLD FRAKTUR SMALL T +U+1D59A 𝖚 \bfraku MATHEMATICAL BOLD FRAKTUR SMALL U +U+1D59B 𝖛 \bfrakv MATHEMATICAL BOLD FRAKTUR SMALL V +U+1D59C 𝖜 \bfrakw MATHEMATICAL BOLD FRAKTUR SMALL W +U+1D59D 𝖝 \bfrakx MATHEMATICAL BOLD FRAKTUR SMALL X +U+1D59E 𝖞 \bfraky MATHEMATICAL BOLD FRAKTUR SMALL Y +U+1D59F 𝖟 \bfrakz MATHEMATICAL BOLD FRAKTUR SMALL Z +U+1D5A0 𝖠 \sansA MATHEMATICAL SANS-SERIF CAPITAL A +U+1D5A1 𝖡 \sansB MATHEMATICAL SANS-SERIF CAPITAL B +U+1D5A2 𝖢 \sansC MATHEMATICAL SANS-SERIF CAPITAL C +U+1D5A3 𝖣 \sansD MATHEMATICAL SANS-SERIF CAPITAL D +U+1D5A4 𝖤 \sansE MATHEMATICAL SANS-SERIF CAPITAL E +U+1D5A5 𝖥 \sansF MATHEMATICAL SANS-SERIF CAPITAL F +U+1D5A6 𝖦 \sansG MATHEMATICAL SANS-SERIF CAPITAL G +U+1D5A7 𝖧 \sansH MATHEMATICAL SANS-SERIF CAPITAL H +U+1D5A8 𝖨 \sansI MATHEMATICAL SANS-SERIF CAPITAL I +U+1D5A9 𝖩 \sansJ MATHEMATICAL SANS-SERIF CAPITAL J +U+1D5AA 𝖪 \sansK MATHEMATICAL SANS-SERIF CAPITAL K +U+1D5AB 𝖫 \sansL MATHEMATICAL SANS-SERIF CAPITAL L +U+1D5AC 𝖬 \sansM MATHEMATICAL SANS-SERIF CAPITAL M +U+1D5AD 𝖭 \sansN MATHEMATICAL SANS-SERIF CAPITAL N +U+1D5AE 𝖮 \sansO MATHEMATICAL SANS-SERIF CAPITAL O +U+1D5AF 𝖯 \sansP MATHEMATICAL SANS-SERIF CAPITAL P +U+1D5B0 𝖰 \sansQ MATHEMATICAL SANS-SERIF CAPITAL Q +U+1D5B1 𝖱 \sansR MATHEMATICAL SANS-SERIF CAPITAL R +U+1D5B2 𝖲 \sansS MATHEMATICAL SANS-SERIF CAPITAL S +U+1D5B3 𝖳 \sansT MATHEMATICAL SANS-SERIF CAPITAL T +U+1D5B4 𝖴 \sansU MATHEMATICAL SANS-SERIF CAPITAL U +U+1D5B5 𝖵 \sansV MATHEMATICAL SANS-SERIF CAPITAL V +U+1D5B6 𝖶 \sansW MATHEMATICAL SANS-SERIF CAPITAL W +U+1D5B7 𝖷 \sansX MATHEMATICAL SANS-SERIF CAPITAL X +U+1D5B8 𝖸 \sansY MATHEMATICAL SANS-SERIF CAPITAL Y +U+1D5B9 𝖹 \sansZ MATHEMATICAL SANS-SERIF CAPITAL Z +U+1D5BA 𝖺 \sansa MATHEMATICAL SANS-SERIF SMALL A +U+1D5BB 𝖻 \sansb MATHEMATICAL SANS-SERIF SMALL B +U+1D5BC 𝖼 \sansc MATHEMATICAL SANS-SERIF SMALL C +U+1D5BD 𝖽 \sansd MATHEMATICAL SANS-SERIF SMALL D +U+1D5BE 𝖾 \sanse MATHEMATICAL SANS-SERIF SMALL E +U+1D5BF 𝖿 \sansf MATHEMATICAL SANS-SERIF SMALL F +U+1D5C0 𝗀 \sansg MATHEMATICAL SANS-SERIF SMALL G +U+1D5C1 𝗁 \sansh MATHEMATICAL SANS-SERIF SMALL H +U+1D5C2 𝗂 \sansi MATHEMATICAL SANS-SERIF SMALL I +U+1D5C3 𝗃 \sansj MATHEMATICAL SANS-SERIF SMALL J +U+1D5C4 𝗄 \sansk MATHEMATICAL SANS-SERIF SMALL K +U+1D5C5 𝗅 \sansl MATHEMATICAL SANS-SERIF SMALL L +U+1D5C6 𝗆 \sansm MATHEMATICAL SANS-SERIF SMALL M +U+1D5C7 𝗇 \sansn MATHEMATICAL SANS-SERIF SMALL N +U+1D5C8 𝗈 \sanso MATHEMATICAL SANS-SERIF SMALL O +U+1D5C9 𝗉 \sansp MATHEMATICAL SANS-SERIF SMALL P +U+1D5CA 𝗊 \sansq MATHEMATICAL SANS-SERIF SMALL Q +U+1D5CB 𝗋 \sansr MATHEMATICAL SANS-SERIF SMALL R +U+1D5CC 𝗌 \sanss MATHEMATICAL SANS-SERIF SMALL S +U+1D5CD 𝗍 \sanst MATHEMATICAL SANS-SERIF SMALL T +U+1D5CE 𝗎 \sansu MATHEMATICAL SANS-SERIF SMALL U +U+1D5CF 𝗏 \sansv MATHEMATICAL SANS-SERIF SMALL V +U+1D5D0 𝗐 \sansw MATHEMATICAL SANS-SERIF SMALL W +U+1D5D1 𝗑 \sansx MATHEMATICAL SANS-SERIF SMALL X +U+1D5D2 𝗒 \sansy MATHEMATICAL SANS-SERIF SMALL Y +U+1D5D3 𝗓 \sansz MATHEMATICAL SANS-SERIF SMALL Z +U+1D5D4 𝗔 \bsansA MATHEMATICAL SANS-SERIF BOLD CAPITAL A +U+1D5D5 𝗕 \bsansB MATHEMATICAL SANS-SERIF BOLD CAPITAL B +U+1D5D6 𝗖 \bsansC MATHEMATICAL SANS-SERIF BOLD CAPITAL C +U+1D5D7 𝗗 \bsansD MATHEMATICAL SANS-SERIF BOLD CAPITAL D +U+1D5D8 𝗘 \bsansE MATHEMATICAL SANS-SERIF BOLD CAPITAL E +U+1D5D9 𝗙 \bsansF MATHEMATICAL SANS-SERIF BOLD CAPITAL F +U+1D5DA 𝗚 \bsansG MATHEMATICAL SANS-SERIF BOLD CAPITAL G +U+1D5DB 𝗛 \bsansH MATHEMATICAL SANS-SERIF BOLD CAPITAL H +U+1D5DC 𝗜 \bsansI MATHEMATICAL SANS-SERIF BOLD CAPITAL I +U+1D5DD 𝗝 \bsansJ MATHEMATICAL SANS-SERIF BOLD CAPITAL J +U+1D5DE 𝗞 \bsansK MATHEMATICAL SANS-SERIF BOLD CAPITAL K +U+1D5DF 𝗟 \bsansL MATHEMATICAL SANS-SERIF BOLD CAPITAL L +U+1D5E0 𝗠 \bsansM MATHEMATICAL SANS-SERIF BOLD CAPITAL M +U+1D5E1 𝗡 \bsansN MATHEMATICAL SANS-SERIF BOLD CAPITAL N +U+1D5E2 𝗢 \bsansO MATHEMATICAL SANS-SERIF BOLD CAPITAL O +U+1D5E3 𝗣 \bsansP MATHEMATICAL SANS-SERIF BOLD CAPITAL P +U+1D5E4 𝗤 \bsansQ MATHEMATICAL SANS-SERIF BOLD CAPITAL Q +U+1D5E5 𝗥 \bsansR MATHEMATICAL SANS-SERIF BOLD CAPITAL R +U+1D5E6 𝗦 \bsansS MATHEMATICAL SANS-SERIF BOLD CAPITAL S +U+1D5E7 𝗧 \bsansT MATHEMATICAL SANS-SERIF BOLD CAPITAL T +U+1D5E8 𝗨 \bsansU MATHEMATICAL SANS-SERIF BOLD CAPITAL U +U+1D5E9 𝗩 \bsansV MATHEMATICAL SANS-SERIF BOLD CAPITAL V +U+1D5EA 𝗪 \bsansW MATHEMATICAL SANS-SERIF BOLD CAPITAL W +U+1D5EB 𝗫 \bsansX MATHEMATICAL SANS-SERIF BOLD CAPITAL X +U+1D5EC 𝗬 \bsansY MATHEMATICAL SANS-SERIF BOLD CAPITAL Y +U+1D5ED 𝗭 \bsansZ MATHEMATICAL SANS-SERIF BOLD CAPITAL Z +U+1D5EE 𝗮 \bsansa MATHEMATICAL SANS-SERIF BOLD SMALL A +U+1D5EF 𝗯 \bsansb MATHEMATICAL SANS-SERIF BOLD SMALL B +U+1D5F0 𝗰 \bsansc MATHEMATICAL SANS-SERIF BOLD SMALL C +U+1D5F1 𝗱 \bsansd MATHEMATICAL SANS-SERIF BOLD SMALL D +U+1D5F2 𝗲 \bsanse MATHEMATICAL SANS-SERIF BOLD SMALL E +U+1D5F3 𝗳 \bsansf MATHEMATICAL SANS-SERIF BOLD SMALL F +U+1D5F4 𝗴 \bsansg MATHEMATICAL SANS-SERIF BOLD SMALL G +U+1D5F5 𝗵 \bsansh MATHEMATICAL SANS-SERIF BOLD SMALL H +U+1D5F6 𝗶 \bsansi MATHEMATICAL SANS-SERIF BOLD SMALL I +U+1D5F7 𝗷 \bsansj MATHEMATICAL SANS-SERIF BOLD SMALL J +U+1D5F8 𝗸 \bsansk MATHEMATICAL SANS-SERIF BOLD SMALL K +U+1D5F9 𝗹 \bsansl MATHEMATICAL SANS-SERIF BOLD SMALL L +U+1D5FA 𝗺 \bsansm MATHEMATICAL SANS-SERIF BOLD SMALL M +U+1D5FB 𝗻 \bsansn MATHEMATICAL SANS-SERIF BOLD SMALL N +U+1D5FC 𝗼 \bsanso MATHEMATICAL SANS-SERIF BOLD SMALL O +U+1D5FD 𝗽 \bsansp MATHEMATICAL SANS-SERIF BOLD SMALL P +U+1D5FE 𝗾 \bsansq MATHEMATICAL SANS-SERIF BOLD SMALL Q +U+1D5FF 𝗿 \bsansr MATHEMATICAL SANS-SERIF BOLD SMALL R +U+1D600 𝘀 \bsanss MATHEMATICAL SANS-SERIF BOLD SMALL S +U+1D601 𝘁 \bsanst MATHEMATICAL SANS-SERIF BOLD SMALL T +U+1D602 𝘂 \bsansu MATHEMATICAL SANS-SERIF BOLD SMALL U +U+1D603 𝘃 \bsansv MATHEMATICAL SANS-SERIF BOLD SMALL V +U+1D604 𝘄 \bsansw MATHEMATICAL SANS-SERIF BOLD SMALL W +U+1D605 𝘅 \bsansx MATHEMATICAL SANS-SERIF BOLD SMALL X +U+1D606 𝘆 \bsansy MATHEMATICAL SANS-SERIF BOLD SMALL Y +U+1D607 𝘇 \bsansz MATHEMATICAL SANS-SERIF BOLD SMALL Z +U+1D608 𝘈 \isansA MATHEMATICAL SANS-SERIF ITALIC CAPITAL A +U+1D609 𝘉 \isansB MATHEMATICAL SANS-SERIF ITALIC CAPITAL B +U+1D60A 𝘊 \isansC MATHEMATICAL SANS-SERIF ITALIC CAPITAL C +U+1D60B 𝘋 \isansD MATHEMATICAL SANS-SERIF ITALIC CAPITAL D +U+1D60C 𝘌 \isansE MATHEMATICAL SANS-SERIF ITALIC CAPITAL E +U+1D60D 𝘍 \isansF MATHEMATICAL SANS-SERIF ITALIC CAPITAL F +U+1D60E 𝘎 \isansG MATHEMATICAL SANS-SERIF ITALIC CAPITAL G +U+1D60F 𝘏 \isansH MATHEMATICAL SANS-SERIF ITALIC CAPITAL H +U+1D610 𝘐 \isansI MATHEMATICAL SANS-SERIF ITALIC CAPITAL I +U+1D611 𝘑 \isansJ MATHEMATICAL SANS-SERIF ITALIC CAPITAL J +U+1D612 𝘒 \isansK MATHEMATICAL SANS-SERIF ITALIC CAPITAL K +U+1D613 𝘓 \isansL MATHEMATICAL SANS-SERIF ITALIC CAPITAL L +U+1D614 𝘔 \isansM MATHEMATICAL SANS-SERIF ITALIC CAPITAL M +U+1D615 𝘕 \isansN MATHEMATICAL SANS-SERIF ITALIC CAPITAL N +U+1D616 𝘖 \isansO MATHEMATICAL SANS-SERIF ITALIC CAPITAL O +U+1D617 𝘗 \isansP MATHEMATICAL SANS-SERIF ITALIC CAPITAL P +U+1D618 𝘘 \isansQ MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q +U+1D619 𝘙 \isansR MATHEMATICAL SANS-SERIF ITALIC CAPITAL R +U+1D61A 𝘚 \isansS MATHEMATICAL SANS-SERIF ITALIC CAPITAL S +U+1D61B 𝘛 \isansT MATHEMATICAL SANS-SERIF ITALIC CAPITAL T +U+1D61C 𝘜 \isansU MATHEMATICAL SANS-SERIF ITALIC CAPITAL U +U+1D61D 𝘝 \isansV MATHEMATICAL SANS-SERIF ITALIC CAPITAL V +U+1D61E 𝘞 \isansW MATHEMATICAL SANS-SERIF ITALIC CAPITAL W +U+1D61F 𝘟 \isansX MATHEMATICAL SANS-SERIF ITALIC CAPITAL X +U+1D620 𝘠 \isansY MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y +U+1D621 𝘡 \isansZ MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z +U+1D622 𝘢 \isansa MATHEMATICAL SANS-SERIF ITALIC SMALL A +U+1D623 𝘣 \isansb MATHEMATICAL SANS-SERIF ITALIC SMALL B +U+1D624 𝘤 \isansc MATHEMATICAL SANS-SERIF ITALIC SMALL C +U+1D625 𝘥 \isansd MATHEMATICAL SANS-SERIF ITALIC SMALL D +U+1D626 𝘦 \isanse MATHEMATICAL SANS-SERIF ITALIC SMALL E +U+1D627 𝘧 \isansf MATHEMATICAL SANS-SERIF ITALIC SMALL F +U+1D628 𝘨 \isansg MATHEMATICAL SANS-SERIF ITALIC SMALL G +U+1D629 𝘩 \isansh MATHEMATICAL SANS-SERIF ITALIC SMALL H +U+1D62A 𝘪 \isansi MATHEMATICAL SANS-SERIF ITALIC SMALL I +U+1D62B 𝘫 \isansj MATHEMATICAL SANS-SERIF ITALIC SMALL J +U+1D62C 𝘬 \isansk MATHEMATICAL SANS-SERIF ITALIC SMALL K +U+1D62D 𝘭 \isansl MATHEMATICAL SANS-SERIF ITALIC SMALL L +U+1D62E 𝘮 \isansm MATHEMATICAL SANS-SERIF ITALIC SMALL M +U+1D62F 𝘯 \isansn MATHEMATICAL SANS-SERIF ITALIC SMALL N +U+1D630 𝘰 \isanso MATHEMATICAL SANS-SERIF ITALIC SMALL O +U+1D631 𝘱 \isansp MATHEMATICAL SANS-SERIF ITALIC SMALL P +U+1D632 𝘲 \isansq MATHEMATICAL SANS-SERIF ITALIC SMALL Q +U+1D633 𝘳 \isansr MATHEMATICAL SANS-SERIF ITALIC SMALL R +U+1D634 𝘴 \isanss MATHEMATICAL SANS-SERIF ITALIC SMALL S +U+1D635 𝘵 \isanst MATHEMATICAL SANS-SERIF ITALIC SMALL T +U+1D636 𝘶 \isansu MATHEMATICAL SANS-SERIF ITALIC SMALL U +U+1D637 𝘷 \isansv MATHEMATICAL SANS-SERIF ITALIC SMALL V +U+1D638 𝘸 \isansw MATHEMATICAL SANS-SERIF ITALIC SMALL W +U+1D639 𝘹 \isansx MATHEMATICAL SANS-SERIF ITALIC SMALL X +U+1D63A 𝘺 \isansy MATHEMATICAL SANS-SERIF ITALIC SMALL Y +U+1D63B 𝘻 \isansz MATHEMATICAL SANS-SERIF ITALIC SMALL Z +U+1D63C 𝘼 \bisansA MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A +U+1D63D 𝘽 \bisansB MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B +U+1D63E 𝘾 \bisansC MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C +U+1D63F 𝘿 \bisansD MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D +U+1D640 𝙀 \bisansE MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E +U+1D641 𝙁 \bisansF MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F +U+1D642 𝙂 \bisansG MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G +U+1D643 𝙃 \bisansH MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H +U+1D644 𝙄 \bisansI MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I +U+1D645 𝙅 \bisansJ MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J +U+1D646 𝙆 \bisansK MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K +U+1D647 𝙇 \bisansL MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L +U+1D648 𝙈 \bisansM MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M +U+1D649 𝙉 \bisansN MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N +U+1D64A 𝙊 \bisansO MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O +U+1D64B 𝙋 \bisansP MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P +U+1D64C 𝙌 \bisansQ MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q +U+1D64D 𝙍 \bisansR MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R +U+1D64E 𝙎 \bisansS MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S +U+1D64F 𝙏 \bisansT MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T +U+1D650 𝙐 \bisansU MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U +U+1D651 𝙑 \bisansV MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V +U+1D652 𝙒 \bisansW MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W +U+1D653 𝙓 \bisansX MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X +U+1D654 𝙔 \bisansY MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y +U+1D655 𝙕 \bisansZ MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z +U+1D656 𝙖 \bisansa MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A +U+1D657 𝙗 \bisansb MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B +U+1D658 𝙘 \bisansc MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C +U+1D659 𝙙 \bisansd MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D +U+1D65A 𝙚 \bisanse MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E +U+1D65B 𝙛 \bisansf MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F +U+1D65C 𝙜 \bisansg MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G +U+1D65D 𝙝 \bisansh MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H +U+1D65E 𝙞 \bisansi MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I +U+1D65F 𝙟 \bisansj MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J +U+1D660 𝙠 \bisansk MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K +U+1D661 𝙡 \bisansl MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L +U+1D662 𝙢 \bisansm MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M +U+1D663 𝙣 \bisansn MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N +U+1D664 𝙤 \bisanso MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O +U+1D665 𝙥 \bisansp MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P +U+1D666 𝙦 \bisansq MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q +U+1D667 𝙧 \bisansr MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R +U+1D668 𝙨 \bisanss MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S +U+1D669 𝙩 \bisanst MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T +U+1D66A 𝙪 \bisansu MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U +U+1D66B 𝙫 \bisansv MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V +U+1D66C 𝙬 \bisansw MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W +U+1D66D 𝙭 \bisansx MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X +U+1D66E 𝙮 \bisansy MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y +U+1D66F 𝙯 \bisansz MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z +U+1D670 𝙰 \ttA MATHEMATICAL MONOSPACE CAPITAL A +U+1D671 𝙱 \ttB MATHEMATICAL MONOSPACE CAPITAL B +U+1D672 𝙲 \ttC MATHEMATICAL MONOSPACE CAPITAL C +U+1D673 𝙳 \ttD MATHEMATICAL MONOSPACE CAPITAL D +U+1D674 𝙴 \ttE MATHEMATICAL MONOSPACE CAPITAL E +U+1D675 𝙵 \ttF MATHEMATICAL MONOSPACE CAPITAL F +U+1D676 𝙶 \ttG MATHEMATICAL MONOSPACE CAPITAL G +U+1D677 𝙷 \ttH MATHEMATICAL MONOSPACE CAPITAL H +U+1D678 𝙸 \ttI MATHEMATICAL MONOSPACE CAPITAL I +U+1D679 𝙹 \ttJ MATHEMATICAL MONOSPACE CAPITAL J +U+1D67A 𝙺 \ttK MATHEMATICAL MONOSPACE CAPITAL K +U+1D67B 𝙻 \ttL MATHEMATICAL MONOSPACE CAPITAL L +U+1D67C 𝙼 \ttM MATHEMATICAL MONOSPACE CAPITAL M +U+1D67D 𝙽 \ttN MATHEMATICAL MONOSPACE CAPITAL N +U+1D67E 𝙾 \ttO MATHEMATICAL MONOSPACE CAPITAL O +U+1D67F 𝙿 \ttP MATHEMATICAL MONOSPACE CAPITAL P +U+1D680 𝚀 \ttQ MATHEMATICAL MONOSPACE CAPITAL Q +U+1D681 𝚁 \ttR MATHEMATICAL MONOSPACE CAPITAL R +U+1D682 𝚂 \ttS MATHEMATICAL MONOSPACE CAPITAL S +U+1D683 𝚃 \ttT MATHEMATICAL MONOSPACE CAPITAL T +U+1D684 𝚄 \ttU MATHEMATICAL MONOSPACE CAPITAL U +U+1D685 𝚅 \ttV MATHEMATICAL MONOSPACE CAPITAL V +U+1D686 𝚆 \ttW MATHEMATICAL MONOSPACE CAPITAL W +U+1D687 𝚇 \ttX MATHEMATICAL MONOSPACE CAPITAL X +U+1D688 𝚈 \ttY MATHEMATICAL MONOSPACE CAPITAL Y +U+1D689 𝚉 \ttZ MATHEMATICAL MONOSPACE CAPITAL Z +U+1D68A 𝚊 \tta MATHEMATICAL MONOSPACE SMALL A +U+1D68B 𝚋 \ttb MATHEMATICAL MONOSPACE SMALL B +U+1D68C 𝚌 \ttc MATHEMATICAL MONOSPACE SMALL C +U+1D68D 𝚍 \ttd MATHEMATICAL MONOSPACE SMALL D +U+1D68E 𝚎 \tte MATHEMATICAL MONOSPACE SMALL E +U+1D68F 𝚏 \ttf MATHEMATICAL MONOSPACE SMALL F +U+1D690 𝚐 \ttg MATHEMATICAL MONOSPACE SMALL G +U+1D691 𝚑 \tth MATHEMATICAL MONOSPACE SMALL H +U+1D692 𝚒 \tti MATHEMATICAL MONOSPACE SMALL I +U+1D693 𝚓 \ttj MATHEMATICAL MONOSPACE SMALL J +U+1D694 𝚔 \ttk MATHEMATICAL MONOSPACE SMALL K +U+1D695 𝚕 \ttl MATHEMATICAL MONOSPACE SMALL L +U+1D696 𝚖 \ttm MATHEMATICAL MONOSPACE SMALL M +U+1D697 𝚗 \ttn MATHEMATICAL MONOSPACE SMALL N +U+1D698 𝚘 \tto MATHEMATICAL MONOSPACE SMALL O +U+1D699 𝚙 \ttp MATHEMATICAL MONOSPACE SMALL P +U+1D69A 𝚚 \ttq MATHEMATICAL MONOSPACE SMALL Q +U+1D69B 𝚛 \ttr MATHEMATICAL MONOSPACE SMALL R +U+1D69C 𝚜 \tts MATHEMATICAL MONOSPACE SMALL S +U+1D69D 𝚝 \ttt MATHEMATICAL MONOSPACE SMALL T +U+1D69E 𝚞 \ttu MATHEMATICAL MONOSPACE SMALL U +U+1D69F 𝚟 \ttv MATHEMATICAL MONOSPACE SMALL V +U+1D6A0 𝚠 \ttw MATHEMATICAL MONOSPACE SMALL W +U+1D6A1 𝚡 \ttx MATHEMATICAL MONOSPACE SMALL X +U+1D6A2 𝚢 \tty MATHEMATICAL MONOSPACE SMALL Y +U+1D6A3 𝚣 \ttz MATHEMATICAL MONOSPACE SMALL Z +U+1D6A4 𝚤 \itimath MATHEMATICAL ITALIC SMALL DOTLESS I +U+1D6A5 𝚥 \itjmath MATHEMATICAL ITALIC SMALL DOTLESS J +U+1D6A8 𝚨 \bfAlpha MATHEMATICAL BOLD CAPITAL ALPHA +U+1D6A9 𝚩 \bfBeta MATHEMATICAL BOLD CAPITAL BETA +U+1D6AA 𝚪 \bfGamma MATHEMATICAL BOLD CAPITAL GAMMA +U+1D6AB 𝚫 \bfDelta MATHEMATICAL BOLD CAPITAL DELTA +U+1D6AC 𝚬 \bfEpsilon MATHEMATICAL BOLD CAPITAL EPSILON +U+1D6AD 𝚭 \bfZeta MATHEMATICAL BOLD CAPITAL ZETA +U+1D6AE 𝚮 \bfEta MATHEMATICAL BOLD CAPITAL ETA +U+1D6AF 𝚯 \bfTheta MATHEMATICAL BOLD CAPITAL THETA +U+1D6B0 𝚰 \bfIota MATHEMATICAL BOLD CAPITAL IOTA +U+1D6B1 𝚱 \bfKappa MATHEMATICAL BOLD CAPITAL KAPPA +U+1D6B2 𝚲 \bfLambda MATHEMATICAL BOLD CAPITAL LAMDA +U+1D6B3 𝚳 \bfMu MATHEMATICAL BOLD CAPITAL MU +U+1D6B4 𝚴 \bfNu MATHEMATICAL BOLD CAPITAL NU +U+1D6B5 𝚵 \bfXi MATHEMATICAL BOLD CAPITAL XI +U+1D6B6 𝚶 \bfOmicron MATHEMATICAL BOLD CAPITAL OMICRON +U+1D6B7 𝚷 \bfPi MATHEMATICAL BOLD CAPITAL PI +U+1D6B8 𝚸 \bfRho MATHEMATICAL BOLD CAPITAL RHO +U+1D6B9 𝚹 \bfvarTheta MATHEMATICAL BOLD CAPITAL THETA SYMBOL +U+1D6BA 𝚺 \bfSigma MATHEMATICAL BOLD CAPITAL SIGMA +U+1D6BB 𝚻 \bfTau MATHEMATICAL BOLD CAPITAL TAU +U+1D6BC 𝚼 \bfUpsilon MATHEMATICAL BOLD CAPITAL UPSILON +U+1D6BD 𝚽 \bfPhi MATHEMATICAL BOLD CAPITAL PHI +U+1D6BE 𝚾 \bfChi MATHEMATICAL BOLD CAPITAL CHI +U+1D6BF 𝚿 \bfPsi MATHEMATICAL BOLD CAPITAL PSI +U+1D6C0 𝛀 \bfOmega MATHEMATICAL BOLD CAPITAL OMEGA +U+1D6C1 𝛁 \bfnabla MATHEMATICAL BOLD NABLA +U+1D6C2 𝛂 \bfalpha MATHEMATICAL BOLD SMALL ALPHA +U+1D6C3 𝛃 \bfbeta MATHEMATICAL BOLD SMALL BETA +U+1D6C4 𝛄 \bfgamma MATHEMATICAL BOLD SMALL GAMMA +U+1D6C5 𝛅 \bfdelta MATHEMATICAL BOLD SMALL DELTA +U+1D6C6 𝛆 \bfepsilon MATHEMATICAL BOLD SMALL EPSILON +U+1D6C7 𝛇 \bfzeta MATHEMATICAL BOLD SMALL ZETA +U+1D6C8 𝛈 \bfeta MATHEMATICAL BOLD SMALL ETA +U+1D6C9 𝛉 \bftheta MATHEMATICAL BOLD SMALL THETA +U+1D6CA 𝛊 \bfiota MATHEMATICAL BOLD SMALL IOTA +U+1D6CB 𝛋 \bfkappa MATHEMATICAL BOLD SMALL KAPPA +U+1D6CC 𝛌 \bflambda MATHEMATICAL BOLD SMALL LAMDA +U+1D6CD 𝛍 \bfmu MATHEMATICAL BOLD SMALL MU +U+1D6CE 𝛎 \bfnu MATHEMATICAL BOLD SMALL NU +U+1D6CF 𝛏 \bfxi MATHEMATICAL BOLD SMALL XI +U+1D6D0 𝛐 \bfomicron MATHEMATICAL BOLD SMALL OMICRON +U+1D6D1 𝛑 \bfpi MATHEMATICAL BOLD SMALL PI +U+1D6D2 𝛒 \bfrho MATHEMATICAL BOLD SMALL RHO +U+1D6D3 𝛓 \bfvarsigma MATHEMATICAL BOLD SMALL FINAL SIGMA +U+1D6D4 𝛔 \bfsigma MATHEMATICAL BOLD SMALL SIGMA +U+1D6D5 𝛕 \bftau MATHEMATICAL BOLD SMALL TAU +U+1D6D6 𝛖 \bfupsilon MATHEMATICAL BOLD SMALL UPSILON +U+1D6D7 𝛗 \bfvarphi MATHEMATICAL BOLD SMALL PHI +U+1D6D8 𝛘 \bfchi MATHEMATICAL BOLD SMALL CHI +U+1D6D9 𝛙 \bfpsi MATHEMATICAL BOLD SMALL PSI +U+1D6DA 𝛚 \bfomega MATHEMATICAL BOLD SMALL OMEGA +U+1D6DB 𝛛 \bfpartial MATHEMATICAL BOLD PARTIAL DIFFERENTIAL +U+1D6DC 𝛜 \bfvarepsilon MATHEMATICAL BOLD EPSILON SYMBOL +U+1D6DD 𝛝 \bfvartheta MATHEMATICAL BOLD THETA SYMBOL +U+1D6DE 𝛞 \bfvarkappa MATHEMATICAL BOLD KAPPA SYMBOL +U+1D6DF 𝛟 \bfphi MATHEMATICAL BOLD PHI SYMBOL +U+1D6E0 𝛠 \bfvarrho MATHEMATICAL BOLD RHO SYMBOL +U+1D6E1 𝛡 \bfvarpi MATHEMATICAL BOLD PI SYMBOL +U+1D6E2 𝛢 \itAlpha MATHEMATICAL ITALIC CAPITAL ALPHA +U+1D6E3 𝛣 \itBeta MATHEMATICAL ITALIC CAPITAL BETA +U+1D6E4 𝛤 \itGamma MATHEMATICAL ITALIC CAPITAL GAMMA +U+1D6E5 𝛥 \itDelta MATHEMATICAL ITALIC CAPITAL DELTA +U+1D6E6 𝛦 \itEpsilon MATHEMATICAL ITALIC CAPITAL EPSILON +U+1D6E7 𝛧 \itZeta MATHEMATICAL ITALIC CAPITAL ZETA +U+1D6E8 𝛨 \itEta MATHEMATICAL ITALIC CAPITAL ETA +U+1D6E9 𝛩 \itTheta MATHEMATICAL ITALIC CAPITAL THETA +U+1D6EA 𝛪 \itIota MATHEMATICAL ITALIC CAPITAL IOTA +U+1D6EB 𝛫 \itKappa MATHEMATICAL ITALIC CAPITAL KAPPA +U+1D6EC 𝛬 \itLambda MATHEMATICAL ITALIC CAPITAL LAMDA +U+1D6ED 𝛭 \itMu MATHEMATICAL ITALIC CAPITAL MU +U+1D6EE 𝛮 \itNu MATHEMATICAL ITALIC CAPITAL NU +U+1D6EF 𝛯 \itXi MATHEMATICAL ITALIC CAPITAL XI +U+1D6F0 𝛰 \itOmicron MATHEMATICAL ITALIC CAPITAL OMICRON +U+1D6F1 𝛱 \itPi MATHEMATICAL ITALIC CAPITAL PI +U+1D6F2 𝛲 \itRho MATHEMATICAL ITALIC CAPITAL RHO +U+1D6F3 𝛳 \itvarTheta MATHEMATICAL ITALIC CAPITAL THETA SYMBOL +U+1D6F4 𝛴 \itSigma MATHEMATICAL ITALIC CAPITAL SIGMA +U+1D6F5 𝛵 \itTau MATHEMATICAL ITALIC CAPITAL TAU +U+1D6F6 𝛶 \itUpsilon MATHEMATICAL ITALIC CAPITAL UPSILON +U+1D6F7 𝛷 \itPhi MATHEMATICAL ITALIC CAPITAL PHI +U+1D6F8 𝛸 \itChi MATHEMATICAL ITALIC CAPITAL CHI +U+1D6F9 𝛹 \itPsi MATHEMATICAL ITALIC CAPITAL PSI +U+1D6FA 𝛺 \itOmega MATHEMATICAL ITALIC CAPITAL OMEGA +U+1D6FB 𝛻 \itnabla MATHEMATICAL ITALIC NABLA +U+1D6FC 𝛼 \italpha MATHEMATICAL ITALIC SMALL ALPHA +U+1D6FD 𝛽 \itbeta MATHEMATICAL ITALIC SMALL BETA +U+1D6FE 𝛾 \itgamma MATHEMATICAL ITALIC SMALL GAMMA +U+1D6FF 𝛿 \itdelta MATHEMATICAL ITALIC SMALL DELTA +U+1D700 𝜀 \itepsilon MATHEMATICAL ITALIC SMALL EPSILON +U+1D701 𝜁 \itzeta MATHEMATICAL ITALIC SMALL ZETA +U+1D702 𝜂 \iteta MATHEMATICAL ITALIC SMALL ETA +U+1D703 𝜃 \ittheta MATHEMATICAL ITALIC SMALL THETA +U+1D704 𝜄 \itiota MATHEMATICAL ITALIC SMALL IOTA +U+1D705 𝜅 \itkappa MATHEMATICAL ITALIC SMALL KAPPA +U+1D706 𝜆 \itlambda MATHEMATICAL ITALIC SMALL LAMDA +U+1D707 𝜇 \itmu MATHEMATICAL ITALIC SMALL MU +U+1D708 𝜈 \itnu MATHEMATICAL ITALIC SMALL NU +U+1D709 𝜉 \itxi MATHEMATICAL ITALIC SMALL XI +U+1D70A 𝜊 \itomicron MATHEMATICAL ITALIC SMALL OMICRON +U+1D70B 𝜋 \itpi MATHEMATICAL ITALIC SMALL PI +U+1D70C 𝜌 \itrho MATHEMATICAL ITALIC SMALL RHO +U+1D70D 𝜍 \itvarsigma MATHEMATICAL ITALIC SMALL FINAL SIGMA +U+1D70E 𝜎 \itsigma MATHEMATICAL ITALIC SMALL SIGMA +U+1D70F 𝜏 \ittau MATHEMATICAL ITALIC SMALL TAU +U+1D710 𝜐 \itupsilon MATHEMATICAL ITALIC SMALL UPSILON +U+1D711 𝜑 \itphi MATHEMATICAL ITALIC SMALL PHI +U+1D712 𝜒 \itchi MATHEMATICAL ITALIC SMALL CHI +U+1D713 𝜓 \itpsi MATHEMATICAL ITALIC SMALL PSI +U+1D714 𝜔 \itomega MATHEMATICAL ITALIC SMALL OMEGA +U+1D715 𝜕 \itpartial MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL +U+1D716 𝜖 \itvarepsilon MATHEMATICAL ITALIC EPSILON SYMBOL +U+1D717 𝜗 \itvartheta MATHEMATICAL ITALIC THETA SYMBOL +U+1D718 𝜘 \itvarkappa MATHEMATICAL ITALIC KAPPA SYMBOL +U+1D719 𝜙 \itvarphi MATHEMATICAL ITALIC PHI SYMBOL +U+1D71A 𝜚 \itvarrho MATHEMATICAL ITALIC RHO SYMBOL +U+1D71B 𝜛 \itvarpi MATHEMATICAL ITALIC PI SYMBOL +U+1D71C 𝜜 \biAlpha MATHEMATICAL BOLD ITALIC CAPITAL ALPHA +U+1D71D 𝜝 \biBeta MATHEMATICAL BOLD ITALIC CAPITAL BETA +U+1D71E 𝜞 \biGamma MATHEMATICAL BOLD ITALIC CAPITAL GAMMA +U+1D71F 𝜟 \biDelta MATHEMATICAL BOLD ITALIC CAPITAL DELTA +U+1D720 𝜠 \biEpsilon MATHEMATICAL BOLD ITALIC CAPITAL EPSILON +U+1D721 𝜡 \biZeta MATHEMATICAL BOLD ITALIC CAPITAL ZETA +U+1D722 𝜢 \biEta MATHEMATICAL BOLD ITALIC CAPITAL ETA +U+1D723 𝜣 \biTheta MATHEMATICAL BOLD ITALIC CAPITAL THETA +U+1D724 𝜤 \biIota MATHEMATICAL BOLD ITALIC CAPITAL IOTA +U+1D725 𝜥 \biKappa MATHEMATICAL BOLD ITALIC CAPITAL KAPPA +U+1D726 𝜦 \biLambda MATHEMATICAL BOLD ITALIC CAPITAL LAMDA +U+1D727 𝜧 \biMu MATHEMATICAL BOLD ITALIC CAPITAL MU +U+1D728 𝜨 \biNu MATHEMATICAL BOLD ITALIC CAPITAL NU +U+1D729 𝜩 \biXi MATHEMATICAL BOLD ITALIC CAPITAL XI +U+1D72A 𝜪 \biOmicron MATHEMATICAL BOLD ITALIC CAPITAL OMICRON +U+1D72B 𝜫 \biPi MATHEMATICAL BOLD ITALIC CAPITAL PI +U+1D72C 𝜬 \biRho MATHEMATICAL BOLD ITALIC CAPITAL RHO +U+1D72D 𝜭 \bivarTheta MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL +U+1D72E 𝜮 \biSigma MATHEMATICAL BOLD ITALIC CAPITAL SIGMA +U+1D72F 𝜯 \biTau MATHEMATICAL BOLD ITALIC CAPITAL TAU +U+1D730 𝜰 \biUpsilon MATHEMATICAL BOLD ITALIC CAPITAL UPSILON +U+1D731 𝜱 \biPhi MATHEMATICAL BOLD ITALIC CAPITAL PHI +U+1D732 𝜲 \biChi MATHEMATICAL BOLD ITALIC CAPITAL CHI +U+1D733 𝜳 \biPsi MATHEMATICAL BOLD ITALIC CAPITAL PSI +U+1D734 𝜴 \biOmega MATHEMATICAL BOLD ITALIC CAPITAL OMEGA +U+1D735 𝜵 \binabla MATHEMATICAL BOLD ITALIC NABLA +U+1D736 𝜶 \bialpha MATHEMATICAL BOLD ITALIC SMALL ALPHA +U+1D737 𝜷 \bibeta MATHEMATICAL BOLD ITALIC SMALL BETA +U+1D738 𝜸 \bigamma MATHEMATICAL BOLD ITALIC SMALL GAMMA +U+1D739 𝜹 \bidelta MATHEMATICAL BOLD ITALIC SMALL DELTA +U+1D73A 𝜺 \biepsilon MATHEMATICAL BOLD ITALIC SMALL EPSILON +U+1D73B 𝜻 \bizeta MATHEMATICAL BOLD ITALIC SMALL ZETA +U+1D73C 𝜼 \bieta MATHEMATICAL BOLD ITALIC SMALL ETA +U+1D73D 𝜽 \bitheta MATHEMATICAL BOLD ITALIC SMALL THETA +U+1D73E 𝜾 \biiota MATHEMATICAL BOLD ITALIC SMALL IOTA +U+1D73F 𝜿 \bikappa MATHEMATICAL BOLD ITALIC SMALL KAPPA +U+1D740 𝝀 \bilambda MATHEMATICAL BOLD ITALIC SMALL LAMDA +U+1D741 𝝁 \bimu MATHEMATICAL BOLD ITALIC SMALL MU +U+1D742 𝝂 \binu MATHEMATICAL BOLD ITALIC SMALL NU +U+1D743 𝝃 \bixi MATHEMATICAL BOLD ITALIC SMALL XI +U+1D744 𝝄 \biomicron MATHEMATICAL BOLD ITALIC SMALL OMICRON +U+1D745 𝝅 \bipi MATHEMATICAL BOLD ITALIC SMALL PI +U+1D746 𝝆 \birho MATHEMATICAL BOLD ITALIC SMALL RHO +U+1D747 𝝇 \bivarsigma MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA +U+1D748 𝝈 \bisigma MATHEMATICAL BOLD ITALIC SMALL SIGMA +U+1D749 𝝉 \bitau MATHEMATICAL BOLD ITALIC SMALL TAU +U+1D74A 𝝊 \biupsilon MATHEMATICAL BOLD ITALIC SMALL UPSILON +U+1D74B 𝝋 \biphi MATHEMATICAL BOLD ITALIC SMALL PHI +U+1D74C 𝝌 \bichi MATHEMATICAL BOLD ITALIC SMALL CHI +U+1D74D 𝝍 \bipsi MATHEMATICAL BOLD ITALIC SMALL PSI +U+1D74E 𝝎 \biomega MATHEMATICAL BOLD ITALIC SMALL OMEGA +U+1D74F 𝝏 \bipartial MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL +U+1D750 𝝐 \bivarepsilon MATHEMATICAL BOLD ITALIC EPSILON SYMBOL +U+1D751 𝝑 \bivartheta MATHEMATICAL BOLD ITALIC THETA SYMBOL +U+1D752 𝝒 \bivarkappa MATHEMATICAL BOLD ITALIC KAPPA SYMBOL +U+1D753 𝝓 \bivarphi MATHEMATICAL BOLD ITALIC PHI SYMBOL +U+1D754 𝝔 \bivarrho MATHEMATICAL BOLD ITALIC RHO SYMBOL +U+1D755 𝝕 \bivarpi MATHEMATICAL BOLD ITALIC PI SYMBOL +U+1D756 𝝖 \bsansAlpha MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA +U+1D757 𝝗 \bsansBeta MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA +U+1D758 𝝘 \bsansGamma MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA +U+1D759 𝝙 \bsansDelta MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA +U+1D75A 𝝚 \bsansEpsilon MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON +U+1D75B 𝝛 \bsansZeta MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA +U+1D75C 𝝜 \bsansEta MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA +U+1D75D 𝝝 \bsansTheta MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA +U+1D75E 𝝞 \bsansIota MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA +U+1D75F 𝝟 \bsansKappa MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA +U+1D760 𝝠 \bsansLambda MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA +U+1D761 𝝡 \bsansMu MATHEMATICAL SANS-SERIF BOLD CAPITAL MU +U+1D762 𝝢 \bsansNu MATHEMATICAL SANS-SERIF BOLD CAPITAL NU +U+1D763 𝝣 \bsansXi MATHEMATICAL SANS-SERIF BOLD CAPITAL XI +U+1D764 𝝤 \bsansOmicron MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON +U+1D765 𝝥 \bsansPi MATHEMATICAL SANS-SERIF BOLD CAPITAL PI +U+1D766 𝝦 \bsansRho MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO +U+1D767 𝝧 \bsansvarTheta MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL +U+1D768 𝝨 \bsansSigma MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA +U+1D769 𝝩 \bsansTau MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU +U+1D76A 𝝪 \bsansUpsilon MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON +U+1D76B 𝝫 \bsansPhi MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI +U+1D76C 𝝬 \bsansChi MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI +U+1D76D 𝝭 \bsansPsi MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI +U+1D76E 𝝮 \bsansOmega MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA +U+1D76F 𝝯 \bsansnabla MATHEMATICAL SANS-SERIF BOLD NABLA +U+1D770 𝝰 \bsansalpha MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA +U+1D771 𝝱 \bsansbeta MATHEMATICAL SANS-SERIF BOLD SMALL BETA +U+1D772 𝝲 \bsansgamma MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA +U+1D773 𝝳 \bsansdelta MATHEMATICAL SANS-SERIF BOLD SMALL DELTA +U+1D774 𝝴 \bsansepsilon MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON +U+1D775 𝝵 \bsanszeta MATHEMATICAL SANS-SERIF BOLD SMALL ZETA +U+1D776 𝝶 \bsanseta MATHEMATICAL SANS-SERIF BOLD SMALL ETA +U+1D777 𝝷 \bsanstheta MATHEMATICAL SANS-SERIF BOLD SMALL THETA +U+1D778 𝝸 \bsansiota MATHEMATICAL SANS-SERIF BOLD SMALL IOTA +U+1D779 𝝹 \bsanskappa MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA +U+1D77A 𝝺 \bsanslambda MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA +U+1D77B 𝝻 \bsansmu MATHEMATICAL SANS-SERIF BOLD SMALL MU +U+1D77C 𝝼 \bsansnu MATHEMATICAL SANS-SERIF BOLD SMALL NU +U+1D77D 𝝽 \bsansxi MATHEMATICAL SANS-SERIF BOLD SMALL XI +U+1D77E 𝝾 \bsansomicron MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON +U+1D77F 𝝿 \bsanspi MATHEMATICAL SANS-SERIF BOLD SMALL PI +U+1D780 𝞀 \bsansrho MATHEMATICAL SANS-SERIF BOLD SMALL RHO +U+1D781 𝞁 \bsansvarsigma MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA +U+1D782 𝞂 \bsanssigma MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA +U+1D783 𝞃 \bsanstau MATHEMATICAL SANS-SERIF BOLD SMALL TAU +U+1D784 𝞄 \bsansupsilon MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON +U+1D785 𝞅 \bsansphi MATHEMATICAL SANS-SERIF BOLD SMALL PHI +U+1D786 𝞆 \bsanschi MATHEMATICAL SANS-SERIF BOLD SMALL CHI +U+1D787 𝞇 \bsanspsi MATHEMATICAL SANS-SERIF BOLD SMALL PSI +U+1D788 𝞈 \bsansomega MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA +U+1D789 𝞉 \bsanspartial MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL +U+1D78A 𝞊 \bsansvarepsilon MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL +U+1D78B 𝞋 \bsansvartheta MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL +U+1D78C 𝞌 \bsansvarkappa MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL +U+1D78D 𝞍 \bsansvarphi MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL +U+1D78E 𝞎 \bsansvarrho MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL +U+1D78F 𝞏 \bsansvarpi MATHEMATICAL SANS-SERIF BOLD PI SYMBOL +U+1D790 𝞐 \bisansAlpha MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA +U+1D791 𝞑 \bisansBeta MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA +U+1D792 𝞒 \bisansGamma MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA +U+1D793 𝞓 \bisansDelta MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA +U+1D794 𝞔 \bisansEpsilon MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON +U+1D795 𝞕 \bisansZeta MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA +U+1D796 𝞖 \bisansEta MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA +U+1D797 𝞗 \bisansTheta MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA +U+1D798 𝞘 \bisansIota MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA +U+1D799 𝞙 \bisansKappa MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA +U+1D79A 𝞚 \bisansLambda MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA +U+1D79B 𝞛 \bisansMu MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU +U+1D79C 𝞜 \bisansNu MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU +U+1D79D 𝞝 \bisansXi MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI +U+1D79E 𝞞 \bisansOmicron MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON +U+1D79F 𝞟 \bisansPi MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI +U+1D7A0 𝞠 \bisansRho MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO +U+1D7A1 𝞡 \bisansvarTheta MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL +U+1D7A2 𝞢 \bisansSigma MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA +U+1D7A3 𝞣 \bisansTau MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU +U+1D7A4 𝞤 \bisansUpsilon MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON +U+1D7A5 𝞥 \bisansPhi MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI +U+1D7A6 𝞦 \bisansChi MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI +U+1D7A7 𝞧 \bisansPsi MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI +U+1D7A8 𝞨 \bisansOmega MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA +U+1D7A9 𝞩 \bisansnabla MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA +U+1D7AA 𝞪 \bisansalpha MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA +U+1D7AB 𝞫 \bisansbeta MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA +U+1D7AC 𝞬 \bisansgamma MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA +U+1D7AD 𝞭 \bisansdelta MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA +U+1D7AE 𝞮 \bisansepsilon MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON +U+1D7AF 𝞯 \bisanszeta MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA +U+1D7B0 𝞰 \bisanseta MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA +U+1D7B1 𝞱 \bisanstheta MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA +U+1D7B2 𝞲 \bisansiota MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA +U+1D7B3 𝞳 \bisanskappa MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA +U+1D7B4 𝞴 \bisanslambda MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA +U+1D7B5 𝞵 \bisansmu MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU +U+1D7B6 𝞶 \bisansnu MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU +U+1D7B7 𝞷 \bisansxi MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI +U+1D7B8 𝞸 \bisansomicron MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON +U+1D7B9 𝞹 \bisanspi MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI +U+1D7BA 𝞺 \bisansrho MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO +U+1D7BB 𝞻 \bisansvarsigma MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA +U+1D7BC 𝞼 \bisanssigma MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA +U+1D7BD 𝞽 \bisanstau MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU +U+1D7BE 𝞾 \bisansupsilon MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON +U+1D7BF 𝞿 \bisansphi MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI +U+1D7C0 𝟀 \bisanschi MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI +U+1D7C1 𝟁 \bisanspsi MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI +U+1D7C2 𝟂 \bisansomega MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA +U+1D7C3 𝟃 \bisanspartial MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL +U+1D7C4 𝟄 \bisansvarepsilon MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL +U+1D7C5 𝟅 \bisansvartheta MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL +U+1D7C6 𝟆 \bisansvarkappa MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL +U+1D7C7 𝟇 \bisansvarphi MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL +U+1D7C8 𝟈 \bisansvarrho MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL +U+1D7C9 𝟉 \bisansvarpi MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL +U+1D7CA 𝟊 \bfDigamma MATHEMATICAL BOLD CAPITAL DIGAMMA +U+1D7CB 𝟋 \bfdigamma MATHEMATICAL BOLD SMALL DIGAMMA +U+1D7CE 𝟎 \bfzero MATHEMATICAL BOLD DIGIT ZERO +U+1D7CF 𝟏 \bfone MATHEMATICAL BOLD DIGIT ONE +U+1D7D0 𝟐 \bftwo MATHEMATICAL BOLD DIGIT TWO +U+1D7D1 𝟑 \bfthree MATHEMATICAL BOLD DIGIT THREE +U+1D7D2 𝟒 \bffour MATHEMATICAL BOLD DIGIT FOUR +U+1D7D3 𝟓 \bffive MATHEMATICAL BOLD DIGIT FIVE +U+1D7D4 𝟔 \bfsix MATHEMATICAL BOLD DIGIT SIX +U+1D7D5 𝟕 \bfseven MATHEMATICAL BOLD DIGIT SEVEN +U+1D7D6 𝟖 \bfeight MATHEMATICAL BOLD DIGIT EIGHT +U+1D7D7 𝟗 \bfnine MATHEMATICAL BOLD DIGIT NINE +U+1D7D8 𝟘 \bbzero MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO +U+1D7D9 𝟙 \bbone MATHEMATICAL DOUBLE-STRUCK DIGIT ONE +U+1D7DA 𝟚 \bbtwo MATHEMATICAL DOUBLE-STRUCK DIGIT TWO +U+1D7DB 𝟛 \bbthree MATHEMATICAL DOUBLE-STRUCK DIGIT THREE +U+1D7DC 𝟜 \bbfour MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR +U+1D7DD 𝟝 \bbfive MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE +U+1D7DE 𝟞 \bbsix MATHEMATICAL DOUBLE-STRUCK DIGIT SIX +U+1D7DF 𝟟 \bbseven MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN +U+1D7E0 𝟠 \bbeight MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT +U+1D7E1 𝟡 \bbnine MATHEMATICAL DOUBLE-STRUCK DIGIT NINE +U+1D7E2 𝟢 \sanszero MATHEMATICAL SANS-SERIF DIGIT ZERO +U+1D7E3 𝟣 \sansone MATHEMATICAL SANS-SERIF DIGIT ONE +U+1D7E4 𝟤 \sanstwo MATHEMATICAL SANS-SERIF DIGIT TWO +U+1D7E5 𝟥 \sansthree MATHEMATICAL SANS-SERIF DIGIT THREE +U+1D7E6 𝟦 \sansfour MATHEMATICAL SANS-SERIF DIGIT FOUR +U+1D7E7 𝟧 \sansfive MATHEMATICAL SANS-SERIF DIGIT FIVE +U+1D7E8 𝟨 \sanssix MATHEMATICAL SANS-SERIF DIGIT SIX +U+1D7E9 𝟩 \sansseven MATHEMATICAL SANS-SERIF DIGIT SEVEN +U+1D7EA 𝟪 \sanseight MATHEMATICAL SANS-SERIF DIGIT EIGHT +U+1D7EB 𝟫 \sansnine MATHEMATICAL SANS-SERIF DIGIT NINE +U+1D7EC 𝟬 \bsanszero MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO +U+1D7ED 𝟭 \bsansone MATHEMATICAL SANS-SERIF BOLD DIGIT ONE +U+1D7EE 𝟮 \bsanstwo MATHEMATICAL SANS-SERIF BOLD DIGIT TWO +U+1D7EF 𝟯 \bsansthree MATHEMATICAL SANS-SERIF BOLD DIGIT THREE +U+1D7F0 𝟰 \bsansfour MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR +U+1D7F1 𝟱 \bsansfive MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE +U+1D7F2 𝟲 \bsanssix MATHEMATICAL SANS-SERIF BOLD DIGIT SIX +U+1D7F3 𝟳 \bsansseven MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN +U+1D7F4 𝟴 \bsanseight MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT +U+1D7F5 𝟵 \bsansnine MATHEMATICAL SANS-SERIF BOLD DIGIT NINE +U+1D7F6 𝟶 \ttzero MATHEMATICAL MONOSPACE DIGIT ZERO +U+1D7F7 𝟷 \ttone MATHEMATICAL MONOSPACE DIGIT ONE +U+1D7F8 𝟸 \tttwo MATHEMATICAL MONOSPACE DIGIT TWO +U+1D7F9 𝟹 \ttthree MATHEMATICAL MONOSPACE DIGIT THREE +U+1D7FA 𝟺 \ttfour MATHEMATICAL MONOSPACE DIGIT FOUR +U+1D7FB 𝟻 \ttfive MATHEMATICAL MONOSPACE DIGIT FIVE +U+1D7FC 𝟼 \ttsix MATHEMATICAL MONOSPACE DIGIT SIX +U+1D7FD 𝟽 \ttseven MATHEMATICAL MONOSPACE DIGIT SEVEN +U+1D7FE 𝟾 \tteight MATHEMATICAL MONOSPACE DIGIT EIGHT +U+1D7FF 𝟿 \ttnine MATHEMATICAL MONOSPACE DIGIT NINE +U+1F004 🀄 \:mahjong: MAHJONG TILE RED DRAGON +U+1F0CF 🃏 \:black_joker: PLAYING CARD BLACK JOKER +U+1F170 🅰 \:a: NEGATIVE SQUARED LATIN CAPITAL LETTER A +U+1F171 🅱 \:b: NEGATIVE SQUARED LATIN CAPITAL LETTER B +U+1F17E 🅾 \:o2: NEGATIVE SQUARED LATIN CAPITAL LETTER O +U+1F17F 🅿 \:parking: NEGATIVE SQUARED LATIN CAPITAL LETTER P +U+1F18E 🆎 \:ab: NEGATIVE SQUARED AB +U+1F191 🆑 \:cl: SQUARED CL +U+1F192 🆒 \:cool: SQUARED COOL +U+1F193 🆓 \:free: SQUARED FREE +U+1F194 🆔 \:id: SQUARED ID +U+1F195 🆕 \:new: SQUARED NEW +U+1F196 🆖 \:ng: SQUARED NG +U+1F197 🆗 \:ok: SQUARED OK +U+1F198 🆘 \:sos: SQUARED SOS +U+1F199 🆙 \:up: SQUARED UP WITH EXCLAMATION MARK +U+1F19A 🆚 \:vs: SQUARED VS +U+1F201 🈁 \:koko: SQUARED KATAKANA KOKO +U+1F202 🈂 \:sa: SQUARED KATAKANA SA +U+1F21A 🈚 \:u7121: SQUARED CJK UNIFIED IDEOGRAPH-7121 +U+1F22F 🈯 \:u6307: SQUARED CJK UNIFIED IDEOGRAPH-6307 +U+1F232 🈲 \:u7981: SQUARED CJK UNIFIED IDEOGRAPH-7981 +U+1F233 🈳 \:u7a7a: SQUARED CJK UNIFIED IDEOGRAPH-7A7A +U+1F234 🈴 \:u5408: SQUARED CJK UNIFIED IDEOGRAPH-5408 +U+1F235 🈵 \:u6e80: SQUARED CJK UNIFIED IDEOGRAPH-6E80 +U+1F236 🈶 \:u6709: SQUARED CJK UNIFIED IDEOGRAPH-6709 +U+1F237 🈷 \:u6708: SQUARED CJK UNIFIED IDEOGRAPH-6708 +U+1F238 🈸 \:u7533: SQUARED CJK UNIFIED IDEOGRAPH-7533 +U+1F239 🈹 \:u5272: SQUARED CJK UNIFIED IDEOGRAPH-5272 +U+1F23A 🈺 \:u55b6: SQUARED CJK UNIFIED IDEOGRAPH-55B6 +U+1F250 🉐 \:ideograph_advantage: CIRCLED IDEOGRAPH ADVANTAGE +U+1F251 🉑 \:accept: CIRCLED IDEOGRAPH ACCEPT +U+1F300 🌀 \:cyclone: CYCLONE +U+1F301 🌁 \:foggy: FOGGY +U+1F302 🌂 \:closed_umbrella: CLOSED UMBRELLA +U+1F303 🌃 \:night_with_stars: NIGHT WITH STARS +U+1F304 🌄 \:sunrise_over_mountains: SUNRISE OVER MOUNTAINS +U+1F305 🌅 \:sunrise: SUNRISE +U+1F306 🌆 \:city_sunset: CITYSCAPE AT DUSK +U+1F307 🌇 \:city_sunrise: SUNSET OVER BUILDINGS +U+1F308 🌈 \:rainbow: RAINBOW +U+1F309 🌉 \:bridge_at_night: BRIDGE AT NIGHT +U+1F30A 🌊 \:ocean: WATER WAVE +U+1F30B 🌋 \:volcano: VOLCANO +U+1F30C 🌌 \:milky_way: MILKY WAY +U+1F30D 🌍 \:earth_africa: EARTH GLOBE EUROPE-AFRICA +U+1F30E 🌎 \:earth_americas: EARTH GLOBE AMERICAS +U+1F30F 🌏 \:earth_asia: EARTH GLOBE ASIA-AUSTRALIA +U+1F310 🌐 \:globe_with_meridians: GLOBE WITH MERIDIANS +U+1F311 🌑 \:new_moon: NEW MOON SYMBOL +U+1F312 🌒 \:waxing_crescent_moon: WAXING CRESCENT MOON SYMBOL +U+1F313 🌓 \:first_quarter_moon: FIRST QUARTER MOON SYMBOL +U+1F314 🌔 \:moon: WAXING GIBBOUS MOON SYMBOL +U+1F315 🌕 \:full_moon: FULL MOON SYMBOL +U+1F316 🌖 \:waning_gibbous_moon: WANING GIBBOUS MOON SYMBOL +U+1F317 🌗 \:last_quarter_moon: LAST QUARTER MOON SYMBOL +U+1F318 🌘 \:waning_crescent_moon: WANING CRESCENT MOON SYMBOL +U+1F319 🌙 \:crescent_moon: CRESCENT MOON +U+1F31A 🌚 \:new_moon_with_face: NEW MOON WITH FACE +U+1F31B 🌛 \:first_quarter_moon_with_face: FIRST QUARTER MOON WITH FACE +U+1F31C 🌜 \:last_quarter_moon_with_face: LAST QUARTER MOON WITH FACE +U+1F31D 🌝 \:full_moon_with_face: FULL MOON WITH FACE +U+1F31E 🌞 \:sun_with_face: SUN WITH FACE +U+1F31F 🌟 \:star2: GLOWING STAR +U+1F320 🌠 \:stars: SHOOTING STAR +U+1F330 🌰 \:chestnut: CHESTNUT +U+1F331 🌱 \:seedling: SEEDLING +U+1F332 🌲 \:evergreen_tree: EVERGREEN TREE +U+1F333 🌳 \:deciduous_tree: DECIDUOUS TREE +U+1F334 🌴 \:palm_tree: PALM TREE +U+1F335 🌵 \:cactus: CACTUS +U+1F337 🌷 \:tulip: TULIP +U+1F338 🌸 \:cherry_blossom: CHERRY BLOSSOM +U+1F339 🌹 \:rose: ROSE +U+1F33A 🌺 \:hibiscus: HIBISCUS +U+1F33B 🌻 \:sunflower: SUNFLOWER +U+1F33C 🌼 \:blossom: BLOSSOM +U+1F33D 🌽 \:corn: EAR OF MAIZE +U+1F33E 🌾 \:ear_of_rice: EAR OF RICE +U+1F33F 🌿 \:herb: HERB +U+1F340 🍀 \:four_leaf_clover: FOUR LEAF CLOVER +U+1F341 🍁 \:maple_leaf: MAPLE LEAF +U+1F342 🍂 \:fallen_leaf: FALLEN LEAF +U+1F343 🍃 \:leaves: LEAF FLUTTERING IN WIND +U+1F344 🍄 \:mushroom: MUSHROOM +U+1F345 🍅 \:tomato: TOMATO +U+1F346 🍆 \:eggplant: AUBERGINE +U+1F347 🍇 \:grapes: GRAPES +U+1F348 🍈 \:melon: MELON +U+1F349 🍉 \:watermelon: WATERMELON +U+1F34A 🍊 \:tangerine: TANGERINE +U+1F34B 🍋 \:lemon: LEMON +U+1F34C 🍌 \:banana: BANANA +U+1F34D 🍍 \:pineapple: PINEAPPLE +U+1F34E 🍎 \:apple: RED APPLE +U+1F34F 🍏 \:green_apple: GREEN APPLE +U+1F350 🍐 \:pear: PEAR +U+1F351 🍑 \:peach: PEACH +U+1F352 🍒 \:cherries: CHERRIES +U+1F353 🍓 \:strawberry: STRAWBERRY +U+1F354 🍔 \:hamburger: HAMBURGER +U+1F355 🍕 \:pizza: SLICE OF PIZZA +U+1F356 🍖 \:meat_on_bone: MEAT ON BONE +U+1F357 🍗 \:poultry_leg: POULTRY LEG +U+1F358 🍘 \:rice_cracker: RICE CRACKER +U+1F359 🍙 \:rice_ball: RICE BALL +U+1F35A 🍚 \:rice: COOKED RICE +U+1F35B 🍛 \:curry: CURRY AND RICE +U+1F35C 🍜 \:ramen: STEAMING BOWL +U+1F35D 🍝 \:spaghetti: SPAGHETTI +U+1F35E 🍞 \:bread: BREAD +U+1F35F 🍟 \:fries: FRENCH FRIES +U+1F360 🍠 \:sweet_potato: ROASTED SWEET POTATO +U+1F361 🍡 \:dango: DANGO +U+1F362 🍢 \:oden: ODEN +U+1F363 🍣 \:sushi: SUSHI +U+1F364 🍤 \:fried_shrimp: FRIED SHRIMP +U+1F365 🍥 \:fish_cake: FISH CAKE WITH SWIRL DESIGN +U+1F366 🍦 \:icecream: SOFT ICE CREAM +U+1F367 🍧 \:shaved_ice: SHAVED ICE +U+1F368 🍨 \:ice_cream: ICE CREAM +U+1F369 🍩 \:doughnut: DOUGHNUT +U+1F36A 🍪 \:cookie: COOKIE +U+1F36B 🍫 \:chocolate_bar: CHOCOLATE BAR +U+1F36C 🍬 \:candy: CANDY +U+1F36D 🍭 \:lollipop: LOLLIPOP +U+1F36E 🍮 \:custard: CUSTARD +U+1F36F 🍯 \:honey_pot: HONEY POT +U+1F370 🍰 \:cake: SHORTCAKE +U+1F371 🍱 \:bento: BENTO BOX +U+1F372 🍲 \:stew: POT OF FOOD +U+1F373 🍳 \:egg: COOKING +U+1F374 🍴 \:fork_and_knife: FORK AND KNIFE +U+1F375 🍵 \:tea: TEACUP WITHOUT HANDLE +U+1F376 🍶 \:sake: SAKE BOTTLE AND CUP +U+1F377 🍷 \:wine_glass: WINE GLASS +U+1F378 🍸 \:cocktail: COCKTAIL GLASS +U+1F379 🍹 \:tropical_drink: TROPICAL DRINK +U+1F37A 🍺 \:beer: BEER MUG +U+1F37B 🍻 \:beers: CLINKING BEER MUGS +U+1F37C 🍼 \:baby_bottle: BABY BOTTLE +U+1F380 🎀 \:ribbon: RIBBON +U+1F381 🎁 \:gift: WRAPPED PRESENT +U+1F382 🎂 \:birthday: BIRTHDAY CAKE +U+1F383 🎃 \:jack_o_lantern: JACK-O-LANTERN +U+1F384 🎄 \:christmas_tree: CHRISTMAS TREE +U+1F385 🎅 \:santa: FATHER CHRISTMAS +U+1F386 🎆 \:fireworks: FIREWORKS +U+1F387 🎇 \:sparkler: FIREWORK SPARKLER +U+1F388 🎈 \:balloon: BALLOON +U+1F389 🎉 \:tada: PARTY POPPER +U+1F38A 🎊 \:confetti_ball: CONFETTI BALL +U+1F38B 🎋 \:tanabata_tree: TANABATA TREE +U+1F38C 🎌 \:crossed_flags: CROSSED FLAGS +U+1F38D 🎍 \:bamboo: PINE DECORATION +U+1F38E 🎎 \:dolls: JAPANESE DOLLS +U+1F38F 🎏 \:flags: CARP STREAMER +U+1F390 🎐 \:wind_chime: WIND CHIME +U+1F391 🎑 \:rice_scene: MOON VIEWING CEREMONY +U+1F392 🎒 \:school_satchel: SCHOOL SATCHEL +U+1F393 🎓 \:mortar_board: GRADUATION CAP +U+1F3A0 🎠 \:carousel_horse: CAROUSEL HORSE +U+1F3A1 🎡 \:ferris_wheel: FERRIS WHEEL +U+1F3A2 🎢 \:roller_coaster: ROLLER COASTER +U+1F3A3 🎣 \:fishing_pole_and_fish: FISHING POLE AND FISH +U+1F3A4 🎤 \:microphone: MICROPHONE +U+1F3A5 🎥 \:movie_camera: MOVIE CAMERA +U+1F3A6 🎦 \:cinema: CINEMA +U+1F3A7 🎧 \:headphones: HEADPHONE +U+1F3A8 🎨 \:art: ARTIST PALETTE +U+1F3A9 🎩 \:tophat: TOP HAT +U+1F3AA 🎪 \:circus_tent: CIRCUS TENT +U+1F3AB 🎫 \:ticket: TICKET +U+1F3AC 🎬 \:clapper: CLAPPER BOARD +U+1F3AD 🎭 \:performing_arts: PERFORMING ARTS +U+1F3AE 🎮 \:video_game: VIDEO GAME +U+1F3AF 🎯 \:dart: DIRECT HIT +U+1F3B0 🎰 \:slot_machine: SLOT MACHINE +U+1F3B1 🎱 \:8ball: BILLIARDS +U+1F3B2 🎲 \:game_die: GAME DIE +U+1F3B3 🎳 \:bowling: BOWLING +U+1F3B4 🎴 \:flower_playing_cards: FLOWER PLAYING CARDS +U+1F3B5 🎵 \:musical_note: MUSICAL NOTE +U+1F3B6 🎶 \:notes: MULTIPLE MUSICAL NOTES +U+1F3B7 🎷 \:saxophone: SAXOPHONE +U+1F3B8 🎸 \:guitar: GUITAR +U+1F3B9 🎹 \:musical_keyboard: MUSICAL KEYBOARD +U+1F3BA 🎺 \:trumpet: TRUMPET +U+1F3BB 🎻 \:violin: VIOLIN +U+1F3BC 🎼 \:musical_score: MUSICAL SCORE +U+1F3BD 🎽 \:running_shirt_with_sash: RUNNING SHIRT WITH SASH +U+1F3BE 🎾 \:tennis: TENNIS RACQUET AND BALL +U+1F3BF 🎿 \:ski: SKI AND SKI BOOT +U+1F3C0 🏀 \:basketball: BASKETBALL AND HOOP +U+1F3C1 🏁 \:checkered_flag: CHEQUERED FLAG +U+1F3C2 🏂 \:snowboarder: SNOWBOARDER +U+1F3C3 🏃 \:runner: RUNNER +U+1F3C4 🏄 \:surfer: SURFER +U+1F3C6 🏆 \:trophy: TROPHY +U+1F3C7 🏇 \:horse_racing: HORSE RACING +U+1F3C8 🏈 \:football: AMERICAN FOOTBALL +U+1F3C9 🏉 \:rugby_football: RUGBY FOOTBALL +U+1F3CA 🏊 \:swimmer: SWIMMER +U+1F3E0 🏠 \:house: HOUSE BUILDING +U+1F3E1 🏡 \:house_with_garden: HOUSE WITH GARDEN +U+1F3E2 🏢 \:office: OFFICE BUILDING +U+1F3E3 🏣 \:post_office: JAPANESE POST OFFICE +U+1F3E4 🏤 \:european_post_office: EUROPEAN POST OFFICE +U+1F3E5 🏥 \:hospital: HOSPITAL +U+1F3E6 🏦 \:bank: BANK +U+1F3E7 🏧 \:atm: AUTOMATED TELLER MACHINE +U+1F3E8 🏨 \:hotel: HOTEL +U+1F3E9 🏩 \:love_hotel: LOVE HOTEL +U+1F3EA 🏪 \:convenience_store: CONVENIENCE STORE +U+1F3EB 🏫 \:school: SCHOOL +U+1F3EC 🏬 \:department_store: DEPARTMENT STORE +U+1F3ED 🏭 \:factory: FACTORY +U+1F3EE 🏮 \:izakaya_lantern: IZAKAYA LANTERN +U+1F3EF 🏯 \:japanese_castle: JAPANESE CASTLE +U+1F3F0 🏰 \:european_castle: EUROPEAN CASTLE +U+1F3FB 🏻 \:skin-tone-2: EMOJI MODIFIER FITZPATRICK TYPE-1-2 +U+1F3FC 🏼 \:skin-tone-3: EMOJI MODIFIER FITZPATRICK TYPE-3 +U+1F3FD 🏽 \:skin-tone-4: EMOJI MODIFIER FITZPATRICK TYPE-4 +U+1F3FE 🏾 \:skin-tone-5: EMOJI MODIFIER FITZPATRICK TYPE-5 +U+1F3FF 🏿 \:skin-tone-6: EMOJI MODIFIER FITZPATRICK TYPE-6 +U+1F400 🐀 \:rat: RAT +U+1F401 🐁 \:mouse2: MOUSE +U+1F402 🐂 \:ox: OX +U+1F403 🐃 \:water_buffalo: WATER BUFFALO +U+1F404 🐄 \:cow2: COW +U+1F405 🐅 \:tiger2: TIGER +U+1F406 🐆 \:leopard: LEOPARD +U+1F407 🐇 \:rabbit2: RABBIT +U+1F408 🐈 \:cat2: CAT +U+1F409 🐉 \:dragon: DRAGON +U+1F40A 🐊 \:crocodile: CROCODILE +U+1F40B 🐋 \:whale2: WHALE +U+1F40C 🐌 \:snail: SNAIL +U+1F40D 🐍 \:snake: SNAKE +U+1F40E 🐎 \:racehorse: HORSE +U+1F40F 🐏 \:ram: RAM +U+1F410 🐐 \:goat: GOAT +U+1F411 🐑 \:sheep: SHEEP +U+1F412 🐒 \:monkey: MONKEY +U+1F413 🐓 \:rooster: ROOSTER +U+1F414 🐔 \:chicken: CHICKEN +U+1F415 🐕 \:dog2: DOG +U+1F416 🐖 \:pig2: PIG +U+1F417 🐗 \:boar: BOAR +U+1F418 🐘 \:elephant: ELEPHANT +U+1F419 🐙 \:octopus: OCTOPUS +U+1F41A 🐚 \:shell: SPIRAL SHELL +U+1F41B 🐛 \:bug: BUG +U+1F41C 🐜 \:ant: ANT +U+1F41D 🐝 \:bee: HONEYBEE +U+1F41E 🐞 \:beetle: LADY BEETLE +U+1F41F 🐟 \:fish: FISH +U+1F420 🐠 \:tropical_fish: TROPICAL FISH +U+1F421 🐡 \:blowfish: BLOWFISH +U+1F422 🐢 \:turtle: TURTLE +U+1F423 🐣 \:hatching_chick: HATCHING CHICK +U+1F424 🐤 \:baby_chick: BABY CHICK +U+1F425 🐥 \:hatched_chick: FRONT-FACING BABY CHICK +U+1F426 🐦 \:bird: BIRD +U+1F427 🐧 \:penguin: PENGUIN +U+1F428 🐨 \:koala: KOALA +U+1F429 🐩 \:poodle: POODLE +U+1F42A 🐪 \:dromedary_camel: DROMEDARY CAMEL +U+1F42B 🐫 \:camel: BACTRIAN CAMEL +U+1F42C 🐬 \:dolphin: DOLPHIN +U+1F42D 🐭 \:mouse: MOUSE FACE +U+1F42E 🐮 \:cow: COW FACE +U+1F42F 🐯 \:tiger: TIGER FACE +U+1F430 🐰 \:rabbit: RABBIT FACE +U+1F431 🐱 \:cat: CAT FACE +U+1F432 🐲 \:dragon_face: DRAGON FACE +U+1F433 🐳 \:whale: SPOUTING WHALE +U+1F434 🐴 \:horse: HORSE FACE +U+1F435 🐵 \:monkey_face: MONKEY FACE +U+1F436 🐶 \:dog: DOG FACE +U+1F437 🐷 \:pig: PIG FACE +U+1F438 🐸 \:frog: FROG FACE +U+1F439 🐹 \:hamster: HAMSTER FACE +U+1F43A 🐺 \:wolf: WOLF FACE +U+1F43B 🐻 \:bear: BEAR FACE +U+1F43C 🐼 \:panda_face: PANDA FACE +U+1F43D 🐽 \:pig_nose: PIG NOSE +U+1F43E 🐾 \:feet: PAW PRINTS +U+1F440 👀 \:eyes: EYES +U+1F442 👂 \:ear: EAR +U+1F443 👃 \:nose: NOSE +U+1F444 👄 \:lips: MOUTH +U+1F445 👅 \:tongue: TONGUE +U+1F446 👆 \:point_up_2: WHITE UP POINTING BACKHAND INDEX +U+1F447 👇 \:point_down: WHITE DOWN POINTING BACKHAND INDEX +U+1F448 👈 \:point_left: WHITE LEFT POINTING BACKHAND INDEX +U+1F449 👉 \:point_right: WHITE RIGHT POINTING BACKHAND INDEX +U+1F44A 👊 \:facepunch: FISTED HAND SIGN +U+1F44B 👋 \:wave: WAVING HAND SIGN +U+1F44C 👌 \:ok_hand: OK HAND SIGN +U+1F44D 👍 \:+1: THUMBS UP SIGN +U+1F44E 👎 \:-1: THUMBS DOWN SIGN +U+1F44F 👏 \:clap: CLAPPING HANDS SIGN +U+1F450 👐 \:open_hands: OPEN HANDS SIGN +U+1F451 👑 \:crown: CROWN +U+1F452 👒 \:womans_hat: WOMANS HAT +U+1F453 👓 \:eyeglasses: EYEGLASSES +U+1F454 👔 \:necktie: NECKTIE +U+1F455 👕 \:shirt: T-SHIRT +U+1F456 👖 \:jeans: JEANS +U+1F457 👗 \:dress: DRESS +U+1F458 👘 \:kimono: KIMONO +U+1F459 👙 \:bikini: BIKINI +U+1F45A 👚 \:womans_clothes: WOMANS CLOTHES +U+1F45B 👛 \:purse: PURSE +U+1F45C 👜 \:handbag: HANDBAG +U+1F45D 👝 \:pouch: POUCH +U+1F45E 👞 \:mans_shoe: MANS SHOE +U+1F45F 👟 \:athletic_shoe: ATHLETIC SHOE +U+1F460 👠 \:high_heel: HIGH-HEELED SHOE +U+1F461 👡 \:sandal: WOMANS SANDAL +U+1F462 👢 \:boot: WOMANS BOOTS +U+1F463 👣 \:footprints: FOOTPRINTS +U+1F464 👤 \:bust_in_silhouette: BUST IN SILHOUETTE +U+1F465 👥 \:busts_in_silhouette: BUSTS IN SILHOUETTE +U+1F466 👦 \:boy: BOY +U+1F467 👧 \:girl: GIRL +U+1F468 👨 \:man: MAN +U+1F469 👩 \:woman: WOMAN +U+1F46A 👪 \:family: FAMILY +U+1F46B 👫 \:couple: MAN AND WOMAN HOLDING HANDS +U+1F46C 👬 \:two_men_holding_hands: TWO MEN HOLDING HANDS +U+1F46D 👭 \:two_women_holding_hands: TWO WOMEN HOLDING HANDS +U+1F46E 👮 \:cop: POLICE OFFICER +U+1F46F 👯 \:dancers: WOMAN WITH BUNNY EARS +U+1F470 👰 \:bride_with_veil: BRIDE WITH VEIL +U+1F471 👱 \:person_with_blond_hair: PERSON WITH BLOND HAIR +U+1F472 👲 \:man_with_gua_pi_mao: MAN WITH GUA PI MAO +U+1F473 👳 \:man_with_turban: MAN WITH TURBAN +U+1F474 👴 \:older_man: OLDER MAN +U+1F475 👵 \:older_woman: OLDER WOMAN +U+1F476 👶 \:baby: BABY +U+1F477 👷 \:construction_worker: CONSTRUCTION WORKER +U+1F478 👸 \:princess: PRINCESS +U+1F479 👹 \:japanese_ogre: JAPANESE OGRE +U+1F47A 👺 \:japanese_goblin: JAPANESE GOBLIN +U+1F47B 👻 \:ghost: GHOST +U+1F47C 👼 \:angel: BABY ANGEL +U+1F47D 👽 \:alien: EXTRATERRESTRIAL ALIEN +U+1F47E 👾 \:space_invader: ALIEN MONSTER +U+1F47F 👿 \:imp: IMP +U+1F480 💀 \:skull: SKULL +U+1F481 💁 \:information_desk_person: INFORMATION DESK PERSON +U+1F482 💂 \:guardsman: GUARDSMAN +U+1F483 💃 \:dancer: DANCER +U+1F484 💄 \:lipstick: LIPSTICK +U+1F485 💅 \:nail_care: NAIL POLISH +U+1F486 💆 \:massage: FACE MASSAGE +U+1F487 💇 \:haircut: HAIRCUT +U+1F488 💈 \:barber: BARBER POLE +U+1F489 💉 \:syringe: SYRINGE +U+1F48A 💊 \:pill: PILL +U+1F48B 💋 \:kiss: KISS MARK +U+1F48C 💌 \:love_letter: LOVE LETTER +U+1F48D 💍 \:ring: RING +U+1F48E 💎 \:gem: GEM STONE +U+1F48F 💏 \:couplekiss: KISS +U+1F490 💐 \:bouquet: BOUQUET +U+1F491 💑 \:couple_with_heart: COUPLE WITH HEART +U+1F492 💒 \:wedding: WEDDING +U+1F493 💓 \:heartbeat: BEATING HEART +U+1F494 💔 \:broken_heart: BROKEN HEART +U+1F495 💕 \:two_hearts: TWO HEARTS +U+1F496 💖 \:sparkling_heart: SPARKLING HEART +U+1F497 💗 \:heartpulse: GROWING HEART +U+1F498 💘 \:cupid: HEART WITH ARROW +U+1F499 💙 \:blue_heart: BLUE HEART +U+1F49A 💚 \:green_heart: GREEN HEART +U+1F49B 💛 \:yellow_heart: YELLOW HEART +U+1F49C 💜 \:purple_heart: PURPLE HEART +U+1F49D 💝 \:gift_heart: HEART WITH RIBBON +U+1F49E 💞 \:revolving_hearts: REVOLVING HEARTS +U+1F49F 💟 \:heart_decoration: HEART DECORATION +U+1F4A0 💠 \:diamond_shape_with_a_dot_inside: DIAMOND SHAPE WITH A DOT INSIDE +U+1F4A1 💡 \:bulb: ELECTRIC LIGHT BULB +U+1F4A2 💢 \:anger: ANGER SYMBOL +U+1F4A3 💣 \:bomb: BOMB +U+1F4A4 💤 \:zzz: SLEEPING SYMBOL +U+1F4A5 💥 \:boom: COLLISION SYMBOL +U+1F4A6 💦 \:sweat_drops: SPLASHING SWEAT SYMBOL +U+1F4A7 💧 \:droplet: DROPLET +U+1F4A8 💨 \:dash: DASH SYMBOL +U+1F4A9 💩 \:hankey: PILE OF POO +U+1F4AA 💪 \:muscle: FLEXED BICEPS +U+1F4AB 💫 \:dizzy: DIZZY SYMBOL +U+1F4AC 💬 \:speech_balloon: SPEECH BALLOON +U+1F4AD 💭 \:thought_balloon: THOUGHT BALLOON +U+1F4AE 💮 \:white_flower: WHITE FLOWER +U+1F4AF 💯 \:100: HUNDRED POINTS SYMBOL +U+1F4B0 💰 \:moneybag: MONEY BAG +U+1F4B1 💱 \:currency_exchange: CURRENCY EXCHANGE +U+1F4B2 💲 \:heavy_dollar_sign: HEAVY DOLLAR SIGN +U+1F4B3 💳 \:credit_card: CREDIT CARD +U+1F4B4 💴 \:yen: BANKNOTE WITH YEN SIGN +U+1F4B5 💵 \:dollar: BANKNOTE WITH DOLLAR SIGN +U+1F4B6 💶 \:euro: BANKNOTE WITH EURO SIGN +U+1F4B7 💷 \:pound: BANKNOTE WITH POUND SIGN +U+1F4B8 💸 \:money_with_wings: MONEY WITH WINGS +U+1F4B9 💹 \:chart: CHART WITH UPWARDS TREND AND YEN SIGN +U+1F4BA 💺 \:seat: SEAT +U+1F4BB 💻 \:computer: PERSONAL COMPUTER +U+1F4BC 💼 \:briefcase: BRIEFCASE +U+1F4BD 💽 \:minidisc: MINIDISC +U+1F4BE 💾 \:floppy_disk: FLOPPY DISK +U+1F4BF 💿 \:cd: OPTICAL DISC +U+1F4C0 📀 \:dvd: DVD +U+1F4C1 📁 \:file_folder: FILE FOLDER +U+1F4C2 📂 \:open_file_folder: OPEN FILE FOLDER +U+1F4C3 📃 \:page_with_curl: PAGE WITH CURL +U+1F4C4 📄 \:page_facing_up: PAGE FACING UP +U+1F4C5 📅 \:date: CALENDAR +U+1F4C6 📆 \:calendar: TEAR-OFF CALENDAR +U+1F4C7 📇 \:card_index: CARD INDEX +U+1F4C8 📈 \:chart_with_upwards_trend: CHART WITH UPWARDS TREND +U+1F4C9 📉 \:chart_with_downwards_trend: CHART WITH DOWNWARDS TREND +U+1F4CA 📊 \:bar_chart: BAR CHART +U+1F4CB 📋 \:clipboard: CLIPBOARD +U+1F4CC 📌 \:pushpin: PUSHPIN +U+1F4CD 📍 \:round_pushpin: ROUND PUSHPIN +U+1F4CE 📎 \:paperclip: PAPERCLIP +U+1F4CF 📏 \:straight_ruler: STRAIGHT RULER +U+1F4D0 📐 \:triangular_ruler: TRIANGULAR RULER +U+1F4D1 📑 \:bookmark_tabs: BOOKMARK TABS +U+1F4D2 📒 \:ledger: LEDGER +U+1F4D3 📓 \:notebook: NOTEBOOK +U+1F4D4 📔 \:notebook_with_decorative_cover: NOTEBOOK WITH DECORATIVE COVER +U+1F4D5 📕 \:closed_book: CLOSED BOOK +U+1F4D6 📖 \:book: OPEN BOOK +U+1F4D7 📗 \:green_book: GREEN BOOK +U+1F4D8 📘 \:blue_book: BLUE BOOK +U+1F4D9 📙 \:orange_book: ORANGE BOOK +U+1F4DA 📚 \:books: BOOKS +U+1F4DB 📛 \:name_badge: NAME BADGE +U+1F4DC 📜 \:scroll: SCROLL +U+1F4DD 📝 \:memo: MEMO +U+1F4DE 📞 \:telephone_receiver: TELEPHONE RECEIVER +U+1F4DF 📟 \:pager: PAGER +U+1F4E0 📠 \:fax: FAX MACHINE +U+1F4E1 📡 \:satellite: SATELLITE ANTENNA +U+1F4E2 📢 \:loudspeaker: PUBLIC ADDRESS LOUDSPEAKER +U+1F4E3 📣 \:mega: CHEERING MEGAPHONE +U+1F4E4 📤 \:outbox_tray: OUTBOX TRAY +U+1F4E5 📥 \:inbox_tray: INBOX TRAY +U+1F4E6 📦 \:package: PACKAGE +U+1F4E7 📧 \:e-mail: E-MAIL SYMBOL +U+1F4E8 📨 \:incoming_envelope: INCOMING ENVELOPE +U+1F4E9 📩 \:envelope_with_arrow: ENVELOPE WITH DOWNWARDS ARROW ABOVE +U+1F4EA 📪 \:mailbox_closed: CLOSED MAILBOX WITH LOWERED FLAG +U+1F4EB 📫 \:mailbox: CLOSED MAILBOX WITH RAISED FLAG +U+1F4EC 📬 \:mailbox_with_mail: OPEN MAILBOX WITH RAISED FLAG +U+1F4ED 📭 \:mailbox_with_no_mail: OPEN MAILBOX WITH LOWERED FLAG +U+1F4EE 📮 \:postbox: POSTBOX +U+1F4EF 📯 \:postal_horn: POSTAL HORN +U+1F4F0 📰 \:newspaper: NEWSPAPER +U+1F4F1 📱 \:iphone: MOBILE PHONE +U+1F4F2 📲 \:calling: MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT +U+1F4F3 📳 \:vibration_mode: VIBRATION MODE +U+1F4F4 📴 \:mobile_phone_off: MOBILE PHONE OFF +U+1F4F5 📵 \:no_mobile_phones: NO MOBILE PHONES +U+1F4F6 📶 \:signal_strength: ANTENNA WITH BARS +U+1F4F7 📷 \:camera: CAMERA +U+1F4F9 📹 \:video_camera: VIDEO CAMERA +U+1F4FA 📺 \:tv: TELEVISION +U+1F4FB 📻 \:radio: RADIO +U+1F4FC 📼 \:vhs: VIDEOCASSETTE +U+1F500 🔀 \:twisted_rightwards_arrows: TWISTED RIGHTWARDS ARROWS +U+1F501 🔁 \:repeat: CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS +U+1F502 🔂 \:repeat_one: CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY +U+1F503 🔃 \:arrows_clockwise: CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS +U+1F504 🔄 \:arrows_counterclockwise: ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS +U+1F505 🔅 \:low_brightness: LOW BRIGHTNESS SYMBOL +U+1F506 🔆 \:high_brightness: HIGH BRIGHTNESS SYMBOL +U+1F507 🔇 \:mute: SPEAKER WITH CANCELLATION STROKE +U+1F508 🔈 \:speaker: SPEAKER +U+1F509 🔉 \:sound: SPEAKER WITH ONE SOUND WAVE +U+1F50A 🔊 \:loud_sound: SPEAKER WITH THREE SOUND WAVES +U+1F50B 🔋 \:battery: BATTERY +U+1F50C 🔌 \:electric_plug: ELECTRIC PLUG +U+1F50D 🔍 \:mag: LEFT-POINTING MAGNIFYING GLASS +U+1F50E 🔎 \:mag_right: RIGHT-POINTING MAGNIFYING GLASS +U+1F50F 🔏 \:lock_with_ink_pen: LOCK WITH INK PEN +U+1F510 🔐 \:closed_lock_with_key: CLOSED LOCK WITH KEY +U+1F511 🔑 \:key: KEY +U+1F512 🔒 \:lock: LOCK +U+1F513 🔓 \:unlock: OPEN LOCK +U+1F514 🔔 \:bell: BELL +U+1F515 🔕 \:no_bell: BELL WITH CANCELLATION STROKE +U+1F516 🔖 \:bookmark: BOOKMARK +U+1F517 🔗 \:link: LINK SYMBOL +U+1F518 🔘 \:radio_button: RADIO BUTTON +U+1F519 🔙 \:back: BACK WITH LEFTWARDS ARROW ABOVE +U+1F51A 🔚 \:end: END WITH LEFTWARDS ARROW ABOVE +U+1F51B 🔛 \:on: ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE +U+1F51C 🔜 \:soon: SOON WITH RIGHTWARDS ARROW ABOVE +U+1F51D 🔝 \:top: TOP WITH UPWARDS ARROW ABOVE +U+1F51E 🔞 \:underage: NO ONE UNDER EIGHTEEN SYMBOL +U+1F51F 🔟 \:keycap_ten: KEYCAP TEN +U+1F520 🔠 \:capital_abcd: INPUT SYMBOL FOR LATIN CAPITAL LETTERS +U+1F521 🔡 \:abcd: INPUT SYMBOL FOR LATIN SMALL LETTERS +U+1F522 🔢 \:1234: INPUT SYMBOL FOR NUMBERS +U+1F523 🔣 \:symbols: INPUT SYMBOL FOR SYMBOLS +U+1F524 🔤 \:abc: INPUT SYMBOL FOR LATIN LETTERS +U+1F525 🔥 \:fire: FIRE +U+1F526 🔦 \:flashlight: ELECTRIC TORCH +U+1F527 🔧 \:wrench: WRENCH +U+1F528 🔨 \:hammer: HAMMER +U+1F529 🔩 \:nut_and_bolt: NUT AND BOLT +U+1F52A 🔪 \:hocho: HOCHO +U+1F52B 🔫 \:gun: PISTOL +U+1F52C 🔬 \:microscope: MICROSCOPE +U+1F52D 🔭 \:telescope: TELESCOPE +U+1F52E 🔮 \:crystal_ball: CRYSTAL BALL +U+1F52F 🔯 \:six_pointed_star: SIX POINTED STAR WITH MIDDLE DOT +U+1F530 🔰 \:beginner: JAPANESE SYMBOL FOR BEGINNER +U+1F531 🔱 \:trident: TRIDENT EMBLEM +U+1F532 🔲 \:black_square_button: BLACK SQUARE BUTTON +U+1F533 🔳 \:white_square_button: WHITE SQUARE BUTTON +U+1F534 🔴 \:red_circle: LARGE RED CIRCLE +U+1F535 🔵 \:large_blue_circle: LARGE BLUE CIRCLE +U+1F536 🔶 \:large_orange_diamond: LARGE ORANGE DIAMOND +U+1F537 🔷 \:large_blue_diamond: LARGE BLUE DIAMOND +U+1F538 🔸 \:small_orange_diamond: SMALL ORANGE DIAMOND +U+1F539 🔹 \:small_blue_diamond: SMALL BLUE DIAMOND +U+1F53A 🔺 \:small_red_triangle: UP-POINTING RED TRIANGLE +U+1F53B 🔻 \:small_red_triangle_down: DOWN-POINTING RED TRIANGLE +U+1F53C 🔼 \:arrow_up_small: UP-POINTING SMALL RED TRIANGLE +U+1F53D 🔽 \:arrow_down_small: DOWN-POINTING SMALL RED TRIANGLE +U+1F550 🕐 \:clock1: CLOCK FACE ONE OCLOCK +U+1F551 🕑 \:clock2: CLOCK FACE TWO OCLOCK +U+1F552 🕒 \:clock3: CLOCK FACE THREE OCLOCK +U+1F553 🕓 \:clock4: CLOCK FACE FOUR OCLOCK +U+1F554 🕔 \:clock5: CLOCK FACE FIVE OCLOCK +U+1F555 🕕 \:clock6: CLOCK FACE SIX OCLOCK +U+1F556 🕖 \:clock7: CLOCK FACE SEVEN OCLOCK +U+1F557 🕗 \:clock8: CLOCK FACE EIGHT OCLOCK +U+1F558 🕘 \:clock9: CLOCK FACE NINE OCLOCK +U+1F559 🕙 \:clock10: CLOCK FACE TEN OCLOCK +U+1F55A 🕚 \:clock11: CLOCK FACE ELEVEN OCLOCK +U+1F55B 🕛 \:clock12: CLOCK FACE TWELVE OCLOCK +U+1F55C 🕜 \:clock130: CLOCK FACE ONE-THIRTY +U+1F55D 🕝 \:clock230: CLOCK FACE TWO-THIRTY +U+1F55E 🕞 \:clock330: CLOCK FACE THREE-THIRTY +U+1F55F 🕟 \:clock430: CLOCK FACE FOUR-THIRTY +U+1F560 🕠 \:clock530: CLOCK FACE FIVE-THIRTY +U+1F561 🕡 \:clock630: CLOCK FACE SIX-THIRTY +U+1F562 🕢 \:clock730: CLOCK FACE SEVEN-THIRTY +U+1F563 🕣 \:clock830: CLOCK FACE EIGHT-THIRTY +U+1F564 🕤 \:clock930: CLOCK FACE NINE-THIRTY +U+1F565 🕥 \:clock1030: CLOCK FACE TEN-THIRTY +U+1F566 🕦 \:clock1130: CLOCK FACE ELEVEN-THIRTY +U+1F567 🕧 \:clock1230: CLOCK FACE TWELVE-THIRTY +U+1F5FB 🗻 \:mount_fuji: MOUNT FUJI +U+1F5FC 🗼 \:tokyo_tower: TOKYO TOWER +U+1F5FD 🗽 \:statue_of_liberty: STATUE OF LIBERTY +U+1F5FE 🗾 \:japan: SILHOUETTE OF JAPAN +U+1F5FF 🗿 \:moyai: MOYAI +U+1F600 😀 \:grinning: GRINNING FACE +U+1F601 😁 \:grin: GRINNING FACE WITH SMILING EYES +U+1F602 😂 \:joy: FACE WITH TEARS OF JOY +U+1F603 😃 \:smiley: SMILING FACE WITH OPEN MOUTH +U+1F604 😄 \:smile: SMILING FACE WITH OPEN MOUTH AND SMILING EYES +U+1F605 😅 \:sweat_smile: SMILING FACE WITH OPEN MOUTH AND COLD SWEAT +U+1F606 😆 \:laughing: SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES +U+1F607 😇 \:innocent: SMILING FACE WITH HALO +U+1F608 😈 \:smiling_imp: SMILING FACE WITH HORNS +U+1F609 😉 \:wink: WINKING FACE +U+1F60A 😊 \:blush: SMILING FACE WITH SMILING EYES +U+1F60B 😋 \:yum: FACE SAVOURING DELICIOUS FOOD +U+1F60C 😌 \:relieved: RELIEVED FACE +U+1F60D 😍 \:heart_eyes: SMILING FACE WITH HEART-SHAPED EYES +U+1F60E 😎 \:sunglasses: SMILING FACE WITH SUNGLASSES +U+1F60F 😏 \:smirk: SMIRKING FACE +U+1F610 😐 \:neutral_face: NEUTRAL FACE +U+1F611 😑 \:expressionless: EXPRESSIONLESS FACE +U+1F612 😒 \:unamused: UNAMUSED FACE +U+1F613 😓 \:sweat: FACE WITH COLD SWEAT +U+1F614 😔 \:pensive: PENSIVE FACE +U+1F615 😕 \:confused: CONFUSED FACE +U+1F616 😖 \:confounded: CONFOUNDED FACE +U+1F617 😗 \:kissing: KISSING FACE +U+1F618 😘 \:kissing_heart: FACE THROWING A KISS +U+1F619 😙 \:kissing_smiling_eyes: KISSING FACE WITH SMILING EYES +U+1F61A 😚 \:kissing_closed_eyes: KISSING FACE WITH CLOSED EYES +U+1F61B 😛 \:stuck_out_tongue: FACE WITH STUCK-OUT TONGUE +U+1F61C 😜 \:stuck_out_tongue_winking_eye: FACE WITH STUCK-OUT TONGUE AND WINKING EYE +U+1F61D 😝 \:stuck_out_tongue_closed_eyes: FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES +U+1F61E 😞 \:disappointed: DISAPPOINTED FACE +U+1F61F 😟 \:worried: WORRIED FACE +U+1F620 😠 \:angry: ANGRY FACE +U+1F621 😡 \:rage: POUTING FACE +U+1F622 😢 \:cry: CRYING FACE +U+1F623 😣 \:persevere: PERSEVERING FACE +U+1F624 😤 \:triumph: FACE WITH LOOK OF TRIUMPH +U+1F625 😥 \:disappointed_relieved: DISAPPOINTED BUT RELIEVED FACE +U+1F626 😦 \:frowning: FROWNING FACE WITH OPEN MOUTH +U+1F627 😧 \:anguished: ANGUISHED FACE +U+1F628 😨 \:fearful: FEARFUL FACE +U+1F629 😩 \:weary: WEARY FACE +U+1F62A 😪 \:sleepy: SLEEPY FACE +U+1F62B 😫 \:tired_face: TIRED FACE +U+1F62C 😬 \:grimacing: GRIMACING FACE +U+1F62D 😭 \:sob: LOUDLY CRYING FACE +U+1F62E 😮 \:open_mouth: FACE WITH OPEN MOUTH +U+1F62F 😯 \:hushed: HUSHED FACE +U+1F630 😰 \:cold_sweat: FACE WITH OPEN MOUTH AND COLD SWEAT +U+1F631 😱 \:scream: FACE SCREAMING IN FEAR +U+1F632 😲 \:astonished: ASTONISHED FACE +U+1F633 😳 \:flushed: FLUSHED FACE +U+1F634 😴 \:sleeping: SLEEPING FACE +U+1F635 😵 \:dizzy_face: DIZZY FACE +U+1F636 😶 \:no_mouth: FACE WITHOUT MOUTH +U+1F637 😷 \:mask: FACE WITH MEDICAL MASK +U+1F638 😸 \:smile_cat: GRINNING CAT FACE WITH SMILING EYES +U+1F639 😹 \:joy_cat: CAT FACE WITH TEARS OF JOY +U+1F63A 😺 \:smiley_cat: SMILING CAT FACE WITH OPEN MOUTH +U+1F63B 😻 \:heart_eyes_cat: SMILING CAT FACE WITH HEART-SHAPED EYES +U+1F63C 😼 \:smirk_cat: CAT FACE WITH WRY SMILE +U+1F63D 😽 \:kissing_cat: KISSING CAT FACE WITH CLOSED EYES +U+1F63E 😾 \:pouting_cat: POUTING CAT FACE +U+1F63F 😿 \:crying_cat_face: CRYING CAT FACE +U+1F640 🙀 \:scream_cat: WEARY CAT FACE +U+1F645 🙅 \:no_good: FACE WITH NO GOOD GESTURE +U+1F646 🙆 \:ok_woman: FACE WITH OK GESTURE +U+1F647 🙇 \:bow: PERSON BOWING DEEPLY +U+1F648 🙈 \:see_no_evil: SEE-NO-EVIL MONKEY +U+1F649 🙉 \:hear_no_evil: HEAR-NO-EVIL MONKEY +U+1F64A 🙊 \:speak_no_evil: SPEAK-NO-EVIL MONKEY +U+1F64B 🙋 \:raising_hand: HAPPY PERSON RAISING ONE HAND +U+1F64C 🙌 \:raised_hands: PERSON RAISING BOTH HANDS IN CELEBRATION +U+1F64D 🙍 \:person_frowning: PERSON FROWNING +U+1F64E 🙎 \:person_with_pouting_face: PERSON WITH POUTING FACE +U+1F64F 🙏 \:pray: PERSON WITH FOLDED HANDS +U+1F680 🚀 \:rocket: ROCKET +U+1F681 🚁 \:helicopter: HELICOPTER +U+1F682 🚂 \:steam_locomotive: STEAM LOCOMOTIVE +U+1F683 🚃 \:railway_car: RAILWAY CAR +U+1F684 🚄 \:bullettrain_side: HIGH-SPEED TRAIN +U+1F685 🚅 \:bullettrain_front: HIGH-SPEED TRAIN WITH BULLET NOSE +U+1F686 🚆 \:train2: TRAIN +U+1F687 🚇 \:metro: METRO +U+1F688 🚈 \:light_rail: LIGHT RAIL +U+1F689 🚉 \:station: STATION +U+1F68A 🚊 \:tram: TRAM +U+1F68B 🚋 \:train: TRAM CAR +U+1F68C 🚌 \:bus: BUS +U+1F68D 🚍 \:oncoming_bus: ONCOMING BUS +U+1F68E 🚎 \:trolleybus: TROLLEYBUS +U+1F68F 🚏 \:busstop: BUS STOP +U+1F690 🚐 \:minibus: MINIBUS +U+1F691 🚑 \:ambulance: AMBULANCE +U+1F692 🚒 \:fire_engine: FIRE ENGINE +U+1F693 🚓 \:police_car: POLICE CAR +U+1F694 🚔 \:oncoming_police_car: ONCOMING POLICE CAR +U+1F695 🚕 \:taxi: TAXI +U+1F696 🚖 \:oncoming_taxi: ONCOMING TAXI +U+1F697 🚗 \:car: AUTOMOBILE +U+1F698 🚘 \:oncoming_automobile: ONCOMING AUTOMOBILE +U+1F699 🚙 \:blue_car: RECREATIONAL VEHICLE +U+1F69A 🚚 \:truck: DELIVERY TRUCK +U+1F69B 🚛 \:articulated_lorry: ARTICULATED LORRY +U+1F69C 🚜 \:tractor: TRACTOR +U+1F69D 🚝 \:monorail: MONORAIL +U+1F69E 🚞 \:mountain_railway: MOUNTAIN RAILWAY +U+1F69F 🚟 \:suspension_railway: SUSPENSION RAILWAY +U+1F6A0 🚠 \:mountain_cableway: MOUNTAIN CABLEWAY +U+1F6A1 🚡 \:aerial_tramway: AERIAL TRAMWAY +U+1F6A2 🚢 \:ship: SHIP +U+1F6A3 🚣 \:rowboat: ROWBOAT +U+1F6A4 🚤 \:speedboat: SPEEDBOAT +U+1F6A5 🚥 \:traffic_light: HORIZONTAL TRAFFIC LIGHT +U+1F6A6 🚦 \:vertical_traffic_light: VERTICAL TRAFFIC LIGHT +U+1F6A7 🚧 \:construction: CONSTRUCTION SIGN +U+1F6A8 🚨 \:rotating_light: POLICE CARS REVOLVING LIGHT +U+1F6A9 🚩 \:triangular_flag_on_post: TRIANGULAR FLAG ON POST +U+1F6AA 🚪 \:door: DOOR +U+1F6AB 🚫 \:no_entry_sign: NO ENTRY SIGN +U+1F6AC 🚬 \:smoking: SMOKING SYMBOL +U+1F6AD 🚭 \:no_smoking: NO SMOKING SYMBOL +U+1F6AE 🚮 \:put_litter_in_its_place: PUT LITTER IN ITS PLACE SYMBOL +U+1F6AF 🚯 \:do_not_litter: DO NOT LITTER SYMBOL +U+1F6B0 🚰 \:potable_water: POTABLE WATER SYMBOL +U+1F6B1 🚱 \:non-potable_water: NON-POTABLE WATER SYMBOL +U+1F6B2 🚲 \:bike: BICYCLE +U+1F6B3 🚳 \:no_bicycles: NO BICYCLES +U+1F6B4 🚴 \:bicyclist: BICYCLIST +U+1F6B5 🚵 \:mountain_bicyclist: MOUNTAIN BICYCLIST +U+1F6B6 🚶 \:walking: PEDESTRIAN +U+1F6B7 🚷 \:no_pedestrians: NO PEDESTRIANS +U+1F6B8 🚸 \:children_crossing: CHILDREN CROSSING +U+1F6B9 🚹 \:mens: MENS SYMBOL +U+1F6BA 🚺 \:womens: WOMENS SYMBOL +U+1F6BB 🚻 \:restroom: RESTROOM +U+1F6BC 🚼 \:baby_symbol: BABY SYMBOL +U+1F6BD 🚽 \:toilet: TOILET +U+1F6BE 🚾 \:wc: WATER CLOSET +U+1F6BF 🚿 \:shower: SHOWER +U+1F6C0 🛀 \:bath: BATH +U+1F6C1 🛁 \:bathtub: BATHTUB +U+1F6C2 🛂 \:passport_control: PASSPORT CONTROL +U+1F6C3 🛃 \:customs: CUSTOMS +U+1F6C4 🛄 \:baggage_claim: BAGGAGE CLAIM +U+1F6C5 🛅 \:left_luggage: LEFT LUGGAGE +----------------- ------------ -------------------------------------------- -------------------------------------------------------------------------------------------------------- + + vim:tw=180:et:ft=help:norl: + +endif diff --git a/doc/julia-vim-L2U.txt b/doc/julia-vim-L2U.txt new file mode 100644 index 00000000..8f3a852c --- /dev/null +++ b/doc/julia-vim-L2U.txt @@ -0,0 +1,405 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'julia') == -1 + +*julia-vim-L2U.txt* Support for LaTeX-to-Unicode substitutions + +Author: Carlo Baldassi <carlobaldassi@gmail.com> +License: MIT license {{{ + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +}}} +CONTENTS *julia-vim-L2U* + +LaTeX-to-Unicode substitutions |julia-vim-L2U-introdction| + Via Tab key |julia-vim-L2U-tab| + As you type |julia-vim-L2U-as-you-type| + Via Keymap |julia-vim-L2U-keymap| + On different file types |julia-vim-L2U-file-types| + Enabling and disabling |julia-vim-L2U-enable-disable| +Variables |julia-vim-L2U-variables| +Functions |julia-vim-L2U-functions| + +============================================================================== +LATEX TO UNICODE *julia-vim-L2U-introduction* + +In the Julia REPL, entering a LaTeX-like sequence such as `\alpha` and pressing +the <Tab> key substitutes it with a Unicode character such as `α`. The Julia +REPL also provides partial completions, and suggestions for possible +completions upon repeated pressing of the <Tab> key. Emojis are also +available, with their names written between colons, e.g. `\:interrobang:` +produces `⁉`. + +See |julia-vim-L2U-reference| for the complete table of substitutions. + +This Vim plug-in also provides the functionality needed to convert LaTeX +input sequences into Unicode characters. There are 3 different methods +available: + + 1. The default one is the most similar to the Julia one: substitutions are + triggered by pressing the <Tab> key; if a partial match is found a list + of suggested completions is presented in a menu together with their + Unicode counterpart. The exact behaviour of this feature can be + customized, see |julia-vim-L2U-tab|. + + 2. The second one substitutes symbols on the fly as you type, but only in + |Insert| mode. See |julia-vim-L2U-as-you-type|. + + 3. The third is based on |keymap|. It also substitutes as-you-type, but it + doesn't show you the full LaTeX sequence as you're typing it, and there + is a time-out. Its main advantage over the previous one is that can be + used in more circumstances, e.g. in |Command-line| mode or when searching + for a character with |f| or |t|, as explained in |language-mapping|. See + |julia-vim-L2U-keymap|. + +All of these methods are independent and can be used together without issues. + +The default configuration is to use the first method, and it's only active +when editing Julia files. It only works in |Insert| and |Command-line| modes. + +It is possible to enable it with other file types, see +|julia-vim-L2U-file-types|, and it can be even turned on/off on the fly +regardless of the file type, see |julia-vim-L2U-enable-disable|. + +In |Command-line| mode, e.g. when searching with the |/| or |?| commands, the +default behavior is very similar to the default |Insert| mode behavior, but +slightly more limited, see |julia-vim-L2U-cmdmode|. + +These features only work as described with Vim version 7.4 or higher. Tab +completion can still be made available on lower Vim versions, see +|julia-vim-L2U-workaround|. The keymap mode might work but it hasn't been +tested. + +See |julia-vim| for the general reference about the other features of the +julia-vim plug-in. + +------------------------------------------------------------------------------ +LATEX TO UNICODE VIA TAB KEY *julia-vim-L2U-tab* + +Substitution of LaTeX sequences when pressing the <Tab> key (in |Insert| mode or +in |Command-line| modes) is active by default. Use |g:latex_to_unicode_tab| to +control it. + +When this feature is active, the julia-vim plug-in creates a mapping for the +<Tab> key (in |Insert| mode) which takes precedence on any previously defined +mapping assigned to it, such that when the <Tab> key is pressed the plug-in +looks for potential LaTeX symbol matches before the cursor, and if it fails to +find anything of interest it will fall-back to the previous mapping for <Tab> +(with default Vim settings, this means it will insert a literal <Tab>; but if +you have defined some other behavior for that key, e.g. by installing another +plug-in such as supertab (https://github.com/ervandew/supertab) than that will +be used). + +For example, entering this text in a file: +> + 1 + \alpha +< +and then pressing <Tab>, results in: +> + 1 + α +< + +This feature is associated with 'omnifunc' completion, and therefore can +always be accessed via CTRL-X CTRL-O, even when |g:latex_to_unicode_tab| is 0. + +A literal <Tab> key can always be entered by using CTRL-V before <Tab> (see +|i_CTRL-V|). + +Partial sequence recognition triggers auto-completion (performed as if the +`longest` setting was used in 'completeopt') and shows a menu of suggestions +together with their corresponding Unicode symbol (provided the `menu` setting +is included in 'completeopt', and more then one match is found). So for +example, entering `\al` and pressing <Tab> will result in the following list: +> + +-------------+ + | \aleph ℵ | + | \allequal ≌ | + | \alpha α | + +-------------+ +> +Then, pressing `p` will reduce the list to `\alpha`, pressing <Tab> will +complete it and pressing <Tab> again will perform the substitution. + +The completion menu can be disbled, and this will happen automatically if a +plug-in which is known to be incompatible with this feature is detected: see +|g:latex_to_unicode_suggestions|. + +Some LaTeX sequences can be valid both as they are and as partial matches for +other sequences, e.g. `\ne` is associated with `≠`, but it is also a partial +match for `\nequiv` (`≢`). By default, if <Tab> finds an exact match performs +the substitution, but this can be controlled by the |g:latex_to_unicode_eager| +setting. + +Command-line mode *julia-vim-L2U-cmdmode* + +In |Command-line| mode, the behavior is largely the same except that both +<Tab> and <S-Tab> are mapped by default, and the functionality is slightly +more limited. No suggestions are shown for partial completions. Pre-existing +user-defined mappings of <Tab> are overridden. In order to avoid that, the +completion can be mapped onto a defferent key combination, see +|g:latex_to_unicode_cmd_mapping|. When using <Tab>, if no matches are found +the behavior falls back to the standard Vim command-line completion. + +Vim versions lower than 7.4 *julia-vim-L2U-workaround* + +The <Tab> key remapping is not performed by default with Vim versions lower +than 7.4. However, the functionality is still available via onmicompletion, +which is accessible by the CTRL-X CTRL-O key combination. You can map some +other key combination to this by adding something like +> + inoremap <C-Tab> <C-X><C-O> +< +in your |.vimrc| file. If you'd map <Tab> directly, then you'd need to use +CTRL-V <Tab> to insert a literal <Tab>. + +The settings |g:latex_to_unicode_eager| and |g:latex_to_unicode_suggestions| +are still meaningful in this case. + +------------------------------------------------------------------------------ +LATEX TO UNICODE AS YOU TYPE *julia-vim-L2U-as-you-type* + +This feature is disabled by default, see |g:latex_to_unicode_auto|, and it is +only available with Vim version 7.4 or higher. It consists in substituting +valid LaTeX sequences with Unicode symbols automatically as the typing +progresses, as soon as the sequences is unambiguously complete. For example, +when typing: +> + \chi\^2 = 1 +< +The result is +> + χ² = 1 +< +The `\chi` is substituted right when the second backslash is entered, and the +`\^2` is substituted when the following space is entered, before the equal +sign. + +This feature does not currently work with emojis. + +This feature does not interfere with the <Tab> based substitution. + +------------------------------------------------------------------------------ +LATEX TO UNICODE VIA KEYMAP *julia-vim-L2U-keymap* + +This method is somewhat similar to the as-you-type one described above, but it +uses |keymap| to generate the mappings. This has the advantage that it works +in more circumstances, e.g. in |Command-line| mode or when searching within a +line with |f| or |t| (since it uses |language-mapping| underneath). It can +also be easily turned on or off like any other keymap (see |i_CTRL-^| and +|c_CTRL-^|). Like the as-you-type fature, it doesn't work with emojis. +The disadvantage is that you don't see the whole sequence as you're typing +it, and you can't fix mistakes with backspace, for example. +Another difference is that there is a |timeout| like for any other mapping. + +In order to use this method, set |g:latex_to_unicode_keymap| to `1`. +You can use it in parallel with the other methods, they don't interfere. For +example, typing a partial sequence and pressing <Tab> still triggers +completions and suggestions if |g:latex_to_unicode_tab| is active. + +If you use this feature, it's also useful to set |lCursor|. + +------------------------------------------------------------------------------ +LATEX TO UNICODE ON DIFFERENT FILE TYPES *julia-vim-L2U-file-types* + +By default, the LaTeX-to-Unicode substitutions are only active when editing +Julia files. However, you can use the variable |g:latex_to_unicode_file_types| +to specify for which file types this feature is active by default. The +variable must be set to a string containing a |pattern| (a regular expression) +which matches the desired file types, or to a list of such patterns. For +example, to activate the feature on all file types by default, you could put +this in your |.vimrc| file: +> + let g:latex_to_unicode_file_types = ".*" +< +To make it active only on, say, Julia and Lisp files, you could use: +> + let g:latex_to_unicode_file_types = ["julia", "lisp"] +< + +Another option, |g:latex_to_unicode_file_types_blacklist|, can be used to +exclude certain file types. For example, if you'd wish to enable the feature +in all cases except for Python and untyped files, you would use: +> + let g:latex_to_unicode_file_types = ".*" + let g:latex_to_unicode_file_types_blacklist = ["python", ""] +< + +NOTE: enabling the functionality will override the |'omnifunc'| setting, which +can be undesirable, and interfere with plug-ins for different file types. In +any case, the previous |'omnifunc'| setting is restored when the functionality +is disabled, see |julia-vim-L2U-enable-disable|. + +------------------------------------------------------------------------------ +ENABLING AND DISABLING LATEX TO UNICODE *julia-vim-L2U-enable-disable* + +The LaTeX-to-Unicode functionality can be enabled or disabled at any time, +regardless of the |'filetype'| of the file you're editing, using the functions +|LaTeXtoUnicode#Enable()|, |LaTeXtoUnicode#Disable()|, |LaTeXtoUnicode#Toggle()|. +For example, you could use a mapping like: +> + noremap <expr> <F7> LaTeXtoUnicode#Toggle() + noremap! <expr> <F7> LaTeXtoUnicode#Toggle() +< +and then use the <F7> key to quickly switch the functionality on and off as +needed (see |noremap| and |noremap!|). + +NOTE: these functions are different from the variables |g:latex_to_unicode_tab|, +|g:latex_to_unicode_auto| and |g:latex_to_unicode_keymap|: the functions +enable/disable the functionality as a whole, while the variables control +individual features (tab, auto and keymap substitution). + +============================================================================== +VARIABLES *julia-vim-L2U-variables* + + *g:latex_to_unicode_tab* +g:latex_to_unicode_tab + + Determines whether to map LaTeX-to-Unicode substitution to the + <Tab> key while in |Insert| and |Command-line| modes, see + |julia-vim-L2U-tab|. If unspecified, it is on. You can disable + the feature by default by inserting the line +> + let g:latex_to_unicode_tab = 0 +< + in your |.vimrc| file. You can change this setting at any moment + while editing, but you need to invoke |LaTeXtoUnicode#Init()| + for the change to take effect. + + *g:latex_to_unicode_suggestions* +g:latex_to_unicode_suggestions + + Determines whether the <Tab> key mapping produces suggestions + for partial matches. By default, this is set to 1 (active), + unless a plug-in which is known to be incompatible with it is + detected. Currently, known incompatible plug-ins are + YouCompleteMe (https://github.com/Valloric/YouCompleteMe), + neocomplcache (https://github.com/Shougo/neocomplcache.vim), + neocomplete (https://github.com/Shougo/neocomplete.vim) and + deoplete (https://github.com/Shougo/deoplete.nvim), + + This variable can be set at any time, changes will immediately + take effect. + + *g:latex_to_unicode_eager* +g:latex_to_unicode_eager + + Determines whether the <Tab> key mapping performs the + substitution immediately upon finding an exact match. By + default this setting is set to 1 (active), so that e.g. typing + `\ne` and pressing the <Tab> key triggers the substitution. If + this variable is set to 0, an exact match which is also a + possible partial match to some other sequence triggers the + suggestions menu first, but another <Tab> forces the + substitution, so that e.g. typing `\ne` and then <Tab> + produces a list with `\ne`, `\neg`, `\nequiv` etc., and + pressing <Tab> again performs the substitution. + + This variable can be set at any time, changes will immediately + take effect. When |g:latex_to_unicode_suggestions| is `0`, + this setting has no effect (it's like if it was always on). + + *g:latex_to_unicode_auto* +g:latex_to_unicode_auto + + Determines whether to activate LaTeX-to-Unicode substitution + on the fly as you type (in |Insert| mode), see + |julia-vim-L2U-as-you-type|. If unspecified, it is `0` (off). + You can enable the feature by default by inserting the line +> + let g:latex_to_unicode_auto = 1 +< + in your |.vimrc| file. You can change this setting at any + moment while editing, but you need to invoke + |LaTeXtoUnicode#Init()| for the change to take effect. + + + *g:latex_to_unicode_keymap* +g:latex_to_unicode_keymap + + Determines whether to activate the |keymap|-based + LaTeX-to-Unicode substitutions, see |julia-vim-L2U-keymap|. + If unspecified, it is `0` (off). You can enable the feature by + default by inserting the line +> + let g:latex_to_unicode_keymap = 1 +< + in your |.vimrc| file. You can change this setting at any + moment while editing, but you need to invoke + |LaTeXtoUnicode#Init()| for the change to take effect. + + *g:latex_to_unicode_file_types* +g:latex_to_unicode_file_types + + Contains a |pattern|, or a list of patterns, which are matched + against the |'filetype'| to determine when to enable the + LaTeX-to-Unicode functionality, see |julia-vim-L2U-file-types|. + By default, its value is `"julia"`. The patterns provided must + match the whole filetype name. See also + |g:latex_to_unicode_file_types_blacklist|. + + *g:latex_to_unicode_file_types_blacklist* +g:latex_to_unicode_file_types_blacklist + + Same as |g:latex_to_unicode_file_types|, but acts in reverse: + it disables the LaTeX-to-Unicode functionality when the + |'filetype'| matches the provided pattern (or any of the + patterns if a list is provided). By default, it contains an + unmatchable pattern, i.e. it is effectively disabled. + + *g:latex_to_unicode_cmd_mapping* +g:latex_to_unicode_cmd_mapping + + Specifies the mapping (or list of mappings) for the + substitution in |Command-line| mode. By default, it is + `['<Tab>', '<S-Tab>']`, but it can be changed to avoid + overriding other user-defined mapping, e.g. to `'<S-Tab>'` + (if your terminal suppoorts it) or `'<C-\><Tab>'`. + The `'<Tab>'` (or to be more precise the |wildchar| key) and + `'<S-Tab>'` mappings are special in that they fall back to + performing default Vim completions in case no suitable + substitutions are found. + +============================================================================== +FUNCTIONS *julia-vim-L2U-functions* + + *LaTeXtoUnicode#Init()* +LaTeXtoUnicode#Init() + + Initialize or re-initialize the LaTeX-to-Unicode substitutions + (see |julia-vim-L2U-introduction|). Must be invoked after + changing |g:latex_to_unicode_tab| or |g:latex_to_unicode_auto| + to make the changes take effect. + + *LaTeXtoUnicode#Enable()* + *LaTeXtoUnicode#Disable()* + *LaTeXtoUnicode#Toggle()* +LaTeXtoUnicode#Enable() +LaTeXtoUnicode#Disable() +LaTeXtoUnicode#Toggle() + + These functions enable/disable/toggle the LaTeX-to-Unicode + functionality, regardless of the |'filetype'| specified in + |g:latex_to_unicode_file_types| and + |g:latex_to_unicode_file_types_blacklist|. See + |julia-vim-L2U-enable-disable|. Note that LaTeXtoUnicode#Enable() + will override the |'omnifunc'| definition, if present. However, + LaTeXtoUnicode#Disable() will restore it. + These functions implicitly invoke |LaTeXtoUnicode#Init()|. + + + vim:tw=78:et:ft=help:norl: + +endif diff --git a/doc/julia-vim.txt b/doc/julia-vim.txt new file mode 100644 index 00000000..3f09e3bd --- /dev/null +++ b/doc/julia-vim.txt @@ -0,0 +1,399 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'julia') == -1 + +*julia-vim.txt* Support for Julia in Vim + +Author: Carlo Baldassi <carlobaldassi@gmail.com> +License: MIT license {{{ + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +}}} + +CONTENTS *julia-vim* + +Introduction |julia-vim-introduction| +Block-wise movements/objects |julia-vim-blocks| + Keyword-oriented movements |julia-vim-blocks-move| + Block-oriented movements |julia-vim-blocks-moveblock| + Block text objects |julia-vim-blocks-objects| + Variables |julia-vim-blocks-variables| +Referring to documents |julia-vim-doc| +Extras |julia-vim-extras| +Customizations |julia-vim-options| +About |julia-vim-about| + +============================================================================== +INTRODUCTION *julia-vim-introduction* + +The julia-vim plug-in provides: + - basic support for editing Julia files (automatic filetype detection, + indentation, syntax highlighting) + - support for the |matchit| plugin + - support for Julia block-wise movements (i.e. jumping around between + Julia blocks like if/end, function/end etc.) and block text-objects + - facilities for conversion of LaTeX entries to Unicode symbols which mimic + and extend what the Julia REPL and the IJulia notebook interface do. + Optionally, this functionality can be used with all file types, not + just Julia files. See |julia-vim-L2U|. + - a keymapping |K| to refer julia documents. + +This help file documents: 1) the block-wise movements and objects, how they +work and what variables can be used to enable/disable/tweak them; 2) The +documentation lookup facility; 3) Some extra functions and customization +options. +The LaTeX-to-Unicode facilities are documented in |julia-vim-L2U|. + +============================================================================== +BLOCK-WISE MOVEMENTS AND BLOCK TEXT OBJECTS *julia-vim-blocks* + +In Julia, all blocks start with a keyword (`module`, `function`, `if`, `for`, +`while`, `type`, etc.) and end with the `end` keyword. + +This plug-in adds support for the |matchit| plugin, such that pressing |%| while +on a block keyword will jump to the other keywords pertaining to the same +block. For example, if the cursor is at the beginning of the following code: +> + if a == 1 + if b > 0 + println("yes") + end + else + println("no") + end +< +then pressing |%| will jump to the `else` keyword, pressing it again will jump +to `end`, and pressing it again will go back to the first `if`. + +Note that the matchit plugin is normally distributed with ViM, but it is +disabled by default. To enable it, add this line to your |.vimrc| file: +> + runtime macros/matchit.vim +< +The julia-vim plug-in also adds commands to jump around block keywords in +normal, operator-pending and visual modes (see |vim-modes|). These are somehow +similar to the |]]| and |]m| mappings when used in C and Java files, +respectively, but are more powerful. These commands also require that the +matchit plugin is enabled. + +There are two families of block movements, keyword-oriented (see +|julia-vim-blocks-move|) and block-oriented (see +|julia-vim-blocks-blockmove|). + +Finally, this plug-in also adds block |text-objects| special mappings, so that +whole blocks can be manipulated as a whole when in visual mode or +operator-pending mode, see |julia-vim-block-objects|. + +The block movements and block objects mappings can be collectively disabled, +see |g:julia_blocks|, and customized, see |g:julia_blocks_mappings|. + +NOTE: in all cases, macros at the beginning of a block are considered as part +of the block itself. For example, in this code: +> + @inbounds for i = 1:5 + s += v[i] + end +< +the block begins at `@inbounds`. + +------------------------------------------------------------------------------ +KEYWORD-ORIENTED MOVEMENTS *julia-vim-blocks-move* + +These movements jump to the following/preceding block keyword, and they +differentiate between begin keywords and end keywords. Some block keywords can +also be used outside blocks (e.g. `for` in comprehensions, or `end` within +indexing expressions): these instances are ignored by these commands. + +The following movements are provided: + + *julia_]j* *julia_]J* *julia_[j* *julia_[J* +move_n : jumps to the next begin keyword. By default, it is mapped to `]j`. +move_N : jumps to the next end keyword. By default, it is mapped to `]J`. +move_p : jumps to the preceding begin keyword. By default, it is mapped to `[j`. +move_P : jumps to the preceding end keyword. By default, it is mapped to `[J`. + +Use |g:julia_blocks_mappings| to customize the mappings. + +------------------------------------------------------------------------------ +BLOCK-ORIENTED MOVEMENTS *julia-vim-blocks-moveblock* + +These movements are like keyword-oriented movements (|julia-vim-blocks-move|), +except that they ignore nested blocks within the block where the cursor is. +For example, given the following code (with line annotations): +> + 1 while true + 2 a += 1 + 3 if a > 5 + 4 break + 5 end + 6 end + 7 if b == 2 + 8 return + 9 end +< +if the cursor is on line 2, these movements will ignore the inner +`if/end` block (lines 3 to 5). You would then be able to jump directly +to lines 1 (with `[[`), 6 (with `][`), 7 (with `]]`), or 9 (with `2][`). + +The following movements are provided: + + *julia_]]* *julia_][* *julia_[[* *julia_[]* +moveblock_n : gets out from the current block (if any) and jumps to the next + begin keyword. (Similar to |w| for word movements.) By default, + it is mapped to `]]`. +moveblock_N : jumps to the end of the current block, if any. If the cursor is + already at the end of a block, jumps to the end of the following + block at the same level of the current one, or at the end of the + enclosing block. (Similar to |e| for word movements.) By + default, it is mapped to `][`. +moveblock_p : jumps to the beginning of the current block, if any. If the + cursor is already at the beginning of a block, jumps to the + beginning of the preceding block at the same level of the + current one, or at the beginning of the enclosing block. + (Similar to |b| for word movements.) By default, it is mapped to + `[[`. +moveblock_P : gets out from the current block (if any) and jumps to the + preceding end keyword. (Similar to |ge| for word movements.) + By default, it is mapped to `[]`. + +Use |g:julia_blocks_mappings| to customize the mappings. + +------------------------------------------------------------------------------ +BLOCK TEXT OBJECTS *julia-vim-blocks-objects* + +The julia-vim plug-in extends the ViM |text-objects| by defining special +mappings which allow to operate on blocks as a whole when in visual mode +or operator-pending mode. The default mappings use `aj` and `ij` to refer to +these objects. +For example, given the following code (with line annotations): +> + 1 while true + 2 a += 1 + 3 if a > 5 + 4 break + 5 end + 6 end +< +if the cursor is on `break` on line 4, pressing `vaj` will select the whole +inner `if` block (lines 3 to 5), and pressing `aj` again will select the whole +`while` block (lines 1 to 6). The same effect could have been obtained with a +counter, i.e. using `v2aj`. If the cursor were initially on line 2, the whole +`while` block would have been selected with the first `vaj`. Using `daj` would +delete a block, `caj` would delete it and leave ViM in insert mode, `=aj` +would indent it, etc. +Starting from line 2, pressing `vij` wuold only select the inner part of the +`while` block (lines 2 to 5). + +The following mappings are provided: + + *julia_aj* *julia_ij* +select_a : the block which contains the cursor, including its delimiters. + By default, this is mapped to `aj`. Repeated application (e.g. + `vajaj`) selects the enclosing blocks. A counter can be used to + the same effect as repetition (e.g. `v2aj`). +select_i : same as select_a, but only selects the lines included between the + delimiters. Thus, this does not work with single-line blocks. + By default, this is mapped to `ij`. Repeated application (e.g. + `vijij`) has no effect, but using a counter has the same effect as + using "select_a" and then selecting the inner part of the outermost + block. For example, with the default mappings, `v3ij` is the same as + `v3ajij`, or `vajajajij`. + +Use |g:julia_blocks_mappings| to customize the mappings. + +The following auxiliary function is only mapped to normal mode: + + *julia_whereami* +whereami : this mapping prints the first line of the current block on the + command line. If invoked repeatedly, or if given a count, it prints + the first line of the enclosing blocks, like `select_a`. If followed + by `select_a`, the selection, or operation, will refer to the last + block printed. By default, it is not mapped to any key, but a + mapping can be easily provided in |g:julia_blocks_mappings|. It is + possible to obtain the string, instead of having it printed, by + calling the function `julia_blocks#whereami()`. In such case, use + the function `julia_blocks#select_reset()` to reset the block + nesting level. + +------------------------------------------------------------------------------ +VARIABLES *julia-vim-blocks-variables* + + *g:julia_blocks* +g:julia_blocks + + Determines whether to map block-wise movements and objects. If + unspecified, it is on. You can disable the feature by default + by inserting the line +> + let g:julia_blocks = 0 +< + in your |.vimrc| file. + + *g:julia_blocks_mappings* +g:julia_blocks_mappings + + Custom mapping for block-wise movements. This must be a |dict| + associating movements to key combinations. Use empty strings + to disable individual mappings. The following is equivalent + to the default mappings (see |julia-vim-blocks-moveblock|, + |julia-vim-blocks-move| and |julia-vim-blocks-objects|): +> + let g:julia_blocks_mappings = { + \ "move_n" : "]j", + \ "move_N" : "]J", + \ "move_p" : "[j", + \ "move_P" : "[J", + \ + \ "moveblock_n" : "]]", + \ "moveblock_N" : "][", + \ "moveblock_p" : "[[", + \ "moveblock_P" : "[]", + \ + \ "select_a" : "aj", + \ "select_i" : "ij", + \ + \ "whereami" : "", + \ } +< + You can change individual mappings by writing something like + this in your |.vimrc| file: +> + let g:julia_blocks_mappings = { + \ "move_N" : "]n", + \ "move_P" : "[n", + \ "whereami" : "<Leader>j", + \ } +< + Or you can disable individual mappings by writing something like + this in your |.vimrc| file: +> + let g:julia_blocks_mappings = { + \ "moveblock_n" : "", + \ "moveblock_p" : "", + \ } +< + All unspecified entries keep their default value. + + +============================================================================== +REFERRING TO DOCUMENTATION *julia-vim-doc* + + *julia-vim-K* +K + Look up documentation for the keyword under the cursor. If found, + a preview window with the documentation is opened. + + This also works for keywords within the opened preview window, + allowing effortless browsing of the documentation. + + (This is not really a key mapping, but uses the built-in + |keywordprg|-mechanism in vim; see |K| if you're curious). + + + *<Plug>(JuliaDocPrompt)* +<Plug>(JuliaDocPrompt) + Open a prompt for keyword documentation lookup. If you don't use |?| + for backward search, you can use the following to make `?` work like + in the Julia REPL: +> + autocmd FileType julia nmap <buffer> ? <Plug>(JuliaDocPrompt) +< + Apply |:augroup| as needed. + + + *:JuliaDoc* +:JuliaDoc {keyword} + Look up documentation for {keyword}. + + +============================================================================== +EXTRAS *julia-vim-extras* + + + *julia#toggle_function_blockassign* + *julia#function_block2assign* + *julia#function_assign2block* +julia#toggle_function_blockassign() +julia#function_block2assign() +julia#function_assign2block() + + These functions allow to transform function definitions + between block format and assignment format. For example, + these two definitions are equivalent: +> + function test(x, y) + x + 2y + end + + test(x, y) = x + 2y +< + You can use the function `julia#toggle_function_blockassign()` + to switch between the two forms (the cursor needs to be on the + first line of the block form). This functionality requires + that the |matchit| plugin is loaded. Only three-line function + blocks like the one in the example are recognized. When + changing the block form into the assignment form, `return` + statements are removed; if the result is empty, `nothing` is + substituted. Leading macros (e.g. `@inline` or `@compat`) are + recognized and preserved by the transformation. + + In order to make this functionality practical, it is advisable + to map it to some key combination, e.g.: +> + noremap <Leader>fb :call julia#toggle_function_blockassign()<CR> +< + +============================================================================== +CUSTOMIZATIONS *julia-vim-options* + +The following options allows customizing some aspects of the plugin. + + *g:julia_spellcheck_docstrings* +g:julia_spellcheck_docstrings + + Determines whether to enable spell-checking for docstrings, + i.e. triple quoted strings that start in the first column. See + |spell|. Default: on (set to `1`). + + *g:julia_spellcheck_strings* +g:julia_spellcheck_strings + + Determines whether to enable spell-checking for all strings. + See |spell|. Default: off (set to `0`). + + *g:julia_spellcheck_comments* +g:julia_spellcheck_comments + + Determines whether to enable spell-checking for comments. See + |spell|. Default: on (set to `1`). + + *g:julia_highlight_operators* +g:julia_highlight_operators + + Determines whether to apply syntax highlighting to operators. + Default: on (set to `1`). + + +============================================================================== +ABOUT *julia-vim-about* + +Grab the latest version or report a bug on GitHub: + +http://github.com/JuliaEditorSupport/julia-vim + + vim:tw=78:et:ft=help:norl: + +endif diff --git a/doc/ledger.txt b/doc/ledger.txt new file mode 100644 index 00000000..1cb2f65c --- /dev/null +++ b/doc/ledger.txt @@ -0,0 +1,443 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ledger') == -1 + +*ledger.txt* Plugin for the ledger filetype. + + + *ledger* *ledger-plugin* + +Contents: + + Commands............|ledger-invoking| + Source................|ledger-source| + Usage..................|ledger-usage| + Tips....................|ledger-tips| + Reports..............|ledger-reports| + Settings............|ledger-settings| + Completion........|ledger-completion| + License..............|ledger-license| + + +============================================================================== +USAGE *ledger-usage* + +Copy each file to the corresponding directory in your ~/.vim directory or +install using Pathogen. + +You can also use a modeline like this in every ledger file: + + vim:filetype=ledger + +============================================================================== +TIPS *ledger-tips* + +Tips and useful commands + +* vim-ledger can do syntax-sensitive folding when you set `foldmethod=syntax` + in the |modeline| of your ledger file. This way transactions can shrink down + to just one line. + +* Try account-completion (as explained below). If you use YouCompleteMe, you + should disable it for Ledger files. Put this in your .vimrc: + + if exists('g:ycm_filetype_blacklist') + call extend(g:ycm_filetype_blacklist, { 'ledger': 1 }) + endif + +* You may use `:make` for syntax checking. It may be convenient to define a + mapping for the following command: + + :silent make | redraw! | cwindow + + It is recommended to set the value of `g:ledger_extra_options` (see below) + as follows: + + let g:ledger_extra_options = '--pedantic --explicit --check-payees' + + to catch most potential problems in your source file. + +* Remap vim paragraph motion to move by transaction. + + In vim, the "{" and "}" keystrokes move the cursor up and down by whole + paragraphs. They can be redefined in ledger files to move by transaction + instead. Add these lines to .vimrc: + + au FileType ledger noremap { ?^\d<CR> + au FileType ledger noremap } /^\d<CR> + + The default definitions already work in ledger files that separate + transactions with blank lines. + +* `:call ledger#transaction_date_set(line('.'), "auxiliary")` + + will set today's date as the auxiliary date of the current transaction. You + can use also "primary" or "unshift" in place of "auxiliary". When you pass + "unshift" the old primary date will be set as the auxiliary date and today's + date will be set as the new primary date. + To use a different date pass a date measured in seconds since 1st Jan 1970 + as the third argument. + +* `:call ledger#transaction_state_set(line('.'), '*')` + + sets the state of the current transaction to '*'. You can use this in custom + mappings. + +* `:call ledger#transaction_state_toggle(line('.'), ' *?!')` + + will toggle through the provided transaction states. You can map this to + double-clicking for example: + + noremap <silent><buffer> <2-LeftMouse>\ + :call ledger#transaction_state_toggle(line('.'), ' *?!')<CR> + +* `:LedgerAlign` + + moves the amount expression of a posting so that the decimal separator is + aligned at the column specified by g:ledger_align_at. If an amount has no + decimal point, the imaginary decimal point to the right of the least + significant digit will align. The command acts on a range, with the default + being the current line. + + The decimal separator can be set using `g:ledger_decimal_sep`. The default + value of `g:ledger_decimal_sep` is `'.'`. + + See below for the recommended mappings. + +* `:call ledger#align_amount_at_cursor()` + + aligns the amount under the cursor and append/prepend the default currency. + The default currency can be set using `g:ledger_default_commodity`. Whether + the commodity should be inserted before the amount or appended to it can be + configured with the boolean flag `g:ledger_commodity_before` (the default + value is 1). A separator between the commodity and the amount may be set + using `g:ledger_commodity_sep`. + + See below for the recommended mappings. + +* `:call ledger#autocomplete_and_align()` + + when the cursor is on a number or immediately after it, invokes + `ledger#align_amount_at_cursor()` to align it and add the default currency; + otherwise, performs autocompletion. If you define the following mappings in + your `.vimrc` then you may perform both autocompletion and alignment using + the <Tab> key: + + au FileType ledger inoremap <silent> <Tab> \ + <C-r>=ledger#autocomplete_and_align()<CR> + au FileType ledger vnoremap <silent> <Tab> :LedgerAlign<CR> + + Alternatively, you may create a file `.vim/after/ftplugin/ledger.vim` + containing the following definitions: + + inoremap <silent> <buffer> <Tab> \ + <C-r>=ledger#autocomplete_and_align()<CR> + vnoremap <silent> <buffer> <Tab> :LedgerAlign<CR> + + Now, you may type `asset:check<Tab><Space>123.45<Tab>`, and have the + account name autocompleted and `$123.45` properly aligned (assuming your + default commodity is set to `'$'`). Or you may press <Tab> in Visual mode + to align a number of transactions at once. + +* `:call ledger#entry()` + + enters a new transaction based on the text in the current line. + The text in the current line is replaced by the new transaction. + This is a front end to `ledger entry`. + +============================================================================== +REPORTS *ledger-reports* + +* `:Ledger` + + Executes an arbitrary Ledger command and sends the output to a new buffer. + For example: + + :Ledger bal ^assets ^liab + + Errors are displayed in a quickfix window. The command offers account and + payee autocompletion (by pressing <Tab>): every name starting with `@` is + autocompleted as a payee; any other name is autocompleted as an account. + + In a report buffer or in the quickfix window, you may press <Tab> to switch + back to your source file, and you may press `q` to dismiss the current window. + + There are three highlight groups that are used to color the report: + + * `LedgerNumber` + + This is used to color nonnegative numbers. + + * `LedgerNegativeNumber` + + This is used to color negative numbers. + + * `LedgerImproperPerc` + + This is used to color improper percentages. + +* `:Balance` + + Show the pending and cleared balance of a given account below the status + line. For example: + + :Balance checking:savings + + The command offers payee and account autocompletion (see `:Ledger`). The + account argument is optional: if no argument is given, the first account + name found in the current line is used. + + Two highlight groups can be used to customize the colors of the line: + + * `LedgerCleared` + + This is used to color the cleared balance. + + * `LedgerPending` + + This is used to color the pending balance. + +* `:Register` + + Opens an arbitrary register report in the quickfix window. For example: + + :Register groceries -p 'this month' + + The command offers account and payee autocompletion (see |:Ledger|). You + may use the standard quickfix commands to jump from an entry in the register + report to the corresponding location in the source file. If you use GUI Vim + or if your terminal has support for the mouse (e.g., iTerm2, or even + Terminal.app in OS X 10.11 or later), you may also double-click on a line + number in the quickfix window to jump to the corresponding posting. + + It is strongly recommended that you add mappings for common quickfix + commands like `:cprev` and `:cnext`, or that you use T. Pope's Unimpaired + plugin. + +* :`Reconcile` + + Reconcile an account. For example: + + :Reconcile checking + + After you press Enter, you will be asked to enter a target amount (use + Vim's syntax for numbers, not your ledger's format). For example, for a + checking account, the target amount may be the balance of your latest bank + statement. The list of uncleared postings appears in the quickfix window. + The current balance of the account, together with the difference between the + target amount and the cleared balance, is shown at the bottom of the screen. + You may use standard quickfix commands to navigate through the postings. You + may use |ledger#transaction_state_set()| to update a transaction's state. + Every time you save your file, the balance and the difference from the + target amount are updated at the bottom of the screen. The goal, of course, + is to get such difference to zero. You may press `<C-l>` to refresh the + Reconcile buffer. To finish reconciling an account, simply close the + quickfix window. + + There is a highlight group to customize the color of the difference from + target: + + * `LedgerTarget` + + This is used to color the difference between the target amount and the + cleared balance. + +============================================================================== +SETTINGS *ledger-settings* + +Configuration + +Include the following let-statements somewhere in your `.vimrc` to modify the +behaviour of the ledger filetype. + +* Path to the `ledger` executable: + + let g:ledger_bin = 'ledger' + +* Additional default options for the `ledger` executable: + + let g:ledger_extra_options = '' + +* To use a custom external system command to generate a list of account names + for completion, set the following. If g:ledger_bin is set, this will default + to running that command with arguments to parse the current file using the + accounts subcommand (works with ledger or hledger), otherwise it will parse + the postings in the current file itself. + + let g:ledger_accounts_cmd = 'your_command args' + +* To use a custom external system command to generate a list of descriptions + for completion, set the following. If g:ledger_bin is set, this will default + to running that command with arguments to parse the current file using the + descriptions subcommand (works with ledger or hledger), otherwise it will + parse the transactions in the current file itself. + + let g:ledger_descriptions_cmd = 'your_command args' + +* Number of columns that will be used to display the foldtext. Set this when + you think that the amount is too far off to the right. + + let g:ledger_maxwidth = 80 + +* String that will be used to fill the space between account name and amount in + the foldtext. Set this to get some kind of lines or visual aid. + + let g:ledger_fillstring = ' -' + +* If you want the account completion to be sorted by level of detail/depth + instead of alphabetical, include the following line: + + let g:ledger_detailed_first = 1 + +* By default vim will fold ledger transactions, leaving surrounding blank lines + unfolded. You can use 'g:ledger_fold_blanks' to hide blank lines following a + transaction. + + let g:ledger_fold_blanks = 0 + + A value of 0 will disable folding of blank lines, 1 will allow folding of a + single blank line between transactions; any larger value will enable folding + unconditionally. + + Note that only lines containing no trailing spaces are considered for + folding. You can take advantage of this to disable this feature on a + case-by-case basis. + +* Decimal separator: + + let g:ledger_decimal_sep = '.' + +* Specify at which column decimal separators should be aligned: + + let g:ledger_align_at = 60 + +* Default commodity used by `ledger#align_amount_at_cursor()`: + + let g:ledger_default_commodity = '' + +* Flag that tells whether the commodity should be prepended or appended to the + amount: + + let g:ledger_commodity_before = 1 + +* String to be put between the commodity and the amount: + + let g:ledger_commodity_sep = '' + +* Flag that enable the spelling of the amount: + + let g:ledger_commodity_spell = 1 + +* Format of transaction date: + + let g:ledger_date_format = '%Y/%m/%d' + +* The file to be used to generate reports: + + let g:ledger_main = '%' + + The default is to use the current file. + +* Position of a report buffer: + + let g:ledger_winpos = 'B' + + Use `b` for bottom, `t` for top, `l` for left, `r` for right. Use uppercase letters + if you want the window to always occupy the full width or height. + +* Format of quickfix register reports (see |:Register|): + + let g:ledger_qf_register_format = \ + '%(date) %-50(payee) %-30(account) %15(amount) %15(total)\n' + + The format is specified using the standard Ledger syntax for --format. + +* Format of the reconcile quickfix window (see |:Reconcile|): + + let g:ledger_qf_reconcile_format = \ + '%(date) %-4(code) %-50(payee) %-30(account) %15(amount)\n' + + The format is specified using the standard Ledger syntax for --format. + +* Flag that tells whether a location list or a quickfix list should be used: + + let g:ledger_use_location_list = 0 + + The default is to use the quickfix window. Set to 1 to use a location list. + +* Position of the quickfix/location list: + + let g:ledger_qf_vertical = 0 + + Set to 1 to open the quickfix window in a vertical split. + +* Size of the quickfix window: + + let g:ledger_qf_size = 10 + + This is the number of lines of a horizontal quickfix window, or the number + of columns of a vertical quickfix window. + +* Flag to show or hide filenames in the quickfix window: + + let g:ledger_qf_hide_file = 1 + + Filenames in the quickfix window are hidden by default. Set this to 1 is + you want filenames to be visible. + +* Text of the output of the |:Balance| command: + + let g:ledger_cleared_string = 'Cleared: ' + let g:ledger_pending_string = 'Cleared or pending: ' + let g:ledger_target_string = 'Difference from target: ' + +============================================================================== +COMPLETION *ledger-completion* + +Omni completion is currently implemented for account names only. + +### Accounts + +Account names are matched by the start of every sub-level. When you +insert an account name like this: + + Asse<C-X><C-O> + +You will get a list of top-level accounts that start like this. + +Go ahead and try something like: + + As:Ban:Che<C-X><C-O> + +When you have an account like this, 'Assets:Bank:Checking' should show up. + +When you want to complete on a virtual transaction, it's currently best +to keep the cursor in front of the closing bracket. Of course you can +insert the closing bracket after calling the completion, too. + +============================================================================== +LICENSE *ledger-license* + +https://github.com/ledger/vim-ledger + +Copyright 2019 Caleb Maclennan +Copyright 2009–2017 Johann Klähn +Copyright 2009 Stefan Karrmann +Copyright 2005 Wolfgang Oertl + +This program is free software: you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation, either version 2 of the License, or (at your +option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program. If not, see <https://www.gnu.org/licenses/>. + + +vim:ts=8 sw=8 noexpandtab tw=78 ft=help: + + +endif diff --git a/doc/ocaml.txt b/doc/ocaml.txt new file mode 100644 index 00000000..83c5418d --- /dev/null +++ b/doc/ocaml.txt @@ -0,0 +1,16 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ocaml') == -1 + +*ocaml.txt* Filetype plugin for OCaml + +CONFIGURATION *ocaml-configuration* + + *g:ocaml_highlight_operators* + +By default operators are not linked to the Operator group and thus not +highlighted. You can turn on highlighting of operators by defining: + + let g:ocaml_highlight_operators = 1 + + vim:tw=78:et:ft=help:norl: + +endif diff --git a/doc/opam.txt b/doc/opam.txt new file mode 100644 index 00000000..6669bb2b --- /dev/null +++ b/doc/opam.txt @@ -0,0 +1,22 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ocaml') == -1 + +*opam.txt* Switch OCaml versions from inside Vim using OPAM + +Author: Rudi Grinberg <http://rgrinberg.com> +License: Same terms as Vim itself (see |license|) + +This plugin is only available if 'compatible' is not set. + +COMMANDS *:opam* + +:Opam {version} Set the current OCaml version to {version}. + +ABOUT *opam-about* + +Grab the latest version or report a bug on GitHub: + +https://github.com/ocaml/vim-ocaml + + vim:tw=78:et:ft=help:norl: + +endif diff --git a/doc/pgsql.txt b/doc/pgsql.txt new file mode 100644 index 00000000..7ccd03d0 --- /dev/null +++ b/doc/pgsql.txt @@ -0,0 +1,143 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'pgsql') == -1 + +*pgsql.txt* Syntax highlighting for PostgreSQL files + _ ~ + | | ~ + ____ ____ ___ ____| | ~ + | _ \ / _ |/___)/ _ | | ~ + | |_| ( (_| |___ | |_| | | ~ + | __/ \___ (___/ \__ |\_) ~ + |_| (_____| |_| ~ + + The best PostgreSQL plugin for Vim! + +Author: Lifepillar <https://github.com/lifepillar> +License: Public Domain + +============================================================================== +CONTENTS *pgsql-contents* + + 1. Syntax highlighting ................... |pgsql-syntax| + 2. Customization ......................... |pgsql-customization| + 3. Autocompletion ........................ |pgsql-autocompletion| + 4. Contributing .......................... |pgsql-contributing| + 5. Credits ............................... |pgsql-credits| + +============================================================================== +Syntax highlighting *pgsql-syntax* + +Files with a .`pgsql` suffix are highlighted out of the box. If you want to +highlight `.sql` files using this plugin by default, add this to your `.vimrc` +(see |ft_sql.txt| for more details): +> + let g:sql_type_default = 'pgsql' +< +Alternatively, after loading a `.sql` file use this command: +> + SQLSetType pgsql.vim +< +To set the file type in new buffers use: +> + let b:sql_type_override='pgsql' | set ft=sql +< +Identifiers starting with an underscore are highlighted as variables. It is +recommended to adopt the convention of prefixing function parameters and local +variables with `_`. + +Code between `$pgsql$`, `$body$`, or `$$` pairs is interpreted as PL/pgSQL and +highlighted accordingly (the delimiters are case-insensitive). If you prefer +to use `$$` to highlight strings instead, you may set |g:pgsql_dollar_strings| +to 1. + +Text enclosed between `$anyword$` pairs, where `anyword` is any non-empty +sequence of word characters different from those with a special meaning (such +as `$pgsql$`) is treated as a multi-line string. + +Finally, the plugin supports syntax highlighting of arbitrary languages within +procedure and function blocks. This feature needs to be configured: see +|g:pgsql_pl|. + +============================================================================== +Customization *pgsql-customization* + + *'g:pgsql_backslash_quote'* +Set to 1 to recognize `\'` as an escape sequence in all strings. By default, +`\'` is treated as an escape sequence only in "escape" strings constants, +i.e., strings enclosed in `E''`. +> + let g:pgsql_backslash_quote = 0 +< + *'g:pgsql_disabled_extensions'* +Support for the most common PostgreSQL extensions is enabled by default. Set +this to a List of names of extensions whose keywords you do not want to be +highlighted. +> + let g:pgsql_disabled_extensions = [] +< + *'g:pgsql_dollar_strings'* +Set to 1 if you want double-dollar enclosed text highlighted as a SQL string. +By default, text quoted with `$$` is highlighted as PL/pgSQL. +> + let g:pgsql_dollar_strings = 0 +< + *'g:pgsql_pl'* + *'b:pgsql_pl'* +A List of the filetypes that should be highlighted inside the body of +user-defined functions and procedures. +> + let g:pgsql_pl = [] +< +For example, to use PL/Python and PL/R, you should define: +> + let g:pgsql_pl = ['python', 'r'] +< +Then, code between `$python$` pairs will be highlighted as Python, and code +between `$r$` pairs will be highlighted as R. + +The buffer-local version of this setting can be used to override the global +setting in a single buffer. + +Note: changes to any of these variables take effect after the SQL filetype is +reloaded. + +============================================================================== +Autocompletion *pgsql-autocompletion* + +This plugin just defines a new dialect for Vim's SQL plugin. As such, it +inherits the static and dynamic completion methods already offered by Vim (see +|sql-completion|). So, for example, by default you may use `<C-c>f` to +complete function names, `<C-c>T` to complete types, and so on. See +|ft_sql.txt| for thorough documentation about SQL support in Vim. + +As far as I know, YouCompleteMe does not support SQL. If you use YouCompleteMe +you may want to disable it for SQL buffers. Add this to +`.vim/after/ftplugin/sql.vim`: +> + if exists('g:ycm_filetype_blacklist') + call extend(g:ycm_filetype_blacklist, { 'sql': 1 }) + endif +< +Of course, I recommend using my own MUcomplete plugin over YCM ;) + +============================================================================== +Contributing *pgsql-contributing* + +For bug reports and feature requests please use: + + https://github.com/lifepillar/pgsql.vim/issues + +Pull requests are welcome, too! + +============================================================================== +Credits *pgsql-credits* + +This plugin was originally a fork of space::tekk's + + https://github.com/spacetekk/pgsql.vim + +and completely rewritten. + + vim:tw=78:ts=8:noet:ft=help:norl: + + +endif diff --git a/doc/ps1.txt b/doc/ps1.txt new file mode 100644 index 00000000..660f2c1a --- /dev/null +++ b/doc/ps1.txt @@ -0,0 +1,68 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'powershell') == -1 + +*ps1.txt* A Windows PowerShell syntax plugin for Vim + +Maintainer: Peter Provost <https://www.github.com/PProvost> +License: Apache 2.0 +Version: 2.10 + +INTRODUCTION *ps1-syntax* + +This plugin provides Vim syntax, indent and filetype detection for Windows +PowerShell scripts, modules, and XML configuration files. + + +ABOUT *ps1-about* + +Grab the latest version or report a bug on GitHub: + +https://github.com/PProvost/vim-ps1 + + +FOLDING *ps1-folding* + +The ps1 syntax file provides syntax folding (see |:syn-fold|) for script blocks +and digital signatures in scripts. + +When 'foldmethod' is set to "syntax" then function script blocks will be +folded unless you use the following in your .vimrc or before opening a script: > + + :let g:ps1_nofold_blocks = 1 +< +Digital signatures in scripts will also be folded unless you use: > + + :let g:ps1_nofold_sig = 1 +< +Note: syntax folding might slow down syntax highlighting significantly, +especially for large files. + + +COMPILER *ps1-compiler* + +The powershell |compiler| script configures |:make| to execute the script in +PowerShell. + +It tries to pick a smart default PowerShell command: `pwsh` if available and +`powershell` otherwise, but you can customize the command: > + + :let g:ps1_makeprg_cmd = '/path/to/pwsh' +< +To configure whether to show the exception type information: > + + :let g:ps1_efm_show_error_categories = 1 +< + +KEYWORD LOOKUP *ps1-keyword* + +To look up keywords using PowerShell's Get-Help, press the |K| key. For more +convenient paging, the pager `less` should be installed, which is included in +many Linux distributions and in macOS. + +Many other distributions are available for Windows like +https://chocolatey.org/packages/less/. Make sure `less` is in a directory +listed in the `PATH` environment variable, which chocolatey above does. + +------------------------------------------------------------------------------ + vim:ft=help: + +endif diff --git a/doc/python-syntax.txt b/doc/python-syntax.txt new file mode 100644 index 00000000..d5391ff7 --- /dev/null +++ b/doc/python-syntax.txt @@ -0,0 +1,124 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'python') == -1 + +*python-syntax.txt* Python syntax highlighting + +============================================================================== +Introduction *python-syntax* *ft-python-syntax* *python.vim* + +This is an enhanced version of the original Vim 6.1 Python syntax highlighting +`python.vim` by Neil Schemenauer. + +Features +-------- + +* Enhanced highlighting for: + * Strings + * Special symbols inside strings + * Numeric constants +* Added support for: + * Python 3 + * Numbers with underscores + * String %-formatting and f-strings + * Magic comments: source code encoding and shebangs + * New exceptions and builtins + * Doctests + * `@decorator` syntax + * Class variables such as `self` and `cls` + * Operators +* Highlighting of the following errors: + * Invalid symbols in source file + * Invalid numeric constants + * Invalid %-formatting inside strings + * Invalid variable names + * Invalid operators + * Mixing spaces and tabs + * Trailing spaces (Enabled with `g:python_highlight_space_errors`) +* Commands for easy switching between versions + +Folding is done by the plugin SimpylFold +(https://github.com/tmhedberg/SimpylFold). + +============================================================================== +Configuration *python-syntax-configuration* + +Option variables +---------------- + +Set variable to `1` to enable or `0` to disable. + +For example to enable all syntax highlighting features you can add the +following command to your `~/.config/nvim/init.vim` or `~/.vimrc`: > + + let g:python_highlight_all = 1 +< + +`g:python_version_2` (default `0`) + Python 2 mode + +`b:python_version_2` (default `0`) + Python 2 mode (buffer local) + +`g:python_highlight_builtins` (default `0`) + Highlight builtin objects, types, and functions + +`g:python_highlight_builtin_objs` (default `0`) + Highlight builtin objects only + +`g:python_highlight_builtin_types` (default `0`) + Highlight builtin types only + +`g:python_highlight_builtin_funcs` (default `0`) + Highlight builtin functions only + +`g:python_highlight_builtin_funcs_kwarg` (default `1`) + Highlight builtin functions when used as kwarg + +`g:python_highlight_exceptions` (default `0`) + Highlight standard exceptions + +`g:python_highlight_string_formatting` (default `0`) + Highlight `%` string formatting + +`g:python_highlight_string_format` (default `0`) + Highlight syntax of `str.format` syntax + +`g:python_highlight_string_templates` (default `0`) + Highlight syntax of `string.Template` + +`g:python_highlight_indent_errors` (default `0`) + Highlight indentation errors + +`g:python_highlight_space_errors` (default `0`) + Highlight trailing spaces + +`g:python_highlight_doctests` (default `0`) + Highlight doc-tests + +`g:python_highlight_func_calls` (default `0`) + Highlight functions calls + +`g:python_highlight_class_vars` (default `0`) + Highlight class variables `self` and `cls` + +`g:python_highlight_operators` (default `0`) + Highlight all operators + +`g:python_highlight_all` (default `0`) + Enable all highlight options above, except for previously set. + +`g:python_highlight_file_headers_as_comments` (default `0`) + Highlight shebang and coding headers as comments + +`g:python_slow_sync` (default `1`) + Disable for slow machines + +Commands +-------- + +`Python2Syntax` + Switch to Python 2 + +`Python3Syntax` + Switch to Python 3 + +endif diff --git a/doc/reason.txt b/doc/reason.txt new file mode 100644 index 00000000..ad2cd1d9 --- /dev/null +++ b/doc/reason.txt @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'reason') == -1 + +*reason.txt* Filetype plugin for Reason + +============================================================================== +CONTENTS *reason* *ft-reason* + + +============================================================================== +INTRODUCTION *reason-intro* + + +============================================================================== +SETTINGS *reason-settings* + + +============================================================================== +MAPPINGS *reason-mappings* + + +============================================================================== + vim:tw=78:sw=4:noet:ts=8:ft=help:norl: + +endif diff --git a/doc/rust.txt b/doc/rust.txt new file mode 100644 index 00000000..6dbb1a2c --- /dev/null +++ b/doc/rust.txt @@ -0,0 +1,490 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1 + +*ft_rust.txt* Filetype plugin for Rust + +============================================================================== +CONTENTS *rust* + +1. Introduction |rust-intro| +2. Settings |rust-settings| +3. Commands |rust-commands| +4. Mappings |rust-mappings| + +============================================================================== +INTRODUCTION *rust-intro* + +This plugin provides syntax and supporting functionality for the Rust +filetype. It requires Vim 8 or higher for full functionality. Some commands +will not work on earlier versions. + +============================================================================== +SETTINGS *rust-settings* + +This plugin has a few variables you can define in your vimrc that change the +behavior of the plugin. + +Some variables can be set buffer local (`:b` prefix), and the buffer local +will take precedence over the global `g:` counterpart. + + *g:rustc_path* +g:rustc_path~ + Set this option to the path to rustc for use in the |:RustRun| and + |:RustExpand| commands. If unset, "rustc" will be located in $PATH: > + let g:rustc_path = $HOME."/bin/rustc" +< + + *g:rustc_makeprg_no_percent* +g:rustc_makeprg_no_percent~ + Set this option to 1 to have 'makeprg' default to "rustc" instead of + "rustc %": > + let g:rustc_makeprg_no_percent = 1 +< + + *g:rust_conceal* +g:rust_conceal~ + Set this option to turn on the basic |conceal| support: > + let g:rust_conceal = 1 +< + + *g:rust_conceal_mod_path* +g:rust_conceal_mod_path~ + Set this option to turn on |conceal| for the path connecting token + "::": > + let g:rust_conceal_mod_path = 1 +< + + *g:rust_conceal_pub* +g:rust_conceal_pub~ + Set this option to turn on |conceal| for the "pub" token: > + let g:rust_conceal_pub = 1 +< + + *g:rust_recommended_style* +g:rust_recommended_style~ + Set this option to enable vim indentation and textwidth settings to + conform to style conventions of the rust standard library (i.e. use 4 + spaces for indents and sets 'textwidth' to 99). This option is enabled + by default. To disable it: > + let g:rust_recommended_style = 0 +< + + *g:rust_fold* +g:rust_fold~ + Set this option to turn on |folding|: > + let g:rust_fold = 1 +< + Value Effect ~ + 0 No folding + 1 Braced blocks are folded. All folds are open by + default. + 2 Braced blocks are folded. 'foldlevel' is left at the + global value (all folds are closed by default). + + *g:rust_bang_comment_leader* +g:rust_bang_comment_leader~ + Set this option to 1 to preserve the leader on multi-line doc comments + using the /*! syntax: > + let g:rust_bang_comment_leader = 1 +< + + *g:rust_use_custom_ctags_defs* +g:rust_use_custom_ctags_defs~ + Set this option to 1 if you have customized ctags definitions for Rust + and do not wish for those included with rust.vim to be used: > + let g:rust_use_custom_ctags_defs = 1 +< + + NOTE: rust.vim's built-in definitions are only used for the Tagbar Vim + plugin, if you have it installed, AND if Universal Ctags is not + detected. This is because Universal Ctags already has built-in + support for Rust when used with Tagbar. + + Also, note that when using ctags other than Universal Ctags, it is not + automatically used when generating |tags| files that Vim can use to + navigate to definitions across different source files. Feel free to + copy `rust.vim/ctags/rust.ctags` into your own `~/.ctags` if you wish + to generate |tags| files. + + + *g:ftplugin_rust_source_path* +g:ftplugin_rust_source_path~ + Set this option to a path that should be prepended to 'path' for Rust + source files: > + let g:ftplugin_rust_source_path = $HOME.'/dev/rust' +< + + *g:rustfmt_command* +g:rustfmt_command~ + Set this option to the name of the 'rustfmt' executable in your $PATH. If + not specified it defaults to 'rustfmt' : > + let g:rustfmt_command = 'rustfmt' +< + *g:rustfmt_autosave* +g:rustfmt_autosave~ + Set this option to 1 to run |:RustFmt| automatically when saving a + buffer. If not specified it defaults to 0 : > + let g:rustfmt_autosave = 0 +< + There is also a buffer-local b:rustfmt_autosave that can be set for + the same purpose, and can override the global setting. + + *g:rustfmt_autosave_if_config_present* +g:rustfmt_autosave_if_config_present~ + Set this option to 1 to have *b:rustfmt_autosave* be set automatically + if a `rustfmt.toml` file is present in any parent directly leading to + the file being edited. If not set, default to 0: > + let g:rustfmt_autosave_if_config_present = 0 +< + This is useful to have `rustfmt` only execute on save, on projects + that have `rustfmt.toml` configuration. + + There is also a buffer-local b:rustfmt_autosave_if_config_present + that can be set for the same purpose, which can overrides the global + setting. + *g:rustfmt_fail_silently* +g:rustfmt_fail_silently~ + Set this option to 1 to prevent 'rustfmt' from populating the + |location-list| with errors. If not specified it defaults to 0: > + let g:rustfmt_fail_silently = 0 +< + *g:rustfmt_options* +g:rustfmt_options~ + Set this option to a string of options to pass to 'rustfmt'. The + write-mode is already set to 'overwrite'. If not specified it + defaults to '' : > + let g:rustfmt_options = '' +< + *g:rustfmt_emit_files* +g:rustfmt_emit_files~ + If not specified rust.vim tries to detect the right parameter to + pass to rustfmt based on its reported version. Otherwise, it + determines whether to run rustfmt with '--emit=files' (when 1 is + provided) instead of '--write-mode=overwrite'. > + let g:rustfmt_emit_files = 0 + + + *g:rust_playpen_url* +g:rust_playpen_url~ + Set this option to override the url for the playpen to use: > + let g:rust_playpen_url = 'https://play.rust-lang.org/' +< + + *g:rust_shortener_url* +g:rust_shortener_url~ + Set this option to override the url for the url shortener: > + let g:rust_shortener_url = 'https://is.gd/' +< + + *g:rust_clip_command* +g:rust_clip_command~ + Set this option to the command used in your OS to copy the Rust Play + url to the clipboard: > + let g:rust_clip_command = 'xclip -selection clipboard' +< + + *g:cargo_makeprg_params* +g:cargo_makeprg_params~ + Set this option to the string of parameters to pass to cargo. If not + specified it defaults to '$*' : > + let g:cargo_makeprg_params = 'build' +< + + *g:cargo_shell_command_runner* +g:cargo_shell_command_runner~ + Set this option to change how to run shell commands for cargo commands + |:Cargo|, |:Cbuild|, |:Crun|, ... + By default, |:terminal| is used to run shell command in terminal window + asynchronously. But if you prefer |:!| for running the commands, it can + be specified: > + let g:cargo_shell_command_runner = '!' +< + + +Integration with Syntastic *rust-syntastic* +-------------------------- + +This plugin automatically integrates with the Syntastic checker. There are two +checkers provided: 'rustc', and 'cargo'. The latter invokes 'Cargo' in order to +build code, and the former delivers a single edited '.rs' file as a compilation +target directly to the Rust compiler, `rustc`. + +Because Cargo is almost exclusively being used for building Rust code these +days, 'cargo' is the default checker. > + + let g:syntastic_rust_checkers = ['cargo'] +< +If you would like to change it, you can set `g:syntastic_rust_checkers` to a +different value. + *g:rust_cargo_avoid_whole_workspace* + *b:rust_cargo_avoid_whole_workspace* +g:rust_cargo_avoid_whole_workspace~ + When editing a crate that is part of a Cargo workspace, and this + option is set to 1 (the default), then 'cargo' will be executed + directly in that crate directory instead of in the workspace + directory. Setting 0 prevents this behavior - however be aware that if + you are working in large workspace, Cargo commands may take more time, + plus the Syntastic error list may include all the crates in the + workspace. > + let g:rust_cargo_avoid_whole_workspace = 0 +< + *g:rust_cargo_check_all_targets* + *b:rust_cargo_check_all_targets* +g:rust_cargo_check_all_targets~ + When set to 1, the `--all-targets` option will be passed to cargo when + Syntastic executes it, allowing the linting of all targets under the + package. + The default is 0. + + *g:rust_cargo_check_all_features* + *b:rust_cargo_check_all_features* +g:rust_cargo_check_all_features~ + When set to 1, the `--all-features` option will be passed to cargo when + Syntastic executes it, allowing the linting of all features of the + package. + The default is 0. + + *g:rust_cargo_check_examples* + *b:rust_cargo_check_examples* +g:rust_cargo_check_examples~ + When set to 1, the `--examples` option will be passed to cargo when + Syntastic executes it, to prevent the exclusion of examples from + linting. The examples are normally under the `examples/` directory of + the crate. + The default is 0. + + *g:rust_cargo_check_tests* + *b:rust_cargo_check_tests* +g:rust_cargo_check_tests~ + When set to 1, the `--tests` option will be passed to cargo when + Syntastic executes it, to prevent the exclusion of tests from linting. + The tests are normally under the `tests/` directory of the crate. + The default is 0. + + *g:rust_cargo_check_benches* + *b:rust_cargo_check_benches* +g:rust_cargo_check_benches~ + When set to 1, the `--benches` option will be passed to cargo when + Syntastic executes it. The benches are normally under the `benches/` + directory of the crate. + The default is 0. + +Integration with auto-pairs *rust-auto-pairs* +--------------------------- + +This plugin automatically configures the auto-pairs plugin not to duplicate +single quotes, which are used more often for lifetime annotations than for +single character literals. + + *g:rust_keep_autopairs_default* +g:rust_keep_autopairs_default~ + + Don't override auto-pairs default for the Rust filetype. The default + is 0. + +============================================================================== +COMMANDS *rust-commands* + +Invoking Cargo +-------------- + +This plug defines very simple shortcuts for invoking Cargo from with Vim. + +:Cargo <args> *:Cargo* + Runs 'cargo' with the provided arguments. + +:Cbuild <args> *:Cbuild* + Shortcut for 'cargo build`. + +:Cclean <args> *:Cclean* + Shortcut for 'cargo clean`. + +:Cdoc <args> *:Cdoc* + Shortcut for 'cargo doc`. + +:Cinit <args> *:Cinit* + Shortcut for 'cargo init`. + +:Crun <args> *:Crun* + Shortcut for 'cargo run`. + +:Ctest <args> *:Ctest* + Shortcut for 'cargo test`. + +:Cupdate <args> *:Cupdate* + Shortcut for 'cargo update`. + +:Cbench <args> *:Cbench* + Shortcut for 'cargo bench`. + +:Csearch <args> *:Csearch* + Shortcut for 'cargo search`. + +:Cpublish <args> *:Cpublish* + Shortcut for 'cargo publish`. + +:Cinstall <args> *:Cinstall* + Shortcut for 'cargo install`. + +:Cruntarget <args> *:Cruntarget* + Shortcut for 'cargo run --bin' or 'cargo run --example', + depending on the currently open buffer. + +Formatting +---------- + +:RustFmt *:RustFmt* + Runs |g:rustfmt_command| on the current buffer. If + |g:rustfmt_options| is set then those will be passed to the + executable. + + If |g:rustfmt_fail_silently| is 0 (the default) then it + will populate the |location-list| with the errors from + |g:rustfmt_command|. If |g:rustfmt_fail_silently| is set to 1 + then it will not populate the |location-list|. + +:RustFmtRange *:RustFmtRange* + Runs |g:rustfmt_command| with selected range. See + |:RustFmt| for any other information. + + +Playpen integration +------------------- + +:RustPlay *:RustPlay* + This command will only work if you have web-api.vim installed + (available at https://github.com/mattn/webapi-vim). It sends the + current selection, or if nothing is selected, the entirety of the + current buffer to the Rust playpen, and emits a message with the + shortened URL to the playpen. + + |g:rust_playpen_url| is the base URL to the playpen, by default + "https://play.rust-lang.org/". + + |g:rust_shortener_url| is the base url for the shorterner, by + default "https://is.gd/" + + |g:rust_clip_command| is the command to run to copy the + playpen url to the clipboard of your system. + + +Evaluation of a single Rust file +-------------------------------- + +NOTE: These commands are useful only when working with standalone Rust files, +which is usually not the case for common Rust development. If you wish to +building Rust crates from with Vim can should use Vim's make, Syntastic, or +functionality from other plugins. + + +:RustRun [args] *:RustRun* +:RustRun! [rustc-args] [--] [args] + Compiles and runs the current file. If it has unsaved changes, + it will be saved first using |:update|. If the current file is + an unnamed buffer, it will be written to a temporary file + first. The compiled binary is always placed in a temporary + directory, but is run from the current directory. + + The arguments given to |:RustRun| will be passed to the + compiled binary. + + If ! is specified, the arguments are passed to rustc instead. + A "--" argument will separate the rustc arguments from the + arguments passed to the binary. + + If |g:rustc_path| is defined, it is used as the path to rustc. + Otherwise it is assumed rustc can be found in $PATH. + +:RustExpand [args] *:RustExpand* +:RustExpand! [TYPE] [args] + Expands the current file using --pretty and displays the + results in a new split. If the current file has unsaved + changes, it will be saved first using |:update|. If the + current file is an unnamed buffer, it will be written to a + temporary file first. + + The arguments given to |:RustExpand| will be passed to rustc. + This is largely intended for specifying various --cfg + configurations. + + If ! is specified, the first argument is the expansion type to + pass to rustc --pretty. Otherwise it will default to + "expanded". + + If |g:rustc_path| is defined, it is used as the path to rustc. + Otherwise it is assumed rustc can be found in $PATH. + +:RustEmitIr [args] *:RustEmitIr* + Compiles the current file to LLVM IR and displays the results + in a new split. If the current file has unsaved changes, it + will be saved first using |:update|. If the current file is an + unnamed buffer, it will be written to a temporary file first. + + The arguments given to |:RustEmitIr| will be passed to rustc. + + If |g:rustc_path| is defined, it is used as the path to rustc. + Otherwise it is assumed rustc can be found in $PATH. + +:RustEmitAsm [args] *:RustEmitAsm* + Compiles the current file to assembly and displays the results + in a new split. If the current file has unsaved changes, it + will be saved first using |:update|. If the current file is an + unnamed buffer, it will be written to a temporary file first. + + The arguments given to |:RustEmitAsm| will be passed to rustc. + + If |g:rustc_path| is defined, it is used as the path to rustc. + Otherwise it is assumed rustc can be found in $PATH. + + +Running test(s) +--------------- + +:[N]RustTest[!] [options] *:RustTest* + Runs a test under the cursor when the current buffer is in a + cargo project with "cargo test" command. If the command did + not find any test function under the cursor, it stops with an + error message. + + When N is given, adjust the size of the new window to N lines + or columns. + + When ! is given, runs all tests regardless of current cursor + position. + + When [options] is given, it is passed to "cargo" command + arguments. + + When the current buffer is outside cargo project, the command + runs "rustc --test" command instead of "cargo test" as + fallback. All tests are run regardless of adding ! since there + is no way to run specific test function with rustc. [options] + is passed to "rustc" command arguments in the case. + + Takes optional modifiers (see |<mods>|): > + :tab RustTest + :belowright 16RustTest + :leftabove vert 80RustTest +< +rust.vim Debugging +------------------ + +:RustInfo *:RustInfo* + Emits debugging info of the Vim Rust plugin. + +:RustInfoToClipboard *:RustInfoClipboard* + Saves debugging info of the Vim Rust plugin to the default + register. + +:RustInfoToFile [filename] *:RustInfoToFile* + Saves debugging info of the Vim Rust plugin to the the given + file, overwritting it. + +============================================================================== +MAPPINGS *rust-mappings* + +This plugin defines mappings for |[[| and |]]| to support hanging indents. + +============================================================================== + vim:tw=78:sw=4:noet:ts=8:ft=help:norl: + +endif diff --git a/doc/scala.txt b/doc/scala.txt new file mode 100644 index 00000000..b9fe2cf7 --- /dev/null +++ b/doc/scala.txt @@ -0,0 +1,137 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'scala') == -1 + +*scala.txt* Syntax highlighting and helper functions for the Scala language. + +This plugin is only available if 'compatible' is not set. +{Vi does not have any of this} + +============================================================================== +INTRODUCTION *scala* + +Syntax highlighting and helper functions for the scala language. Extras +include: + + - Sorting of import statements, configurable to your conventions. + - Tagbar support to navigate definitions within a file in the plugin's + sidebar window. + - ...and probably more that we've forgotten to update in this doc. + +============================================================================== +OPTIONS *scala-options* + +Use these options to control behavior of the plugin. Default values are +indicated in the examples. + + *'g:scala_use_builtin_tagbar_defs'* +If you are using the Tagbar Vim plugin, vim-scala includes a Tagbar type +definition and ctags definition for Scala, so you can use Tagbar immediately. +If you have your own ctags definition in `~/.ctags` and prefer to use it, set +this option to 0 (we would appreciate contributions if you've improved the +ctags definition!). + +Note that Tagbar's ctags definition for Scala is not used to generate a +|tags| file that Vim can use to navigate to definitions in other files, only +for the plugin sidebar. Feel free to copy `vim-scala/ctags/scala.ctags` into +your own `~/.ctags` if you wish to generate |tags| files. +> + let g:scala_use_builtin_tagbar_defs = 1 +< + *'g:scala_use_default_keymappings'* +Set this option to disable definition of all mappings provided by vim-scala. +See |scala-mappings|. +> + let g:scala_use_default_keymappings = 1 +< + + *'g:scala_scaladoc_indent'* +By default, the plugin indents documentation comments according to the +standard Javadoc format. + /** + * This is a doc comment using Javadoc-style indentation. + */ +Set this option to enable the indentation standard as recommended for Scaladoc +comments. + /** This is a Scaladoc comment using + * the recommended indentation. + */ +> + let g:scala_scaladoc_indent = 1 +< + +============================================================================== +COMMANDS *scala-commands* + + *:SortScalaImports* +:SortScalaImports There are two modes in which this command can operate. + By default it walks all import groups at the top of + the Scala file and orders their lines alphabetically. + A group is a series of lines starting with the + import keyword separated by one or more blank lines. + + The second, more advanced mode, can be activated by + setting + + let g:scala_sort_across_groups=1 + + This makes this command include all imports in the + sorting regardless of blank lines in between them and + puts them in three predefined groups instead. + The three groups in which the imports can fall are: + + 1. Scala and Java core + 2. Third party libraries + 3. First party code (ie. your own) + + Java and Scala core imports are identified by the + java(x) and scala namespaces. + Everything else that isn't a first party namespace + will be a third party import. + You can define a regex that matches first party + namespaces by setting + + g:scala_first_party_namespaces + + For example in a standard Play app this would be + set to + g:scala_first_party_namespaces= + \ '\(controllers\|views\|models\)' + +============================================================================== +MAPPINGS *scala-mappings* + +Currently the only mappings defined are for FuzzyFinder users--these will +only be enabled if FuzzyFinder is detected. + + *scala-leader-fs* +<Leader>fs "Find src". Primes |:FufFile| with `src/main/scala`, + and goes deeper still if only a single directory + exists below that. Helpful for package namespacing + like `src/main/scala/com/myorg`. + + *scala-leader-ft* +<Leader>ft "Find test". Like |scala-leader-fs|, but with + `src/test/scala`. + + *scala-leader-fr* +<Leader>fr "Find from root". For the rarer cases when you want to + start FuzzyFinder at project root (parent of `src/`). + +Disabling Mappings~ + +If you wish to disable the default key mappings, write the following line in +your ~/.vimrc: > + + let g:scala_use_default_keymappings = 0 + +============================================================================== +CREDITS *scala-credits* + +Developed by Derek Wyatt, building on initial work by Stefan Matthias Aust. +Distributed under the Apache 2 license. + +Project's home and Git repository: https://github.com/derekwyatt/vim-scala + +------------------------------------------------------------------------------ + vim:tw=78:ts=8:ft=help:norl: + +endif diff --git a/doc/terraform.txt b/doc/terraform.txt new file mode 100644 index 00000000..b609f584 --- /dev/null +++ b/doc/terraform.txt @@ -0,0 +1,18 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'terraform') == -1 + +*terraform.txt* basic vim/terraform integration + +Author: HashiVim <https://github.com/hashivim> +License: ISC license +Repo: https://github.com/hashivim/vim-terraform + +COMMANDS *terraform* + +This command is only available if terraform is in your PATH. + + *terraform-:terraform* +:Terraform [args] Invoke an arbitrary terraform command. + + vim:tw=78:et:ft=help:norl: + +endif diff --git a/doc/textile.txt b/doc/textile.txt new file mode 100644 index 00000000..2b28186a --- /dev/null +++ b/doc/textile.txt @@ -0,0 +1,70 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'textile') == -1 + +*textile.txt* Textile for Vim Last Change: November 3, 2008 + +============================================================================== +REQUIREMENTS *textile-requirements* + +- ruby - http://ruby-lang.org/ (seperate executable, not compiled in) +- RedCloth - http://redcloth.org/ + +Files with the extension *.textile will auto-detected. If editing a new file, +or otherwise, run ":setf textile" to enable textile commands. + + +============================================================================== +CHANGELOG *textile-changelog* + +0.3 - Fixed keymappings in the documentation +0.2 - Added multiple colors for headers, and alternating colors for list + items + - Fixed error in the vim script for TextileRenderBufferToFile + - Changed shortcut keys from \tp to \rp (render preview instead of + textile preview, since it's file-type specific anyways) +0.1 - Initial Release + +============================================================================== +COMMANDS *textile-commands* + +:TextilePreview - Render the current buffer to a temp file, and open it in + your web browser (OSX only) + + <Leader>rp + +:TextileRenderTab - ... to a new tab + + <Leader>rt + +:TextileRenderFile - ... to a file + + <Leader>rf + +<Leader> is \ by default, so <Leader>rp == \rp + +============================================================================== +CONFIG *textile-config* + +MAC OS X: + + Optional: + let g:TextileBrowser="Google Chrome" - Open preview in "Google Chrome" + rather than Safari (optional) + +Other: + + Mandatory: + let g:TextileOS="Linux" + let g:TextileBrowser="/path/to/browser_bin" + + +============================================================================== +CREDITS *textile-credits* + +- "Dominic Mitchell":http://happygiraffe.net/: initial syntax highlighting +- "Aaron Bieber":http://blog.aaronbieber.com/: improved syntax highlighting +- "Tim Harper":http://tim.theenchanter.com/ : improved syntax highlighting, + plugin + +vim:tw=78:noet:wrap:ts=2:expandtab:ft=help:norl: + +endif diff --git a/doc/vim-fsharp.txt b/doc/vim-fsharp.txt new file mode 100644 index 00000000..bc2a4657 --- /dev/null +++ b/doc/vim-fsharp.txt @@ -0,0 +1,210 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'fsharp') == -1 + +*vim-fsharp.txt* F# support for Vim +*FSharp* *F#* *fsharp* *vim-fsharp* +=============================================================================== +# # +# ███████╗███████╗██╗ ██╗ █████╗ ██████╗ ██████╗ # +# ██╔════╝██╔════╝██║ ██║██╔══██╗██╔══██╗██╔══██╗ # +# █████╗ ███████╗███████║███████║██████╔╝██████╔╝ # +# ██╔══╝ ╚════██║██╔══██║██╔══██║██╔══██╗██╔═══╝ # +# ██║ ███████║██║ ██║██║ ██║██║ ██║██║ # +# ╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ # +# # +=============================================================================== +CONTENTS *fsharp-contents* + + 1. Dependencies.................................|fsharp-dependencies| + 2. Usage........................................|fsharp-usage| + 3. Options......................................|fsharp-options| + 4. Commands.....................................|fsharp-commands| + 5. Mappings.....................................|fsharp-mappings| + 6. Credits......................................|fsharp-credits| + +=============================================================================== +DEPENDENCIES *fsharp-dependencies* + +Required:~ + - Vim 7.3 or higher with Python 2 or 3 support + - Mono OR .NET Framework + - F# + +Optional:~ + - Syntastic plugin (for syntax and type checking) + NOTE: Must be enabled (see |'g:syntastic_fsharp_checkers'|) + +=============================================================================== +USAGE *fsharp-usage* + +Syntax highlighting and linting will trigger upon opening a `*.fs`, `*.fsi`, +or `*.fsx` file. Using omni completion will begin the fsautocomplete process. + +Suggestion: Install a completer such as NeoComplete or SuperTab + +=============================================================================== +OPTIONS *fsharp-options* + + *'g:syntastic_fsharp_checkers'* +Use this option to enable syntastic integration > + let g:syntastic_fsharp_checkers=['syntax'] +< + *'g:fsharp_only_check_errors_on_write'* +Use this option to disable "on the fly" syntax checking > + let g:fsharp_only_check_errors_on_write = 1 +< + *'g:fsharpbinding_debug'* +Use this option to enable debug-mode and inspect fsautocomplete behavior: > + let g:fsharpbinding_debug = 1 +< +This will create two log files `log.txt` and `log2.txt` in your temporary folder +(i.e. `/tmp/`) + + *'g:fsharp_xbuild_path'* +Use this option set the msbuild/xbuild path > + let g:fsharp_xbuild_path = "/path/to/xbuild/or/msbuild" +< + + *'g:fsharp_test_runner'* +Use this option to point to a suitable test runner (such as nunit-console.exe) > + let g:fsharp_test_runner = "/path/to/test/runner" +< + + *'g:fsharp_completion_helptext'* +Use this option to disable helptext during auto completion. Turn off if +completion is too slow > + let g:fsharp_completion_helptext = 0 +< + + *'g:fsharp_map_keys'* +Use this option to disable default bindings > + let g:fsharp_map_keys = 0 +< + + *'g:fsharp_map_prefix'* +Use this option to override the default prefix of `<leader>` > + let g:fsharp_map_prefix = 'cp' +< +Set to `cp` in this example + + *'g:fsharp_map_fsisendline'* +Use this option to override the default mapping to send the current line to +fsharp interactive > + let g:fsharp_map_fsisendline = 'p' +< +Set to `p` in this example + + *'g:fsharp_map_fsisendsel'* +Use this option to override the default mapping to send the current selection +to fsharp interactive > + let g:fsharp_map_fsisendsel = 'p' +< +Set to `p` in this example + + *'g:fsharp_map_gotodecl'* +Use this option to override the default mapping to go to declaration in the +current window > + let g:fsharp_map_gotodecl = 'g' +< +Set to `g` in this example + + *'g:fsharp_map_gobackfromdecl'* +Use this option to override the default mapping to go back to where go to +declaration was triggered > + let g:fsharp_map_gobackfromdecl = 'b' +< +Set to `b` in this example + + *'g:fsharp_map_fsiinput'* +Override the default mapping to evaluate an fsharp expression in the fsi > + let g:fsharp_map_fsiinput = 'i' +< + +=============================================================================== +COMMANDS *fsharp-commands* + +General commands:~ + *:make* +:make + Calls xbuild on the fsproj for the current file (if any). + + *:FSharpParseProject* +:FSharpParseProject + Reparses all the project files and dependencies (this is done automatically + when opening a .fs or .fsi file). + + *:FSharpBuildProject* +:FSharpBuildProject + Calls xbuild on the fsproj for the current file (if any). Can also take a + path to the proj file to build. + + *:FSharpRunProject* +:FSharpRunProject + Runs the project for the current file (if any). + + *:FSharpRunTests* +:FSharpRunTests + If `g:fsharp_test_runner` is set it will build the current project and run + any tests. (Currently only tested with nunit-console.exe) + + *:FSharpToggleHelptext* +:FSharpToggleHelptext + toggles g:fsharp_completion_helptext. (See below for details) + +FSharp interaction commands:~ + + `:FsiEval` +:FsiEval + Evaluates an fsharp expression in the fsi + + `:FsiEvalBuffer` +:FsiEvalBuffer + Evaluates the entire buffer in the fsi + + `:FsiReset` +:FsiReset + Resets the current fsharp interactive + + `:FsiRead` +:FsiRead + Outputs any lines written by the fsi but not yet output as vim messages + + `:FsiClear` +:FsiClear + Deletes all text from the fsi output buffer but doesn't reset the fsi + session. + + `:FsiShow` +:FsiShow + Opens the _fsi-out_ buffer in a split window + +=============================================================================== +MAPPINGS *fsharp-mappings* + +General:~ + + <leader>t + Echoes the type of the expression currently pointed to by the cursor + <leader>d + Go to declaration in current window + <leader>s + Takes you back from where go to declaration was triggered. Experimental + +FSharp Interactive:~ + <A-CR> OR + <leader>i + Send either the current selection or the current line to the fsharp + interactive and echoes the output the first line of the output. All + output will be written to the fsi-out buffer. + +=============================================================================== +CREDITS *fsharp-credits* + +Syntax and indent files by kongo2002 <github.com/kongo2002>: + http://github.com/kongo2002/fsharp-vim + +Adapted from Tim Robinson <github.com/timrobinson>: + http://github.com/timrobinson/fsharp-vim +> +=============================================================================== + +endif diff --git a/doc/vim-go.txt b/doc/vim-go.txt new file mode 100644 index 00000000..480b4848 --- /dev/null +++ b/doc/vim-go.txt @@ -0,0 +1,2706 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'go') == -1 + +*vim-go.txt* Go development plugin +*vim-go* + +============================================================================== +# # +# ## ## #### ## ## ###### ####### # +# ## ## ## ### ### ## ## ## ## # +# ## ## ## #### #### ## ## ## # +# ## ## ## ## ### ## ####### ## #### ## ## # +# ## ## ## ## ## ## ## ## ## # +# ## ## ## ## ## ## ## ## ## # +# ### #### ## ## ###### ####### # +# # +============================================================================== +CONTENTS *go-contents* + + 1. Intro........................................|go-intro| + 2. Install......................................|go-install| + 3. Commands.....................................|go-commands| + 4. Mappings.....................................|go-mappings| + 5. Text Objects.................................|go-text-objects| + 6. Functions....................................|go-functions| + 7. Settings.....................................|go-settings| + 8. Syntax highlighting..........................|go-syntax| + 9. Debugger.....................................|go-debug| + 10. FAQ/Troubleshooting..........................|go-troubleshooting| + 11. Development..................................|go-development| + 12. Donation.....................................|go-donation| + 13. Credits......................................|go-credits| + +============================================================================== +INTRO *go-intro* + +Go (golang) support for Vim. vim-go comes with sensible predefined settings +(e.g. automatic `gofmt` on save), has code completion, snippet support, +improved syntax highlighting, go toolchain commands, etc. It is highly +customizable, and individual features can be toggled easily. vim-go leverages +a number of tools developed by the Go community to provide a seamless Vim +experience. + + * Compile your package with |:GoBuild|, install it with |:GoInstall| or + test it with |:GoTest|. Run a single test with |:GoTestFunc|). + * Quickly execute your current file(s) with |:GoRun|. + * Improved syntax highlighting and folding. + * Debug programs with integrated `delve` support with |:GoDebugStart|. + * Code completion support via `gocode` and `gopls`. + * `gofmt` or `goimports` on save keeps the cursor position and undo history. + * Go to symbol/declaration with |:GoDef|. + * Look up documentation with |:GoDoc| or |:GoDocBrowser|. + * Easily import packages via |:GoImport|, remove them via |:GoDrop|. + * Precise type-safe renaming of identifiers with |:GoRename|. + * See which code is covered by tests with |:GoCoverage|. + * Add or remove tags on struct fields with |:GoAddTags| and |:GoRemoveTags|. + * Call `golangci-lint` with |:GoMetaLinter| to invoke all possible linters + (`golint`, `vet`, `errcheck`, `deadcode`, etc.) and put the result in the + quickfix or location list. + * Lint your code with |:GoLint|, run your code through |:GoVet| to catch + static errors, or make sure errors are checked with |:GoErrCheck|. + * Advanced source analysis tools utilizing `guru`, such as |:GoImplements|, + |:GoCallees|, and |:GoReferrers|. + * Automatic `GOPATH` detection which works with `gb` and `godep`. Change or + display `GOPATH` with |:GoPath|. + * Integrated and improved snippets, supporting `ultisnips`, `neosnippet`, + and `vim-minisnip`. + * Share your current code to play.golang.org with |:GoPlay|. + * On-the-fly information about the word under the cursor. Plug it into your + custom Vim function. + * Text objects such as "a function" (|go-af|) or "inner function" (|go-if|). + * Most commands are run asynchronous in Neovim and Vim 8. Fully async + building and testing. + * Integrated with the Neovim terminal, launch |:GoRun| and other Go commands + in a terminal buffer. + * Switch between `file.go` and `file_test.go` code with |:GoAlternate|. + * Supports integration with the Tagbar and ctrlp.vim plugins. + * ...and more... + +============================================================================== +INSTALL *go-install* + +vim-go requires at least Vim 8.0.1453 or Neovim 0.4.0. On macOS, if you are +still using your system version of vim, you can use homebrew to keep your +version of Vim up-to-date with the following terminal command: +> + brew install vim + +The latest stable release, https://github.com/fatih/vim-go/releases/latest, is +the recommended version to use. If you choose to use the master branch +instead, please do so with caution; it is a _development_ branch. + +vim-go follows the standard runtime path structure and should work with any of +the major plugin managers. + +For Pathogen or Vim |packages|, just clone the repo. For other plugin managers +you may also need to add the lines to your vimrc to execute the plugin +manager's install command. + +* Vim 8 |packages| > + + git clone https://github.com/fatih/vim-go.git \ + ~/.vim/pack/plugins/start/vim-go +< +* https://github.com/tpope/vim-pathogen > + + git clone https://github.com/fatih/vim-go.git ~/.vim/bundle/vim-go +< +* https://github.com/junegunn/vim-plug > + + Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' } +< +* https://github.com/Shougo/neobundle.vim > + + NeoBundle 'fatih/vim-go' +< +* https://github.com/gmarik/vundle > + + Plugin 'fatih/vim-go' +< +* Manual (not recommended) > + + Copy all of the files into your `~/.vim` directory +< + +You will also need to install all the necessary binaries. vim-go makes it easy +to install all of them by providing a command, |:GoInstallBinaries|, to +`go get` all the required binaries. The binaries will be installed to $GOBIN +or $GOPATH/bin (default: $HOME/go/bin). It requires `git`. + +Depending on your installation method, you may have to generate the plugin's +|:helptags| manually (e.g. `:helptags ALL`). + +Code completion is enabled by default via 'omnifunc', which you can trigger +with |i_CTRL-X_CTRL-O| (`<C-x><C-o>`). + +Supported Go plugins~ *vim-go-plugins* + +The following plugins are supported for use with vim-go: + +* Real-time completion (Vim): + https://github.com/Shougo/neocomplete.vim + +* Real-time completion (Neovim and Vim 8): + https://github.com/Shougo/deoplete.nvim + + Add the following line to your vimrc. This instructs deoplete to use omni + completion for Go files. + + call deoplete#custom#option('omni_patterns', { 'go': '[^. *\t]\.\w*' }) + +* Display source code navigation in a sidebar: + https://github.com/majutsushi/tagbar + +* Snippets: + https://github.com/Shougo/neosnippet.vim or + https://github.com/SirVer/ultisnips or + https://github.com/joereynolds/vim-minisnip + +* Interactive |:GoDecls| and |:GoDeclsDir|: + https://github.com/ctrlpvim/ctrlp.vim or + https://github.com/junegunn/fzf.vim or + https://github.com/Shougo/unite.vim or + https://github.com/Shougo/denite.nvim + +============================================================================== +COMMANDS *go-commands* + + *:GoReportGitHubIssue* +:GoReportGitHubIssue + GoReportGitHubIssue opens the default browser and starts a new bug report + with useful system information. + + *:GoPath* +:GoPath [path] + + GoPath sets and overrides GOPATH with the given {path}. If no {path} is + given it shows the current GOPATH. If `""` is given as path, it clears + current `GOPATH` which was set with |:GoPath| and restores `GOPATH` back + to the initial value which was sourced when Vim was started. + + *:GoImport* +:GoImport[!] [path] + + Import ensures that the provided package {path} is imported in the current + Go buffer, using proper style and ordering. If {path} is already being + imported, an error will be displayed and the buffer will be untouched. + + If [!] is given it will download the package with `go get` + + *:GoImportAs* +:GoImportAs [localname] [path] + + Same as Import, but uses a custom local name for the package. + + *:GoDrop* +:GoDrop [path] + + Remove the import line for the provided package {path}, if present in the + current Go buffer. If {path} is not being imported, an error will be + displayed and the buffer will be untouched. + + *:GoLint* +:GoLint! [packages] + + Run golint for the directory under your current file, or for the given + packages. + + If [!] is not given the first error is jumped to. + + *:GoDoc* +:GoDoc [word] + + Open the relevant GoDoc in split window for either the word[s] passed to + the command or by default, the word under the cursor. + + *:GoDocBrowser* +:GoDocBrowser [word] + + Open the relevant GoDoc in browser for either the word[s] passed to the + command or by default, the word under the cursor. By default it opens the + documentation in 'https://pkg.go.dev'. To change it see |'g:go_doc_url'|. + + *:GoFmt* +:GoFmt + + Filter the current Go buffer through gofmt. It tries to preserve cursor + position and avoids replacing the buffer with stderr output. + + *:GoImports* +:GoImports + + Filter the current Go buffer through goimports (needs to be installed). + `goimports` automatically discards/add import path based on the code. Like + |:GoFmt|, It tries to preserve cursor position and avoids replacing the + buffer with stderr output. + + *:GoPlay* +:[range]GoPlay + + Share snippet to play.golang.org. If no [range] is given it shares + the whole file, otherwise the selected lines are shared. Snippet URL + is copied to system clipboard if Vim is compiled with 'clipboard' or + 'xterm-clipboard' otherwise it's get yanked into the `""` register. + + *:GoVet* +:GoVet[!] [options] + + Run `go vet` for the directory under your current file. Vet examines Go + source code and reports suspicious constructs, such as Printf calls whose + arguments do not align with the format string. Vet uses heuristics that do + not guarantee all reports are genuine problems, but it can find errors not + caught by the compilers. + + You may optionally pass any valid go vet flags/options. + + If [!] is not given the first error is jumped to. + + *:GoDef* +:GoDef +gd +CTRL-] +g<C-LeftMouse> +<C-LeftMouse> + + Go to declaration/definition for the identifier under the cursor. By + default the CTRL-] shortcut, the mapping `gd` and <C-LeftMouse>, + g<LeftMouse> are enabled to invoke :GoDef for the identifier under the + cursor. See |'g:go_def_mapping_enabled'| to disable them. No explicit + arguments are supported. + + vim-go also keeps a per-window location stack, roughly analogous to how + Vim's internal |tags| functionality works. This is pushed to every time a + jump is made using the GoDef functionality. In essence, this is a LIFO + list of file locations you have visited with :GoDef that is retained to + help you navigate software. + + The per-window location stack is shared with |:GoDefType|. + + *:GoDefType* +:GoDefType + + Go to type definition for the identifier under the cursor. + + The per-window location stack is shared with |:GoDef|. + *:GoDefStack* +:GoDefStack [number] + + This command Jumps to a given location in the jumpstack, retaining all + other entries. Jumps to non-existent entries will print an informative + message, but are otherwise a noop. + + If no argument is given, it will print out an interactive list of all + items in the stack. Its output looks like this: + + 1 /path/first/file.go|1187 col 16|AddThing func(t *Thing) + > 2 /path/thing/thing.go|624 col 19|String() string + 3 /path/thing/thing.go|744 col 6|func Sprintln(a ...interface{}) string + + This list shows the identifiers that you jumped to and the file and cursor + position before that jump. The older jumps are at the top, the newer at + the bottom. + + The '>' points to the active entry. This entry and any newer entries + below it will be replaced if |:GoDef| is done from this location. The + CTRL-t and |:GoDefPop| command will jump to the position above the active + entry. + + Jumps to non-existent entries will print an informative message, but are + otherwise a noop. + + *:GoDefStackClear* +:GoDefStackClear + + Clears the current stack list and resets it. + + *:GoDefPop* +:GoDefPop [count] +CTRL-t + + Navigate to the [count] earlier entry in the jump stack, retaining the + newer entries. If no argument is given, it will jump to the next most + recent entry (`:GoDefPop 1`). If [count] is greater than the number of + prior entries, an error will be printed and no jump will be performed. + + If you have used :GoDefPop to jump to an earlier location, and you issue + another :GoDef command, the current entry will be replaced, and all newer + entries will be removed, effectively resuming the stack at that location. + + By default [count]CTRL-t is enabled to invoke :GoDefPop. Similarly, + hitting CTRL-t without a prior count is equivalent to `:GoDefPop 1`. See + |'g:go_def_mapping_enabled'| to disable this. + + *:GoRun* +:GoRun[!] [expand] + + Build and run your current main package. By default all main files for the + current file is used. If an argument is passed, [expand] is used as file + selector. For example use `:GoRun %` to select the current file only. + + You may optionally pass any valid go run flags/options. For a full list + please see `go help run`. + + If [!] is not given the first error is jumped to. + + If using neovim then `:GoRun` will run in a new terminal according to + |'g:go_term_mode'|. + + The working directory will be the directory containing the current buffer. + + + *:GoBuild* +:GoBuild[!] [expand] + + Build your package with `go build`. Errors are populated in the quickfix + window. It automatically builds only the files that depends on the current + file. `:GoBuild` doesn't produce a result file. + Use |:make| to create a result file. + + You may optionally pass any valid go build flags/options. For a full list + please see `go help build`. Options are expanded with [expand]. + + If [!] is not given the first error is jumped to. + + If using neovim then this command is fully async, it does not block the + UI. + + *:GoGenerate* +:GoGenerate[!] [expand] + + Creates or updates your auto-generated source files by running `go + generate`. + + You may optionally pass any valid go generate flags/options. For a full + list please see `go help generate`. Options are expanded with [expand]. + + If [!] is not given the first error is jumped to. + + *:GoInfo* +:GoInfo + Show type information about the identifier under the cursor. For example + putting it above a function call is going to show the full function + signature. By default it uses `gopls` to get the type informations. To + change the underlying tool from `gopls` to another tool, see + |'g:go_info_mode'|. + + + *:GoInstall* +:GoInstall[!] [options] + + Install your package with `go install`. + + You may optionally pass any valid go install flags/options. For a full + list please see `go help install`. + + If [!] is not given the first error is jumped to. + + *:GoTest* +:GoTest[!] [expand] + + Run the tests on your _test.go files via in your current directory. Errors + are populated in the quickfix window. If an argument is passed, [expand] + is used as file selector (useful for cases like `:GoTest ./...`). + + You may optionally pass any valid go test flags/options. For a full list + please see `go help test`. + + GoTest times out automatically after 10 seconds. To customize the timeout + use |'g:go_test_timeout'|. This feature is disabled if any arguments are + passed to the `:GoTest` command. + + If [!] is not given the first error is jumped to. + + If using neovim `:GoTest` will run in a new terminal or run asynchronously + in the background according to |'g:go_term_enabled'|. You can set the mode + of the new terminal with |'g:go_term_mode'|. + + *:GoTestFunc* +:GoTestFunc[!] [expand] + + Runs :GoTest, but only on the single test function immediate to your + cursor using 'go test's '-run' flag. + + Lookup is done starting at the cursor (including that line) moving up till + a matching `func Test` pattern is found or top of file is reached. Search + will not wrap around when at the top of the file. + + If [!] is not given the first error is jumped to. + + If using neovim `:GoTestFunc` will run in a new terminal or run + asynchronously in the background according to |'g:go_term_enabled'|. You + can set the mode of the new terminal with |'g:go_term_mode'|. + + *:GoTestCompile* +:GoTestCompile[!] [expand] + + Compile your _test.go files via in your current directory. Errors are + populated in the quickfix window. If an argument is passed, [expand] is + used as file selector (useful for cases like `:GoTest ./...`). Useful to + not run the tests and capture/fix errors before running the tests or to + create test binary. + + If [!] is not given the first error is jumped to. + + If using neovim `:GoTestCompile` will run in a new terminal or run + asynchronously in the background according to |'g:go_term_enabled'|. You + can set the mode of the new terminal with |'g:go_term_mode'|. + + *:GoCoverage* +:GoCoverage[!] [options] + + Create a coverage profile and annotates the current file's source code. If + called again it rerurns the tests. + + If [!] is not given the first error is jumped to. + + *:GoCoverageToggle* +:GoCoverageToggle[!] [options] + + Create a coverage profile and annotates the current file's source code. If + called again clears the annotation (works as a toggle). + + If [!] is not given the first error is jumped to. + + *:GoCoverageClear* +:GoCoverageClear [options] + + Clears the coverage annotation. + + + *:GoCoverageBrowser* +:GoCoverageBrowser[!] [options] + + Create a coverage profile and open a browser to display the annotated + source code of the current package. + + You may optionally pass any valid go test flags/options, such as + `-covermode set,count,atomic`. For a full list please see `go help test`. + + If [!] is not given the first error is jumped to. + + *:GoErrCheck* +:GoErrCheck! [options] + + Check for unchecked errors in you current package. Errors are populated in + the quickfix window. + + You may optionally pass any valid errcheck flags/options. See + `errcheck -h` for a full list. + + If [!] is not given the first error is jumped to. + + *:GoFiles* +:GoFiles [source_files] + + Show source files for the current package. The [source_files] specifies + which file types to list. See the "// Source files" section of + `go list -h` for possible values; multiple values are accepted. + Command-line completion also works for this command. + The default is to use `GoFiles` if no arguments are given. + + *:GoDeps* +:GoDeps + + Show dependencies for the current package. + + *:GoInstallBinaries* +:GoInstallBinaries [binaries] + + Download and install all necessary Go tool binaries such as `godef`, + `goimports`, `gopls`, etc. under |'g:go_bin_path'|. If [binaries] is + supplied, then only the specified binaries will be installed. The default + is to install everything. + + Set |'g:go_get_update'| to disable updating dependencies. + + *:GoUpdateBinaries* +:GoUpdateBinaries [binaries] + + Download and update previously installed Go tool binaries such as `godef`, + `goimports`, `gopls`, etc. under |'g:go_bin_path'|. If [binaries] is + supplied, then only the specified binaries will be updated. The default is + to update everything. + + Set |'g:go_get_update'| to disable updating dependencies. + + *:GoImplements* +:GoImplements + + Show "implements" relation for a selected package. A list of interfaces + for the type that implements an interface under the cursor (or selected + package) is shown in a location list. + *:GoRename* +:GoRename[!] [to] + + Rename the identifier under the cursor to the desired new name. If no + argument is given a prompt will ask for the desired identifier. + + If [!] is not given the first error is jumped to. + + + *:GoGuruScope* +:GoGuruScope [pattern] ... + + Changes the custom |'g:go_guru_scope'| setting and overrides it with the + given package patterns. The custom scope is cleared (unset) if `""` is + given as the only path. If no arguments is given it prints the current + custom scope. Example patterns are: +> + golang.org/x/tools/cmd/guru # a single package + golang.org/x/tools/... # all packages beneath dir + ... # the entire workspace. +< + Example usage, the following sets the scope to a `github.com/fatih/color` + and to all packages under `golang.org/x/tools/`: +> + :GoGuruScope github.com/fatih/color golang.org/x/tools/... +< + The following sets it to the entire workspace: +> + :GoGuruScope ... +< + Under the hood, the patterns are all joined to a comma-separated list and + passed to `guru`'s `-scope` flag. + + Also see |go-guru-scope|. + + *:GoCallees* +:GoCallees + + Show "callees" relation for a selected package. A list of possible call + targets for the type under the cursor (or selected package) is shown in a + location list. + + *:GoCallers* +:GoCallers + + Show "callers" relation for a selected function. A list of possible + callers for the selected function under the cursor is shown in a location + list. + + *:GoDescribe* +:GoDescribe + + Shows various properties of the selected syntax: its syntactic kind, its + type (for an expression), its value (for a constant expression), its size, + alignment, method set and interfaces (for a type), its declaration (for an + identifier), etc. Almost any piece of syntax may be described, and the + guru will try to print all the useful information it can. + + *:GoCallstack* +:GoCallstack + + Shows "callstack" relation for the selected function. An arbitrary path + from the root of the callgraph to the selected function is shown in a + location list. This may be useful to understand how the function is + reached in a given program. + + *:GoFreevars* +:GoFreevars + + Enumerates the free variables of the selection. "Free variables" is a + technical term meaning the set of variables that are referenced but not + defined within the selection, or loosely speaking, its inputs. + + This information is useful when considering whether to refactor the + selection into a function of its own, as the free variables would be the + necessary parameters of that function. It's also useful when you want to + understand what the inputs are to a complex block of code even if you + don’t plan to change it. + + *:GoChannelPeers* +:GoChannelPeers + + Shows the set of possible sends/receives on the channel operand of the + selected send or receive operation; the selection must be a `<-` token. + + For example, visually select a channel operand in the form of: +> + done <- true +< + And call |:GoChannelPeers| on it. It will show where it was allocated, and + the sending and receiving endings. + + *:GoReferrers* +:GoReferrers + + The referrers query shows the set of identifiers that refer to the same + object as does the selected identifier. + + *:GoSameIds* +:GoSameIds + + Highlights all identifiers that are equivalent to the identifier under the + cursor. + + *:GoSameIdsClear* +:GoSameIdsClear + + Clears all SameIds highlights from a |:GoSameIds| call. + + *:GoSameIdsToggle* +:GoSameIdsToggle + + Toggle between |:GoSameIds| and |:GoSameIdsClear|. + + *:GoSameIdsAutoToggle* +:GoSameIdsAutoToggle + + Enables or disables automatic highlighting of |:GoSameIds| while moving + the cursor. This basically toggles the option |'g:go_auto_sameids'| + on/off. + If enabled it starts highlighting whenever your cursor is staying at the + same position for a configurable period of time (see |'g:go_updatetime'|). + If disabled it clears and stops automatic highlighting. + + *:GoMetaLinter* +:GoMetaLinter! [path] + + Calls the underlying `golangci-lint` tool and displays all warnings and + errors in the |quickfix| window. By default the following linters are + enabled: `vet`, `golint`, and `errcheck`. This can be changed with the + |'g:go_metalinter_enabled'| variable. To override the command completely + use the variable |'g:go_metalinter_command'|. To override the maximum + linters execution time use |'g:go_metalinter_deadline'| variable. + + If [!] is not given the first error is jumped to. + + *:GoDiagnostics* +:GoDiagnostics! [packages] + + Displays the diagnostics from `gopls` for the given packages in a + |quickfix| window. The diagnostics for the current package are displayed + when no package is given. The diagnostics for all packages will be + displayed when `all` is as an argument. + + Disabled when |'g:go_diagnostics_enabled'| is not set. + + If [!] is not given the first error is jumped to. + + *:GoBuildTags* +:GoBuildTags [tags] + + Changes the build tags for various commands. If you have any file that + uses a custom build tag, such as `// +build integration` , this command + can be used to pass it to all tools that accepts tags, such as gopls, + guru, gorename, etc. + + The build tags is cleared (unset) if `""` is given. If no arguments are + given it prints the current build tags. + + *:AsmFmt* +:AsmFmt + + Filter the current Go asm buffer through asmfmt. It tries to preserve + cursor position and avoids replacing the buffer with stderr output. + + *:GoAlternate* +:GoAlternate[!] + + Alternates between the implementation and test code. For example if in + main.go, switch to main_test.go. Uses the |'g:go_alternate_mode'| setting + as the command to open the file. + + If [!] is given then it switches to the new file even if it does not + exist. + + If you would like to override the traditional commands for alternating, + add the following to your .vimrc: +> + augroup go + autocmd! + autocmd Filetype go + \ command! -bang A call go#alternate#Switch(<bang>0, 'edit') + \| command! -bang AV call go#alternate#Switch(<bang>0, 'vsplit') + \| command! -bang AS call go#alternate#Switch(<bang>0, 'split') + augroup END +< + + *:GoPointsTo* +:GoPointsTo + + Show all variables to which the pointer under the cursor may point to. + + *:GoWhicherrs* +:GoWhicherrs + + Show the list of possible constants, global variables, and concrete types + for the error type under the cursor in a location list. + + *:GoDecls* +:GoDecls [file] + + Show all function and type declarations for the current file. If + [file] is non empty it parses the given file. + Requires `ctrlp.vim` or `fzf`; it will autodetect the plugin if installed, + but you can use |'g:go_decls_mode'| to force using one or the other. + By default `type` and `func` declarations are shown. This can be changed + via |'g:go_decls_includes'|. Also see |unite-decls|, |denite-decls|. + + *:GoDeclsDir* +:GoDeclsDir [dir] + + Show all function and type declarations for the current directory. If + [dir] is given it parses the given directory. + + *unite-decls* + *denite-decls* +:Unite decls[:path] +:Denite decls[:path] + + Only enabled if `unite.vim` or `denite.nvim` is installed. Show + declarations for all functions and types on the current file or directory + or for [path] if given. + + Note: `denite.nvim` requires NeoVim or Vim 8 with |:python3| enabled. +> + " show declarations on the parent directory of the current file + :Unite decls + :Denite decls + + " show declarations in the file. + :Unite decls:foo/bar.go + :Denite decls:foo/bar.go + + " show declarations in the directory "foo". + :Unite decls:foo + :Denite decls:foo +< + *:GoImpl* +:GoImpl [receiver] [interface] + + Generates method stubs for implementing an interface. If no arguments is + passed it takes the identifier under the cursor to be the receiver and + asks for the interface type to be generated. If used with arguments, the + receiver and the interface needs to be specified. Example usages: +> + :GoImpl f *Foo io.Writer + :GoImpl t Type io.ReadWriteCloser +< + *:GoAddTags* +:[range]GoAddTags [key],[option] [key1],[option] ... + + Adds field tags for the fields of a struct. If called inside a struct it + automatically add field tags with the `json` key and the value + automatically generated based on the field name. An error message is given + if it's called outside a struct definition or if the file is not correctly + formatted. + + If [range] is given, only the selected fields will be changed. + + The default `json` can be changed by providing one or more [key] + arguments. An example of adding `xml` and `db` would be: +> + :GoAddTags xml db +< + If [option] is passed it'll either add a new tag with an option or will + modify existing tags. An example of adding `omitempty` to all `json` + fields would be: +> + :GoAddTags json,omitempty +< + You can define a constant value instead of the default field based value. + For example the following command will add ``valid:"1"`` to all fields. +> + :GoAddTags valid=1 +< + *:GoRemoveTags* +:[range]GoRemoveTags [key],[option] [key1],[option1] ... + + Remove field tags for the fields of a struct. If called inside a struct it + automatically remove all field tags. An error message is given if it's + called outside a struct definition or if the file is not correctly + formatted + + If [range] is given, only the selected fields will be changed. + + If [key] is given, it will only remove those keys. Example: +> + :GoRemoveTags json +< + If [option] is passed with a [key], it will only remove the options. + Example, this will only remove `omitempty` options from fields containing + `json`: +> + :GoRemoveTags json,omitempty +< + *:GoAutoTypeInfoToggle* +:GoAutoTypeInfoToggle + + Toggles |'g:go_auto_type_info'|. + + *:GoFmtAutoSaveToggle* +:GoFmtAutoSaveToggle + + Toggles |'g:go_fmt_autosave'|. + + *:GoModFmtAutoSaveToggle* +:GoModFmtAutoSaveToggle + + Toggles |'g:go_mod_fmt_autosave'|. + + *:GoAsmFmtAutoSaveToggle* +:GoAsmFmtAutoSaveToggle + + Toggles |'g:go_asmfmt_autosave'|. + + *:GoMetaLinterAutoSaveToggle* +:GoMetaLinterAutoSaveToggle + + Toggles |'g:go_metalinter_autosave'|. + + By default, `golangci-lint` messages will be shown in the |location-list| + window. The list to use can be set using |'g:go_list_type_commands'|. + + *:GoTemplateAutoCreateToggle* +:GoTemplateAutoCreateToggle + + Toggles |'g:go_template_autocreate'|. + + *:GoKeyify* +:GoKeyify + + Uses `keyify` to turn unkeyed struct literals into keyed ones. + + For example: +> + Person{"John", "Smith"} +< + Becomes: +> + Person{ + Name: "John", + Surname: "Smith", + } +< + *:GoFillStruct* +:GoFillStruct + + Use `fillstruct` to fill a struct literal with default values. Existing + values (if any) are preserved. The cursor must be on the struct you wish + to fill. + + For example: +> + addr := net.Address{Name: "Ford Prefect"} +< + Becomes: +> + addr := net.Address{ + Name: "Ford Prefect", + Email: "", + } +< + + *:GoIfErr* +:GoIfErr + + Generate if err != nil { return ... } automatically which infer the type + of return values and the numbers. + + For example: +> + func doSomething() (string, error) { + f, err := os.Open("file") + } +< + Becomes: +> + func doSomething() (string, error) { + f, err := os.Open("file") + if err != nil { + return "", err + } + } +< + *:GoModFmt* +:GoModFmt + + Filter the current go.mod buffer through "go mod edit -fmt" command. It + tries to preserve cursor position and avoids replacing the buffer with + stderr output. + + *:GoAddWorkspace* +:GoAddWorkspace [dir] ... + + Add directories to the `gopls` workspace. + + *:GoLSPDebugBrowser* +:GoLSPDebugBrowser + + Open a browser to see gopls debugging information. + +============================================================================== +MAPPINGS *go-mappings* + +vim-go has several <Plug> keys which can be used to create custom mappings +For example, to create a mapping that calls `go run` for the current package, +create a mapping for the `(go-run)`: > + + au FileType go nmap <leader>r <Plug>(go-run) + +As always one is free to create more advanced mappings or functions based with +|go-commands|. For more information please check out the mappings command +documentation in the |go-commands| section. Available <Plug> keys are: + + *(go-run)* + +Calls `go run` for the current main package + + *(go-run-tab)* + +Calls `go run` for the current file in a new terminal tab +This option is neovim only. + + *(go-run-split)* + +Calls `go run` for the current file in a new terminal horizontal split +This option is neovim only. + + *(go-run-vertical)* + +Calls `go run` for the current file in a new terminal vertical split +This option is neovim only. + + *(go-build)* + +Calls `go build` for the current package + + *(go-generate)* + +Calls `go generate` for the current package + + *(go-info)* + +Shows type information for the word under the cursor + + *(go-install)* + +Calls `go install` for the current package + + *(go-test)* + +Calls `go test` for the current package + + *(go-test-func)* + +Calls `go test -run '...'` for the test function immediate to cursor + + *(go-test-compile)* + +Calls `go test -c` for the current package + + *(go-coverage)* + +Calls `go test -coverprofile-temp.out` for the current package and shows the +coverage annotation. + + *(go-coverage-clear)* + +Clears the coverage annotation + + *(go-coverage-toggle)* + +Calls `go test -coverprofile-temp.out` for the current package and shows the +coverage annotation. If run again it acts as a toggle and clears the +annotation. + + *(go-imports)* + +Calls `goimports` for the current package + + *(go-lint)* + +Calls `golint` for the current package + + *(go-vet)* + +Calls `go vet` for the current package + + + *(go-files)* + +Show source files that depends for the current package + + + *(go-deps)* + +Show dependencies for the current package + + *(go-doc)* + +Show the relevant GoDoc for the word under the cursor in a split window +leftabove (default mode). + + *(go-doc-split)* + +Show the relevant GoDoc for the word under the cursor in a split window. + + + *(go-doc-vertical)* + +Show the relevant GoDoc for the word under the cursor in a vertical split +window. + + *(go-doc-tab)* + +Show the relevant GoDoc for the word under the cursor in a tab window. + + + *(go-doc-browser)* + +Show the relevant GoDoc for the word under in browser + + *(go-def)* + +Goto declaration/definition. Results are shown in the current window. + + *(go-def-split)* + +Goto declaration/definition. Results are shown in a split window. +Jumps to an existing buffer if |'g:go_def_reuse_buffer'| is enabled. + + *(go-def-vertical)* + +Goto declaration/definition. Results are shown in a vertical split window. +Jumps to an existing buffer if |'g:go_def_reuse_buffer'| is enabled. + + *(go-def-tab)* + +Goto declaration/definition. Results are shown in a tab window. +Jumps to an existing buffer if |'g:go_def_reuse_buffer'| is enabled. + + *(go-def-type)* + +Goto type declaration/definition. Results are shown in the current window. +Jumps to an existing buffer if |'g:go_def_reuse_buffer'| is enabled. + + *(go-def-type-vertical)* +Goto type declaration/definition. Results are shown in a vertical split +window. +Jumps to an existing buffer if |'g:go_def_reuse_buffer'| is enabled. + + *(go-def-type-split)* +Goto type declaration/definition. Results are shown in a split window. +Jumps to an existing buffer if |'g:go_def_reuse_buffer'| is enabled. + + *(go-def-type-tab)* +Goto type declaration/definition. Results are shown in a tab window. +Jumps to an existing buffer if |'g:go_def_reuse_buffer'| is enabled. + + *(go-def-stack)* + +Shows the godef tag stack + + *(go-def-stack-clear)* + +Resets and clears the tag stack + + *(go-def-pop)* + +Jump to previous entry in the tag stack + + *(go-implements)* + +Show the interfaces that the type under the cursor implements. + + *(go-rename)* + +Rename the identifier under the cursor to the desired new name + + *(go-callees)* + +Show the call targets for the type under the cursor + + *(go-callers)* + +Show possible callers of selected function + + *(go-describe)* + +Describe selected syntax: definition, methods, etc + + *(go-callstack)* + +Show path from callgraph root to selected function + + *(go-freevars)* + +Show free variables of selection + + *(go-channelpeers)* + +Show send/receive corresponding to selected channel op + + *(go-referrers)* + +Show all refs to entity denoted by selected identifier + + *(go-pointsto)* + +Show all variables to which the pointer under the cursor may point to. + + *(go-metalinter)* + +Calls `go-metalinter` for the current directory + + *(go-alternate-edit)* + +Alternates between the implementation and test code in the current window + + *(go-alternate-split)* + +Alternates between the implementation and test code in a new horizontal split + + *(go-alternate-vertical)* + +Alternates between the implementation and test code in a new vertical split + + *(go-import)* + +Calls `:GoImport` for the current package + + *(go-iferr)* + +Generate if err != nil { return ... } automatically which infer the type of +return values and the numbers. + + *(go-mod-fmt)* + +Calls |:GoModFmt| for the current buffer + + *(go-diagnostics)* +Calls `:GoDiagnostics` + +============================================================================== +TEXT OBJECTS *go-text-objects* + +vim-go comes with several custom |text-objects| that can be used to operate +upon regions of text. vim-go currently defines the following text objects: + + *go-v_af* *go-af* +af "a function", select contents from a function definition to the + closing bracket. If |'g:go_textobj_include_function_doc'| is + enabled it also includes the comment doc for a function + declaration. This text-object also supports literal functions. + If |'g:go_textobj_include_variable'| is enabled it also + includes the variable of an function assignment + + *go-v_if* *go-if* +if "inside a function", select contents of a function, + excluding the function definition and the closing bracket. This + text-object also supports literal functions + + *go-v_ac* *go-ac* +ac "a comment", select contents of the current comment block. + + *go-v_ic* *go-ic* +ic "inner comment", select contents of the current comment block, + excluding the start and end comment markers. + +vim-go also defines the following text motion objects: + + *go-v_]]* *go-]]* +]] [count] forward to next function declaration. If + |'g:go_textobj_include_function_doc'| is enabled and if your + on a comment, it skips the function which the comment + belongs and forwards to the next function declaration. + + *go-v_[[* *go-[[* +[[ [count] backward to previous function declaration. + + + +============================================================================== +FUNCTIONS *go-functions* + + *go#statusline#Show()* + +Shows the status of a job running asynchronously. Can be used to plug into the +statusline. It works to show the status per package instead of per file. +Assume you have three files open, all belonging to the same package, if the +package build (`:GoBuild`) is successful, all statuslines will show `success`, +if it fails all windows' statuslines will show `failed`. + +To avoid always showing old status information, the status information is +cleaned for each package after `60` seconds. This can be changed with the +|'g:go_statusline_duration'| setting. + + *go#complete#GetInfo()* + +Returns the description of the identifer under the cursor. Can be used to plug +into the statusline. + + *go#complete#Complete()* + +Uses `gopls` for autocompletion. By default, it is hooked up to 'omnifunc'. + + *go#tool#DescribeBalloon()* + +Suitable to be used as an expression to show the evaluation balloon. See `help +balloonexpr`. + +============================================================================== +SETTINGS *go-settings* + + *'g:go_version_warning'* + +Enable warning when using an unsupported version of Vim. By default it is +enabled. +> + let g:go_version_warning = 1 +< + + *'g:go_code_completion_enabled'* + +Enable code completion with 'omnifunc'. By default it is enabled. +> + let g:go_code_completion_enabled = 1 +< + + *'g:go_code_completion_icase'* + +Override the icase field in 'omnifunc' results. By default it is set to 0. +See 'complete-items' for details. +> + let g:go_code_completion_icase = 0 +< + + *'g:go_test_show_name'* + +Show the name of each failed test before the errors and logs output by the +test. By default it is disabled. +> + let g:go_test_show_name = 0 +< + + *'g:go_test_timeout'* + +Use this option to change the test timeout of |:GoTest|. By default it is +set to 10 seconds . > + + let g:go_test_timeout= '10s' +< + *'g:go_play_browser_command'* + +Browser to use for |:GoPlay|, |:GoDocBrowser|, and |:GoLSPDebugBrowser|. The +url must be added with `%URL%`, and it's advisable to include `&` to make sure +the shell returns. For example: +> + let g:go_play_browser_command = 'firefox-developer %URL% &' +< + +By default it tries to find it automatically for the current OS. > + + let g:go_play_browser_command = '' +< + *'g:go_play_open_browser'* + +Use this option to open browser after posting the snippet to play.golang.org +with |:GoPlay|. By default it's enabled. > + + let g:go_play_open_browser = 1 +< + *'g:go_auto_type_info'* + +Use this option to show the type info (|:GoInfo|) for the word under the +cursor automatically. Whenever the cursor changes the type info will be +updated. By default it's disabled. The delay can be configured with the +|'g:go_updatetime'| setting. +> + let g:go_auto_type_info = 0 +< + + *'g:go_info_mode'* + +Use this option to define the command to be used for |:GoInfo|. By default +`gopls` is used, because it is the fastest and is known to be highly accurate. +One might also use `guru` for its accuracy. +Valid options are `gopls` and `guru`. +> + let g:go_info_mode = 'gopls' +< + *'g:go_auto_sameids'* + +Use this option to highlight all uses of the identifier under the cursor +(|:GoSameIds|) automatically. By default it's disabled. The delay can be +configured with the |'g:go_updatetime'| setting. +> + let g:go_auto_sameids = 0 +< + *'g:go_updatetime'* + +Use this option to configure the delay until it starts some jobs (see +|'g:go_auto_type_info'|, |'g:go_auto_sameids'|). If set to 0, it uses the +value from 'updatetime'. By default it's set to 800ms. +> + let g:go_updatetime = 800 +< + *'g:go_jump_to_error'* + +Use this option to enable/disable passing the bang attribute to the mappings +(e.g. |(go-build)|, |(go-run)|, etc.) and the metalinter on save. When +enabled it will jump to the first error automatically (means it will NOT pass +the bang attribute to the appropriate command, i.e: (go-run) -> :GoRun ). +Note, that calling this doesn't have any affect on calling the commands +manually. This setting is only useful for changing the behaviour of our custom +static mappings. By default it's enabled. +> + let g:go_jump_to_error = 1 +< + *'g:go_fmt_autosave'* + +Use this option to auto |:GoFmt| on save. When both 'g:go_imports_autosave' +and 'g:go_fmt_autosave' are enabled and both 'g:go_fmt_command' and +'g:go_imports_mode' are set to `goimports`, `goimports` will be run only once. +By default it's enabled > + + let g:go_fmt_autosave = 1 +< + *'g:go_fmt_command'* + +Use this option to define which tool is used to format code. Valid options are +`gofmt`, `goimports`, and `gopls`. By default `gofmt` is used. +> + + let g:go_fmt_command = "gofmt" +< + *'g:go_fmt_options'* + +Use this option to add additional options to the |'g:go_fmt_command'|. It's +value type can be either a string or a dictionary. This is due backwards +compatibility. The string version will be removed in the future so please use +the dictionary version. Default is empty. +> + let g:go_fmt_options = '' + + or + + let g:go_fmt_options = {} +< +The dictionary version allows you to define options for multiple binaries: +> + let g:go_fmt_options = { + \ 'gofmt': '-s', + \ 'goimports': '-local mycompany.com', + \ } +< + *'b:go_fmt_options'* + +This option is identical to |'g:go_fmt_options'|, but a buffer-level setting. +If present, it's used instead of the global setting. By default it is not set. + +As an example, the following autocmd will configure goimports to put imports +of packages from the current module in their own group: +> + autocmd FileType go let b:go_fmt_options = { + \ 'goimports': '-local ' . + \ trim(system('{cd '. shellescape(expand('%:h')) .' && go list -m;}')), + \ } +< + *'g:go_fmt_fail_silently'* + +Use this option to disable showing a location list when |'g:go_fmt_command'| +fails. By default the location list is shown. > + + let g:go_fmt_fail_silently = 0 +< + *'g:go_fmt_experimental'* + +Use this option to enable fmt's experimental mode. This experimental mode is +superior to the current mode as it fully saves the undo history, so undo/redo +doesn't break. However, it's slow (creates/deletes a file for every save) and +it's causing problems on some Vim versions. This has no effect if +`g:go_fmt_command` is set to `gopls`. By default it's disabled. +> + + let g:go_fmt_experimental = 0 + +< + + *'g:go_imports_autosave'* + +Use this option to auto |:GoImports| on save. When both +'g:go_imports_autosave' and 'g:go_fmt_autosave' are enabled and both +'g:go_fmt_command' and 'g:go_imports_mode' are set to `goimports`, `goimports` +will be run only once. By default it's disabled. +> + let g:go_imports_autosave = 0 +< + *'g:go_imports_mode'* + +Use this option to define which tool is used to adjust imports. Valid options +are `goimports` and `gopls`. The buffer will not be formatted when this is set +to `gopls`. By default `goimports` is used. +> + + let g:go_imports_mode = "goimports" +< + *'g:go_mod_fmt_autosave'* + +Use this option to auto |:GoModFmt| on save. By default it's enabled > + + let g:go_mod_fmt_autosave = 1 +< + + *'g:go_doc_keywordprg_enabled'* + +Use this option to run `godoc` on words under the cursor with |K|; this will +normally run the `man` program, but for Go using `godoc` is more idiomatic. It +will not override the 'keywordprg' setting, but will run |:GoDoc|. Default +is enabled. > + + let g:go_doc_keywordprg_enabled = 1 +< + *'g:go_doc_height'* + +Maximum height for the GoDoc window created with |:GoDoc|. Default is 20. > + + let g:go_doc_max_height = 20 +< + + *'g:go_doc_url'* + +godoc server URL used when |:GoDocBrowser| is used. Change if you want to use +a private internal service. Default is 'https://pkg.go.dev'. +> + let g:go_doc_url = 'https://pkg.go.dev' +< + + *'g:go_doc_popup_window'* + +Use this option to use the popup-window for |K| and |:GoDoc|, rather than the +|preview-window|. Default is disabled. +> + let g:go_doc_popup_window = 0 +< + + *'g:go_def_mode'* + +Use this option to define the command to be used for |:GoDef|. By default +`gopls` is used, because it is the fastest. One might also use `guru` for its +accuracy or `godef` for its performance. Valid options are `godef`, `gopls`, +and `guru`. +> + let g:go_def_mode = 'gopls' +< + *'g:go_referrers_mode'* + +Use this option to define the command to be used for |:GoReferrers|. By +default `gopls` is used, because it is the fastest and works with Go modules. +One might also use `guru` for its ability to show references from other +packages. This option will be removed after `gopls` can show references from +other packages. Valid options are `gopls` and `guru`. By default it's `gopls`. +> + let g:go_referrers_mode = 'gopls' +< + *'g:go_implements_mode'* + +Use this option to define the command to be used for |:GoImplements|. +The Implements feature in gopls is still new and being worked upon. +Valid options are `gopls` and `guru`. By default it's `guru`. +> + let g:go_implements_mode = 'guru' +< + *'g:go_def_mapping_enabled'* + +Use this option to enable/disable the default mapping of CTRL-], +<C-LeftMouse>, g<C-LeftMouse> and (`gd`) for GoDef and CTRL-t for :GoDefPop. +Disabling it allows you to map something else to these keys or mappings. +Default is enabled. > + + let g:go_def_mapping_enabled = 1 +< + *'g:go_def_reuse_buffer'* + +Use this option to jump to an existing buffer for the split, vsplit and tab +mappings of |:GoDef|. By default it's disabled. > + + let g:go_def_reuse_buffer = 0 +< + *'g:go_bin_path'* + +Use this option to change default path for vim-go tools when using +|:GoInstallBinaries| and |:GoUpdateBinaries|. If not set `$GOBIN` or +`$GOPATH/bin` is used. > + + let g:go_bin_path = "" +< + *'g:go_search_bin_path_first'* + +This option lets |'g:go_bin_path'| (or its default value) take precedence over +$PATH when invoking a tool command such as |:GoFmt| or |:GoImports|. + +Enabling this option ensures that the binaries installed via +|:GoInstallBinaries| and |:GoUpdateBinaries| are the same ones that are +invoked via the tool commands. + +By default it is enabled. > + + let g:go_search_bin_path_first = 1 +< + *'g:go_snippet_engine'* + +Define the snippet engine to use. The default is to auto-detect one. Valid +values are: + + automatic Automatically detect a snippet engine. + ultisnips https://github.com/SirVer/ultisnips + neosnippet https://github.com/Shougo/neosnippet.vim + minisnip https://github.com/joereynolds/vim-minisnip + Note: the original at KeyboardFire/vim-minisnip won't work. +> + let g:go_snippet_engine = "automatic" +< + *'g:go_get_update'* + +Use this option to disable updating dependencies with |:GoInstallBinaries|. By +default this is enabled. +> + let g:go_get_update = 1 +< + *'g:go_guru_scope'* + +Use this option to define the scope of the analysis to be passed for guru +related commands, such as |:GoImplements|, |:GoCallers|, etc. You can change +it on-the-fly with |:GoGuruScope|. The input should be a a list of package +pattern. An example input might be: +`["github.com/fatih/color","github.com/fatih/structs"]` + +Also see |go-guru-scope|. + +By default it's not set, so the relevant commands' defaults are being used. +> + let g:go_guru_scope = [] +< + *'g:go_build_tags'* + +Space-separated list of build tags passed to the `-tags` flag of tools that +support it. +There is also the |:GoBuildTags| convenience command to change or remove build +tags. +> + let g:go_build_tags = '' +< + *'g:go_autodetect_gopath'* + +Automatically modify GOPATH for certain directory structures, such as for +the `godep` tool which stores dependencies in the `Godeps` folder. What this +means is that all tools are now working with the newly modified GOPATH. So +|:GoDef| for example jumps to the source inside the `Godeps` (vendored) +source. Currently `godep` and `gb` are supported. By default it's disabled. +> + let g:go_autodetect_gopath = 0 +< + *'g:go_textobj_enabled'* + +Adds custom text objects. By default it's enabled. > + + let g:go_textobj_enabled = 1 +< + *'g:go_textobj_include_function_doc'* + +Consider the comment above a function to be part of the function when using +the `af` text object and `[[` motion. By default it's enabled. > + + let g:go_textobj_include_function_doc = 1 +< + *'g:go_textobj_include_variable'* + +Consider the variable of an function assignment to be part of the anonymous +function when using the `af` text object. By default it's enabled. > + + let g:go_textobj_include_variable = 1 +< + *'g:go_metalinter_autosave'* + +Use this option to auto |:GoMetaLinter| on save. Only linter messages for +the active buffer will be shown. + +By default, `golangci-lint` messages will be shown in the |location-list| +window. The list to use can be set using |'g:go_list_type_commands'|. + + By default it's disabled > + let g:go_metalinter_autosave = 0 +< + *'g:go_metalinter_autosave_enabled'* + +Specifies the enabled linters for auto |:GoMetaLinter| on save. By +default it's using `vet` and `golint`. If any are enabled, `--disable-all` +will be sent to the metalinter. +> + let g:go_metalinter_autosave_enabled = ['vet', 'golint'] +< + *'g:go_metalinter_enabled'* + +Specifies the linters to enable for the |:GoMetaLinter| command. By default +it's using `vet`, `golint` and `errcheck`. If any are enabled, `--disable-all` +will be sent to the metalinter. +> + let g:go_metalinter_enabled = ['vet', 'golint', 'errcheck'] +< + *'g:go_metalinter_command'* + +Overrides the command to be executed when |:GoMetaLinter| is called. By +default it's `golangci-lint`. Valid options are `golangci-lint` and `gopls`. +When the value is `gopls`, users may want to consider setting +`g:go_gopls_staticcheck`. It can also be used as an advanced setting for +users who want to have more control over the metalinter. +> + let g:go_metalinter_command = "golangci-lint" +< + *'g:go_metalinter_deadline'* + +Overrides the maximum time the linters have to complete. By default it's 5 +seconds. +> + let g:go_metalinter_deadline = "5s" +< + *'g:go_list_height'* + +Specifies the window height for the quickfix and location list windows. The +default value (empty) automatically sets the height to the number of items +(maximum up to 10 items to prevent large heights). Setting the value +explicitly overrides this behavior. For standard Vim behavior, set it to 10. +> + let g:go_list_height = 0 +< + *'g:go_list_type'* + +Specifies the type of list to use for command outputs (such as errors from +builds, results from static analysis commands, etc...). The list type for +specific commands can be overridden with |'g:go_list_type_commands'|. The +default value (empty) will use the appropriate kind of list for the command +that was called. Supported values are "", "quickfix", and "locationlist". +> + let g:go_list_type = "" +< + + *'g:go_list_type_commands'* + +Specifies the type of list to use for command outputs (such as errors from +builds, results from static analysis commands, etc...). When an expected key +is not present in the dictionary, |'g:go_list_type'| will be used instead. +Supported keys are "GoBuild", "GoErrCheck", "GoFmt", "GoModFmt", "GoInstall", +"GoLint", "GoMetaLinter", "GoMetaLinterAutoSave", "GoModifyTags" (used for +both :GoAddTags and :GoRemoveTags), "GoRename", "GoRun", and "GoTest". +Supported values for each command are "quickfix" and "locationlist". +> + let g:go_list_type_commands = {} +< +As an example, the following settings will change all list types to +`locationlist` except for `:GoBuild` where `quickfix` is used: +> + let g:go_list_type = "locationlist" + let g:go_list_type_commands = {"GoBuild": "quickfix"} +< + + *'g:go_list_autoclose'* + +Specifies whether the quickfix/location list should be closed automatically +in the absence of errors. The default value is 1. +If you prefer to keep a long running error window open, you can disable +this by setting the value to 0. +> + let g:go_list_autoclose = 1 +< + *'g:go_asmfmt_autosave'* + +Use this option to auto |:AsmFmt| on save. By default it's disabled. > + + let g:go_asmfmt_autosave = 0 +< + *'g:go_term_mode'* + +The default command used to open a new terminal for go commands such as +|:GoRun|. The default is `:vsplit`. + +Applicable to Neovim and Vim with `terminal` feature only. +> + let g:go_term_mode = "vsplit" +< + *'g:go_term_height'* + *'g:go_term_width'* + +Controls the height and width of a terminal split, respectively. By default +these are not set, meaning that the height and width are set automatically by +the editor. The height only applies to a horizontal split and width only +applies to a vertical split. + +Applicable to Neovim and Vim with `terminal` feature only. + +For example here is how to set each to 30. +> + let g:go_term_height = 30 + let g:go_term_width = 30 +< + *'g:go_term_enabled'* + +Causes some types of jobs to run inside a new terminal according to +|'g:go_term_mode'|. By default it is disabled. + +Applicable to Neovim and Vim with `terminal` feature only. +> + let g:go_term_enabled = 0 +< + *'g:go_term_close_on_exit'* + +Closes the terminal after the command run in it exits when the command fails. +By default it is enabled. + +Applicable to Neovim and Vim with `terminal` feature only. + +> + let g:go_term_close_on_exit = 1 +< + *'g:go_alternate_mode'* + +Specifies the command that |:GoAlternate| uses to open the alternate file. By +default it is set to edit. +> + let g:go_alternate_mode = "edit" +< + *'g:go_rename_command'* + +Use this option to define which tool is used to rename. By default `gopls` +is used. Valid options are `gorename` and `gopls`. +> + let g:go_rename_command = 'gopls' +< + *'g:go_gorename_prefill'* + +Expression to prefill the new identifier when using |:GoRename| without any +arguments. Use an empty string if you don't want to prefill anything. By +default it converts the identifier to camel case but preserves the +capitalisation of the first letter to ensure that the exported state stays the +same. +> + let g:go_gorename_prefill = 'expand("<cword>") =~# "^[A-Z]"' . + \ '? go#util#pascalcase(expand("<cword>"))' . + \ ': go#util#camelcase(expand("<cword>"))' +< + + *'g:go_gopls_enabled'* + +Specifies whether `gopls` can be used by vim-go. By default gopls is enabled. +When gopls is disabled completion will not work and other configuration +options may also need to be adjusted. + +> + let g:go_gopls_enabled = 1 +< + + *'g:go_gopls_options'* + +The commandline arguments to pass to gopls. By default, it's `-remote=auto`. +> + let g:go_gopls_options = [] +< + + *'g:go_gopls_analyses'* + +The analyses settings for `gopls`. By default, it's `v:null`. Valid map values +are `v:true` and `v:false`. +> + let g:go_gopls_analyses = v:null +< + + *'g:go_gopls_complete_unimported'* + +Specifies whether `gopls` should include suggestions from unimported packages. +When it is `v:null`, `gopls`' default will be used. By default it is +`v:null`. +> + let g:go_gopls_complete_unimported = v:null +< + + *'g:go_gopls_deep_completion'* + +Specifies whether `gopls` should use deep completion. When it is `v:null`, +`gopls`' default will be used. By default it is `v:null`. + +> + let g:go_gopls_deep_completion = v:null +< + + *'g:go_gopls_matcher'* + +Specifies how `gopls` should match for completions. Valid values are `v:null`, +`fuzzy`, and `caseSensitive`. When it is `v:null`, `gopls`' default will be +used. By default it is `v:null`. +> + let g:go_gopls_matcher = v:null +< + + *'g:go_gopls_staticcheck'* + +Specifies whether `gopls` should run staticcheck checks. When it is `v:null`, +`gopls`' default will be used. By default it is `v:null`. +> + let g:go_gopls_staticcheck = v:null +< + + *'g:go_gopls_use_placeholders'* + +Specifies whether `gopls` can provide placeholders for function parameters and +struct fields. When set, completion items will be treated as anonymous +snippets if UltiSnips is installed and configured to be used as +|'g:go_snippet_engine'|. When it is `v:null`, `gopls`' default will be used. +By default it is `v:null`. +> + let g:go_gopls_use_placeholders = v:null +< + + *'g:go_gopls_temp_modfile'* + +Specifies whether `gopls` should use a temp modfile and suggest edits rather +than modifying the ambient go.mod file. When it is `v:null`, `gopls`' default +will be used. By default it is `v:null`. +> + let g:go_gopls_temp_modfile = v:null +< + + *'g:go_gopls_local'* + +Specifies the prefix for imports that `gopls` should consider group +separately. When it is `v:null`, `gopls`' default will be used. By default it +is `v:null`. +> + let g:go_gopls_local = v:null +< + + *'g:go_diagnostics_enabled'* + +Specifies whether `gopls` diagnostics are enabled. Only the diagnostics for +the current buffer will be processed when it is not set; all others will be +ignored. By default it is disabled. +> + let g:go_diagnostics_enabled = 0 +< + + *'g:go_template_autocreate'* + +When a new Go file is created, vim-go automatically fills the buffer content +with a Go code template. By default, the templates under the `templates` +folder are used. This can be changed with the |'g:go_template_file'| and +|'g:go_template_test_file'| settings to either use a different file in the +same `templates` folder, or to use a file stored elsewhere. + +If the new file is created in an already prepopulated package (with other Go +files), in this case a Go code template with only the Go package declaration +(which is automatically determined according to the current package) is added. + +To always use the package name instead of the template, enable the +|'g:go_template_use_pkg'| setting. + +By default it is enabled. +> + let g:go_template_autocreate = 1 +< + *'g:go_template_file'* + +Specifies either the file under the `templates` folder that is used if a new +Go file is created. Checkout |'g:go_template_autocreate'| for more info. By +default the `hello_world.go` file is used. + +This variable can be set to an absolute path, so the template files don't have +to be stored inside the vim-go directory structure. Useful when you want to +use different templates for different projects. +> + let g:go_template_file = "hello_world.go" +< + *'g:go_template_test_file'* + +Like with |'g:go_template_file'|, this specifies the file to use for test +tempaltes. The template file should be under the `templates` folder, +alternatively absolute paths can be used, too. Checkout +|'g:go_template_autocreate'| for more info. By default, the +`hello_world_test.go` file is used. +> + let g:go_template_test_file = "hello_world_test.go" +< + *'g:go_template_use_pkg'* + +Specifies that, rather than using a template, the package name is used if a +new Go file is created. Checkout |'g:go_template_autocreate'| for more info. +By default the template file specified by |'g:go_template_file'| is used. + +> + let g:go_template_use_pkg = 0 +< + *'g:go_decls_includes'* + +Only useful if `ctrlp.vim`, `unite.vim`, `denite.nvim` or `fzf` are installed. +This sets which declarations to show for |:GoDecls| (`ctrp.vim`), +|unite-decls| (`unite.vim`) and |denite-decls| (`denite.nvim`). It is a Comma +delimited list. Possible options are: {func,type}. The default is: > + + let g:go_decls_includes = 'func,type' +< + *'g:go_decls_mode'* + +Define the tool to be used for |:GoDecls|. Valid options are `ctrlp.vim`, +`fzf`, or an empty string; in which case it will try to autodetect either +`ctrlp.vim` or `fzf`. +> + let g:go_decls_mode = '' +< + *'g:go_echo_command_info'* + +Echoes information about various Go commands, such as `:GoBuild`, `:GoTest`, +`:GoCoverage`, etc... Useful to disable if you use the statusline integration, +i.e: |go#statusline#Show()|. By default it's enabled +> + let g:go_echo_command_info = 1 +< + *'g:go_echo_go_info'* + +Use this option to show the identifier information when code completion is +done. By default it's enabled. > + + let g:go_echo_go_info = 1 +< +Please note that 'noshowmode' must be set for this feature to work correctly. + + *'g:go_statusline_duration'* + +Specifies the duration of statusline information being showed per package. By +default it's 60 seconds. Must be in milliseconds. +> + let g:go_statusline_duration = 60000 +< + *'g:go_addtags_transform'* + +Sets the `transform` option for `gomodifytags` when using |:GoAddTags| or if +it's being used for snippet expansion of single fields. Possible options are: +`snakecase`, `camelcase`, `lispcase`, `pascalcase`, `keep`. For the following +case, if `snakecase` is used the field will be transformed to: +> + type T struct { + FooBarQuz string `json:"foo_bar_quz"` + } +< + +If "camelcase" is used: +> + type T struct { + FooBarQuz string `json:"fooBarQuz"` + } +< +By default "snakecase" is used. Current values are: ["snakecase", +"camelcase", "lispcase", "pascalcase", "keep"]. +> + let g:go_addtags_transform = 'snakecase' +< + *'g:go_addtags_skip_unexported'* + +Sets the `skip-unexported` option for `gomodifytags` when using |:GoAddTags|. +If set it will prevent `gomodifytags` from adding tags to unexported fields: +> + type T struct { + FooBar string `json:"foo_bar"` + quz string + } +< +By default it is disabled. +> + let g:go_addtags_skip_unexported = 0 +< + *'g:go_debug'* + +A list of options to debug; useful for development and/or reporting bugs. + +Currently accepted values: + + shell-commands Echo all shell commands that vim-go runs. + debugger-state Expose debugger state in 'g:go_debug_diag'. + debugger-commands Echo communication between vim-go and `dlv`; requests and + responses are recorded in `g:go_debug_commands`. + lsp Echo communication between vim-go and `gopls`. All + communication is shown in a dedicated window. When + enabled before gopls is started, |:GoLSPDebugBrowser| can + be used to open a browser window to help debug gopls. +> + let g:go_debug = [] +< + +============================================================================== +SYNTAX HIGHLIGHTING *ft-go-syntax* *go-syntax* + +vim-go comes with an enhanced version of Vim's Go syntax highlighting. It +comes with a number of features, most of which are disabled by default. + +The recommended settings are the default values. If you're experiencing +slowdowns in Go files and you enabled some of these options then try disabling +them; some can be resource intensive. + + *'g:go_fold_enable'* + +Control syntax-based folding which takes effect when 'foldmethod' is set to +`syntax`. +You can enable specific fold regions by setting an array. Possible values are: + + block `{` .. `}` blocks. + import `import` block. + varconst `var` and `const` blocks. + package_comment The package comment. + comment Any comment that is not the package comment. + +By default all except "comment" are enabled: +> + let g:go_fold_enable = ['block', 'import', 'varconst', 'package_comment'] +< +Enable folding of only imports: +> + let g:go_fold_enable = ['import'] +< +Disable everything (same as not setting 'foldmethod' to `syntax`): +> + let g:go_fold_enable = [] +< + *'g:go_highlight_array_whitespace_error'* + +Highlight white space after `[]`. > + + let g:go_highlight_array_whitespace_error = 0 +< + *'g:go_highlight_chan_whitespace_error'* + +Highlight white space around the receive operator (`<-`) that doesn't follow +the standard style. > + + let g:go_highlight_chan_whitespace_error = 0 +< + *'g:go_highlight_extra_types'* + +Highlight commonly used library types (`io.Reader`, etc.). > + + let g:go_highlight_extra_types = 0 +< + *'g:go_highlight_space_tab_error'* + +Highlight instances of tabs following spaces. > + + let g:go_highlight_space_tab_error = 0 +< + *'g:go_highlight_trailing_whitespace_error'* + +Highlight trailing white space. > + + let g:go_highlight_trailing_whitespace_error = 0 +< + *'g:go_highlight_operators'* + +Highlight operators such as `:=` , `==`, `-=`, etc. +> + let g:go_highlight_operators = 0 +< + *'g:go_highlight_functions'* + +Highlight function and method declarations. +> + let g:go_highlight_functions = 0 +< + *'g:go_highlight_function_parameters'* + +Highlight the variable names in parameters (including named return parameters) +in function declarations. Setting this implies the functionality from +|'g:go_highlight_functions'|. +> + let g:go_highlight_function_parameters = 0 +< + *'g:go_highlight_function_calls'* + +Highlight function and method calls. +> + let g:go_highlight_function_calls = 0 +< + *'g:go_highlight_types'* + +Highlight struct and interface names. +> + let g:go_highlight_types = 0 +< + *'g:go_highlight_fields'* + +Highlight struct field names. +> + let g:go_highlight_fields = 0 +< + *'g:go_highlight_build_constraints'* + +Highlights build constraints. +> + let g:go_highlight_build_constraints = 0 +< + *'g:go_highlight_generate_tags'* + +Highlight go:generate directives. +> + let g:go_highlight_generate_tags = 0 +< + *'g:go_highlight_string_spellcheck'* + +Highlight spelling errors in strings when |spell| is enabled. +> + let g:go_highlight_string_spellcheck = 1 +< + *'g:go_highlight_format_strings'* + +Highlight printf-style formatting verbs inside string literals. +> + let g:go_highlight_format_strings = 1 +< + *'g:go_highlight_variable_declarations'* + +Highlight variable names in variable declarations (`x` in ` x :=`). +> + let g:go_highlight_variable_declarations = 0 +< + *'g:go_highlight_variable_assignments'* + +Highlight variable names in variable assignments (`x` in `x =`). +> + let g:go_highlight_variable_assignments = 0 +< + *'g:go_highlight_diagnostic_errors'* + +Highlight diagnostic errors. +> + let g:go_highlight_diagnostic_errors = 1 +< + *'g:go_highlight_diagnostic_warnings'* + +Highlight diagnostic warnings. +> + let g:go_highlight_diagnostic_warnings = 1 +< + +============================================================================== + *gohtmltmpl* *ft-gohtmltmpl-syntax* + *gotexttmpl* *ft-gotexttmpl-syntax* +Go template syntax~ + +The `gotexttmpl` 'filetype' provides syntax highlighting and indentation for +Go's `text/template` package. + +The `gohtmltmpl` filetype is for use with the `html/template` package and is +identical to `gotexttmpl` except that it will also load the standard `html` +filetype. + +The `gohtmltmpl` filetype is automatically set for `*.tmpl` files; the +`gotexttmpl` is never automatically set and needs to be set manually. + +============================================================================== + *gomod* *ft-gomod-syntax* +go.mod file syntax~ + +The `gomod` 'filetype' provides syntax highlighting for Go's module file +`go.mod` + + +============================================================================== +DEBUGGER *go-debug* + +Vim-go comes with a special "debugger mode". This starts a `dlv` process in +the background and provides various commands to communicate with it. + +This debugger is similar to Visual Studio or Eclipse and has the following +features: + + * Show stack trace and jumps. + * List local variables. + * List function arguments. + * Expand values of struct or array/slice. + * Show balloon on the symbol. + * Show output of stdout/stderr. + * Toggle breakpoint. + * Stack operation continue/next/step out. + +This feature requires either Vim 8.0.0087 or newer with the |+job| feature or +Neovim. This features also requires Delve 1.0.0 or newer, and it is +recommended to use Go 1.10 or newer, as its new caching will speed up +recompiles. + + *go-debug-intro* +GETTING STARTED WITH THE DEBUGGER~ + +Use |:GoDebugStart| or |:GoDebugTest| to start the debugger. The first +argument is the package name, and any arguments after that will be passed on +to the program; for example: +> + :GoDebugStart . -someflag value +< +This may take few seconds. After the code is compiled you'll see three new +windows: the stack trace on left side, the variable list on the bottom-left, +and program output at the bottom. + +You can add breakpoints with |:GoDebugBreakpoint| (<F9>) and run your program +with |:GoDebugContinue| (<F5>). + +The program will halt on the breakpoint, at which point you can inspect the +program state. You can go to the next line with |:GoDebugNext| (<F10>) or step +in with |:GoDebugStep| (<F11>). + +The variable window in the bottom left (`GODEBUG_VARIABLES`) will display all +local variables. Struct values are displayed as `{...}`, array/slices as +`[4]`. Use <CR> on the variable name to expand the values. + +The `GODEBUG_OUTPUT` window displays output from the program and the Delve +debugger. + +The `GODEBUG_STACKTRACE` window can be used to jump to different places in the +call stack. + +When you're done use |:GoDebugStop| to close the debugging windows and halt +the `dlv` process, or |:GoDebugRestart| to recompile the code. + + *go-debug-commands* +DEBUGGER COMMANDS~ + +Only |:GoDebugStart|, `:GoDebugTest`, and |:GoDebugBreakpoint| are available +by default. `:GoDebugContinue` becomes available after running `:GoDebugStart` +or `:GoDebugTest`. The rest of the commands and mappings become available +after executing `:GoDebugContinue`. + + *:GoDebugStart* +:GoDebugStart [pkg] [program-args] + + Start the debug mode for [pkg]; this does several things: + + * Setup the debug windows according to |'g:go_debug_windows'|. + * Make the `:GoDebug*` commands and `(go-debug-*)` mappings available. + + The directory of the current buffer is used if [pkg] is empty. Any other + arguments will be passed to the program. + + Use |:GoDebugStop| to stop `dlv` and exit debugging mode. + + *:GoDebugTest* +:GoDebugTest [pkg] [program-args] + + Behaves the same as |:GoDebugStart| but runs `dlv test` instead of + `dlv debug` so you can debug tests. + + Use `-test.flag` to pass flags to `go test` when debugging a test; for + example `-test.v` or `-test.run TestFoo` + + *:GoDebugRestart* +:GoDebugRestart + + Stop the program (if running) and restart `dlv` to recompile the package. + The current window layout and breakpoints will be left intact. + + *:GoDebugStop* + *(go-debug-stop)* +:GoDebugStop + + Stop `dlv` and remove all debug-specific commands, mappings, and windows. + + *:GoDebugBreakpoint* + *(go-debug-breakpoint)* +:GoDebugBreakpoint [linenr] + + Toggle breakpoint for the [linenr]. [linenr] defaults to the current line + if it is omitted. A line with a breakpoint will have the + {godebugbreakpoint} |:sign| placed on it. The line the program is + currently halted on will have the {godebugcurline} sign. + + *hl-GoDebugCurrent* *hl-GoDebugBreakpoint* + A line with a breakpoint will be highlighted with the {GoDebugBreakpoint} + group; the line the program is currently halted on will be highlighted + with {GoDebugCurrent}. + + Mapped to <F9> by default. + + *:GoDebugContinue* + *(go-debug-continue)* +:GoDebugContinue + + Continue execution until breakpoint or program termination. It will start + the program if it hasn't been started yet. + + Mapped to <F5> by default. + + *:GoDebugNext* + *(go-debug-next)* +:GoDebugNext + + Advance execution by one line, also called "step over" by some other + debuggers. + + Mapped to <F10> by default. + + *:GoDebugStep* + *(go-debug-step)* +:GoDebugStep + + Advance execution by one step, stopping at the next line of code that will + be executed (regardless of location). + + Mapped to <F11> by default. + + *:GoDebugStepOut* + *(go-debug-stepout)* + +:GoDebugStepOut + + Run all the code in the current function and halt when the function + returns ("step out of the current function"). + + *:GoDebugSet* +:GoDebugSet {var} {value} + + Set the variable {var} to {value}. Example: +> + :GoDebugSet truth 42 +< + This only works for `float`, `int` and variants, `uint` and variants, + `bool`, and pointers (this is a `delve` limitation, not a vim-go + limitation). + + *:GoDebugPrint* + *(go-debug-print)* +:GoDebugPrint {expr} + + Print the result of a Go expression. +> + :GoDebugPrint truth == 42 + truth == 42 true +< + Mapped to <F6> by default, which will evaluate the <cword> under the + cursor. + + *go-debug-settings* +DEBUGGER SETTINGS~ + + *'g:go_debug_windows'* + +Controls the window layout for debugging mode. This is a |dict| with four +possible keys: "vars", "stack", "goroutines", and "out"; each of the new +windows will be created in that that order with the commands in the value. The +current window is made the only window before creating the debug windows. + +A window will not be created if a key is missing or empty. + +Defaults: +> + let g:go_debug_windows = { + \ 'vars': 'leftabove 30vnew', + \ 'stack': 'leftabove 20new', + \ 'goroutines': 'botright 10new', + \ 'out': 'botright 5new', + \ } +< +Show only variables on the right-hand side: > + + let g:go_debug_windows = { + \ 'vars': 'rightbelow 60vnew', + \ } +< + *'g:go_debug_address'* + +Server address `dlv` will listen on; must be in `hostname:port` format. +Defaults to `127.0.0.1:8181`: +> + let g:go_debug_address = '127.0.0.1:8181' +< + + *'g:go_debug_log_output'* + +Specifies log output options for `dlv`. Value should be a single string of +comma-separated options suitable for passing to `dlv`. An empty string (`''`) +will suppress logging entirely. Default: `'debugger,rpc'`: +> + let g:go_debug_log_output = 'debugger,rpc' +< + + *'g:go_highlight_debug'* + +Highlight the current line and breakpoints in the debugger. + +> + let g:go_highlight_debug = 1 +< + + *'go:go_debug_breakpoint_sign_text'* + +Set the sign text used for breakpoints in the debugger. By default it's '>'. + +> + let g:go_debug_breakpoint_sign_text = '>' +< + +============================================================================== +FAQ TROUBLESHOOTING *go-troubleshooting* + +How do I troubleshoot problems?~ + +One of the best ways to understand what vim-go is doing and the output from +the tools to which it delegates is to use leverage the features described in +|'g:go_debug'|. + +Completion and other functions that use `gopls` don't work~ + +Vim-go is heavily reliant on `gopls` for completion and other functionality. +Many of the features that use `gopls` (e.g. completion, jumping to +definitions, showing identifier information, et al.) can be configured to +delegate to other tools. e.g. completion via 'omnifunc', |'g:go_info_mode'| +and |'g:go_def_mode'| can be set to use other tools for now (though some of +the alternatives to `gopls` are effectively at their end of life and support +for them from within vim-go may be removed soon). + +I want to disable `gopls`~ + +Vim-go's use of `gopls` can be disabled with 'g:go_gopls_enabled'. + +Some users want to do this to limit the load on their system when using vim-go +concurrently with an LSP client like vim-lsp. Instead of disabling vim-go's +use of `gopls`, you may prefer to configure vim-go to share the `gopls` +instance with other LSP plugins. 'g:go_gopls_options' can be used to configure +how vim-go starts `gopls` so that the instance can be shared with other +plugins and vim-go user's can leverage the full power of vim-go. + +I get a "Unknown function: go#config#..." error~ + +This often happens to vim-polyglot users when new config options are added to +vim-go. Run vim-polyglot's `build` script or make sure that vim-go is loaded +before vim-polyglot. + +It can also happen when multiple versions of vim-go are installed and the +version loaded by Vim doesn't have a function introduced by a later version. +To see where vim-go is being loaded from run +> + :verbose function go#config#FmtAutosave +< + +The output will show the path to the `autoload/go/config.vim` that was loaded +by Vim. Make sure the root of the path to output by the command is the path +from which vim-go is expected to sourced. If it is not rooted as expected, +then there are multiple copies of vim-go installed; remove the unexpected +copies. + +I get "not an editor command" error when I invoke :GoXXX~ + +This happens if vim-go is not installed properly. Be sure you have added this +line into your vimrc: +> + filetype plugin indent on +< + +I get a "command not found" error when I invoke :GoXXX~ + +If you try to call |:GoDef|, |:GoInfo| and get a command not found, check that +you have the binaries installed by using |:GoInstallBinaries|. + +Before opening vim, check your current $PATH: +> + echo $PATH +< +After opening vim, run `:echo $PATH`, the output must be your current `$PATH` +plus `$GOPATH/bin` (the location where |:GoInstallBinaries| installed the +binaries). + + *go-guru-scope* +What is the guru scope and how do I set it?~ + +Many vim-go commands use the `guru` commandline tool to get information. Some +`guru` commands require an expensive analysis of the source code. To still get +a reasonable amount of performance `guru` limits this analysis to a selected +list of packages. This is known as the "guru scope". + +The default is to use the package the current buffer belongs to, but this may +not always be correct. For example for the file `guthub.com/user/pkg/a/a.go` +the scope will be set to `github.com/user/pkg/a`, but you probably want +`github.com/user/pkg` + +Guessing what package(s) you do want is not easy so you may need to set this +manually, usually from an |autocommand|: +> + autocmd BufRead /home/martin/go/src/github.com/user/pkg/*.go + \ :GoGuruScope github.com/user/pkg +< + +If you have a lot of packages with the same prefix (`github.com/user`) you can +use a single autocommand: +> + autocmd BufRead /home/martin/go/src/*.go + \ let s:tmp = matchlist(expand('%:p'), + \ '/home/martin/go/src/\(github.com/user/[^/]\+\)') + \| if len(s:tmp) > 1 | exe 'silent :GoGuruScope ' . s:tmp[1] | endif + \| unlet s:tmp +< +Also see |:GoGuruScope| and |'g:go_guru_scope'|. + + +Vim becomes slow while editing Go files~ + +The most common cause for this is using an older version of Vim that doesn't +support asynchronous jobs. |'g:go_auto_sameids'| and |'g:go_auto_type_info'| +run jobs that can cause noticable delays when used with vim74. The problem is +most pronounced on vim74, but can occur on vim8 and nvim. On vim8 and nvim, +the problem should be restricted to a short period when the first buffer in a +package is first loaded. + +If you see unexpected characters rendered in the current window, the problem +is most likely due to |'g:go_auto_sameids'| or |'g:go_auto_type_info'|. First, +try using another mode for |'g:go_info_mode'|. If that doesn't work, try +disabling |'g:go_auto_sameids'| and |'g:go_auto_type_info'|. + +To a lesser extent, this can be caused by `g:go_highlight_*` options. If Vim +is just slower than normal, but doesn't render unexpected characters in the +currrent window, then the problem is most likely the `g:go_highlight_*` +options. Try disabling them if you've enabled some of them. + +I get errors when using GoInstallBinaries~ + +If you see errors like this: +> + Error installing golang.org/x/tools/cmd/goimports +< +that means your local Go setup is broken or the remote website is down. For +example sometimes code.google.com times out. To test, just execute a simple +`go get`: +> + go get golang.org/x/tools/cmd/goimports +< +You'll see a more detailed error. If this works, vim-go will work too. + + +I want to use a different binary name than "go", can I do this?~ + +There is no way to directly configure the binary name; but you can use a +wrapper script; for example if you would like to run `goapp` instead of `go`: + +1. In `~/gobin/go` (remember to make it executable): +> + #!/bin/sh + # Remove gobin from PATH and run goapp. + PATH=${PATH#$HOME/gobin} goapp "$@" +< +2. Start Vim with `~/gobin` as the first `PATH` entry so it will use the + wrapper script: +> + PATH="$HOME/gobin/:$PATH" vim +< + Alternatively you you could set `$PATH` in your vimrc with an |:autocmd|. + + +How do I use vim-go with syntastic?~ + +Sometimes when using both `vim-go` and `syntastic` Vim will start lagging +while saving and opening files. The following fixes this: +> + let g:syntastic_go_checkers = ['golint', 'govet'] + let g:syntastic_mode_map = { 'mode': 'active', 'passive_filetypes': ['go'] } +< +If you want to add errcheck you can use golangci-lint as a wrapper: +> + let g:syntastic_go_checkers = ['golint', 'govet', 'golangci-lint'] + let g:syntastic_go_gometalinter_args = ['--disable-all', '--enable=errcheck'] + let g:syntastic_mode_map = { 'mode': 'active', 'passive_filetypes': ['go'] } +< +Another issue with `vim-go` and `syntastic` is that the location list window +that contains the output of commands such as `:GoBuild` and `:GoTest` might +not appear. To resolve this: +> + let g:go_list_type = "quickfix" +< + +How do I run focused ginkgo tests?~ + +You must set this environment variable in your `.vimrc`: +> + let $GINKGO_EDITOR_INTEGRATION = "true" +< + +Using with NeoVim~ + +Note: Neovim currently is not a first class citizen for vim-go. You are free +to open bug, however I'm not using Neovim so it's hard for me to test it. +vim-go might not work as well in Neovim as it does in Vim. I'm happy to accept +pull requests or very detailed bug reports. If you're interested to improve +the state of Neovim in vim-go you're always welcome! + +Run `:GoRun` in a new tab, horizontal split or vertical split terminal +> + au FileType go nmap <leader>rt <Plug>(go-run-tab) + au FileType go nmap <leader>rs <Plug>(go-run-split) + au FileType go nmap <leader>rv <Plug>(go-run-vertical) +< +By default new terminals are opened in a vertical split. To change it +> + let g:go_term_mode = "split" +> + +How can I customize the highlighting?~ + +All the highlight groups used by vim-go are prefixed with `go` (e.g. +`goType`) and are defined in the files in the `syntax` directory. To change +the highlighting for any group, add a `highlight` command for the group to +your vimrc. To turn off the highlighting for any group, add `highlight link +group-name NONE` (where `group-name` is the name of the group whose highlight +you'd like to turn off) to your vimrc. + +Some people may wish to highlight Go's builtins as keywords. To do so, one +should simply add `highlight link goBuiltins Keyword` to the `vimrc` file. + +============================================================================== +DEVELOPMENT *go-development* + +vim-go supports test files written in VimScript; the way they're run is +roughly similar to Go tests: + +- A `*.vim` file has a corresponding `*_test.vim`. +- All functions starting with `Test_` are run as test. +- A test is considered to be "failed" if |v:errors| has any entries. You can + use one of the |test-functions| to set this, or append to it directly. + +A simple example: +> + function Test_run_fmt() + call assert_equal(expected, actual) + ... + endfunction +< +To run tests vim-go comes with three small helper scripts: + + `scripts/install-vim` Install a pristine Vim to `/tmp/vim-go-test/`. + `scripts/run-vim` Run a Vim version from `/tmp/vim-go-test/`. + `scripts/test` Run all tests with a Vim from `/tmp/vim-go-test/`. + +All scripts accept a Vim version as the first argument, which can be +`vim-8.0` or `nvim`. You will need to install a Vim version with +`install-vim` before you can use `run-vim` or `test`. + +You can install and test all Vim versions by running `make`. + + +============================================================================== +DONATION *go-donation* + +People have asked for this for a long time, now you can be a fully supporter +by being a patreon at: https://www.patreon.com/bhcleek + +By being a patron, you are enabling vim-go to grow and mature, helping me to +invest in bug fixes, new documentation, and improving both current and future +features. It's completely optional and is just a direct way to support +vim-go's ongoing development. Thanks! + +Check it out: https://www.patreon.com/bhcleek + + +============================================================================== +CREDITS *go-credits* + +* Go Authors for official Vim plugins. +* Gocode, Godef, Golint, Guru, Goimports, Errcheck projects and authors of + those projects. +* Other vim-plugins, thanks for inspiration (vim-golang, go.vim, vim-gocode, + vim-godef). +* vim-go contributors: https://github.com/fatih/vim-go/graphs/contributors. + + + vim: ft=help tw=78 et ts=2 sw=2 sts=2 norl + +endif diff --git a/doc/vim-jsonnet.txt b/doc/vim-jsonnet.txt new file mode 100644 index 00000000..988453bc --- /dev/null +++ b/doc/vim-jsonnet.txt @@ -0,0 +1,104 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'jsonnet') == -1 + +*vim-jsonnet.txt* Jsonnet development plugin +*vim-jsonnet* + +==================================================================================== + # # ### # # # ##### ####### # # # # ####### ####### + # # # ## ## # # # # # ## # ## # # # + # # # # # # # # # # # # # # # # # # # + # # # # # # ##### # ##### # # # # # # # # ##### # + # # # # # # # # # # # # # # # # # # + # # # # # # # # # # # # ## # ## # # + # ### # # ##### ##### ####### # # # # ####### # +==================================================================================== +CONTENTS *jsonnet-contents* + + 1. Intro........................................|jsonnet-intro| + 2. Install......................................|jsonnet-install| + 3. Commands.....................................|jsonnet-commands| + 4. Mappings.....................................|jsonnet-mappings| + 6. Functions....................................|jsonnet-functions| + 7. Settings.....................................|jsonnet-settings| + 8. Troubleshooting..............................|jsonnet-troubleshooting| + 9. Credits......................................|jsonnet-credits| + +============================================================================== +INTRO *jsonnet-intro* + +============================================================================== +INSTALL *jsonnet-install* + +============================================================================== +COMMANDS *jsonnet-commands* + + *:JsonnetFmt* +:JsonnetFmt + +Filter the current Jsonnet buffer through `jsonnetfmt`. It tries to +preserve cursor position and avoids replacing the buffer with stderr +output. + +============================================================================== +MAPPINGS *jsonnet-mappings* + +============================================================================== +FUNCTIONS *jsonnet-functions* + + *jsonnet#Format()* + +Filter the current Jsonnet buffer through `jsonnetfmt`. It tries to +preserve cursor position and avoids replacing the buffer with stderr +output. + +============================================================================== +SETTINGS *jsonnet-settings* + + *'g:jsonnet_fmt_on_save'* + +Use this option to auto |:JsonnetFmt| on save. By default it's enabled > + + let g:jsonnet_fmt_on_save = 1 +< + *'g:jsonnet_command'* + +Use this option to define which tool is used to fotmat. By default `jsonnet` is +used > + + let g:jsonnet_command = "jsonnet" +< + *'g:jsonnet_fmt_command'* + +Use this option to define which <cmd> parameter is used with *g:jsonnet_command* tool. +By default `fmt` is used > + + let g:jsonnet_fmt_command = "fmt" +< + *'g:jsonnet_fmt_options'* + +Use this option to add additional options to the +|'g:jsonnet_command'| + |'g:jsonnet_fmt_command'|. Default is empty. > + + let g:jsonnet_fmt_options = '' +< + *'g:jsonnet_fmt_fail_silently'* + +Use this option to enable processing of +|'g:jsonnet_command'| + |'g:jsonnet_fmt_command'| command if it fails. By default +it is turned off. By default the error output from the +|'g:jsonnet_command'| + |'g:jsonnet_fmt_command'| command is ignored. +FixMe: The processing of the |'g:jsonnet_command'| + |'g:jsonnet_fmt_command'| +is not implemented yet. So clearing this option would not do anything at this time. > + + let g:jsonnet_fmt_fail_silently = 1 +< + +============================================================================== +TROUBLESHOOTING *jsonnet-troubleshooting* + +============================================================================== +CREDITS *jsonnet-credits* + + + +endif diff --git a/doc/vim-markdown.txt b/doc/vim-markdown.txt new file mode 100644 index 00000000..c2337e69 --- /dev/null +++ b/doc/vim-markdown.txt @@ -0,0 +1,667 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'markdown') == -1 + +*vim-markdown* Vim Markdown + +=============================================================================== +Contents ~ + + 1. Introduction |vim-markdown-introduction| + 2. Installation |vim-markdown-installation| + 3. Basic usage |vim-markdown-basic-usage| + 1. Folding |vim-markdown-folding| + 2. Concealing |vim-markdown-concealing| + 4. Options |vim-markdown-options| + 1. Disable Folding |vim-markdown-disable-folding| + 2. Change fold style |vim-markdown-change-fold-style| + 3. Set header folding level |vim-markdown-set-header-folding-level| + 4. Disable Default Key Mappings |vim-markdown-disable-default-key-mappings| + 5. Enable TOC window auto-fit |vim-markdown-enable-toc-window-auto-fit| + 6. Text emphasis restriction to single-lines + |vim-markdown-text-emphasis-restriction-to-single-lines| + 7. Syntax Concealing |vim-markdown-syntax-concealing| + 8. Fenced code block languages |vim-markdown-fenced-code-block-languages| + 9. Follow named anchors |vim-markdown-follow-named-anchors| + 10. Syntax extensions |vim-markdown-syntax-extensions| + 1. LaTeX math |vim-markdown-latex-math| + 2. YAML Front Matter |vim-markdown-yaml-front-matter| + 3. TOML Front Matter |vim-markdown-toml-front-matter| + 4. JSON Front Matter |vim-markdown-json-front-matter| + 5. Strikethrough |vim-markdown-strikethrough| + 11. Adjust new list item indent |vim-markdown-adjust-new-list-item-indent| + 12. Do not require .md extensions for Markdown links + |vim-markdown-do-not-require-.md-extensions-for-markdown-links| + 13. Auto-write when following link + |vim-markdown-auto-write-when-following-link| + 14. Change default file extension + |vim-markdown-change-default-file-extension| + 15. Do not automatically insert bulletpoints + |vim-markdown-do-not-automatically-insert-bulletpoints| + 16. Change how to open new files |vim-markdown-change-how-to-open-new-files| + 5. Mappings |vim-markdown-mappings| + 6. Commands |vim-markdown-commands| + 7. Credits |vim-markdown-credits| + 8. License |vim-markdown-license| + 9. References |vim-markdown-references| + +=============================================================================== + *vim-markdown-introduction* +Introduction ~ + +Syntax highlighting, matching rules and mappings for the original Markdown [1] +and extensions. + +=============================================================================== + *vim-markdown-installation* +Installation ~ + +If you use Vundle [2], add the following lines to your '~/.vimrc': +> + Plugin 'godlygeek/tabular' + Plugin 'plasticboy/vim-markdown' +< +The 'tabular' plugin must come _before_ 'vim-markdown'. + +Then run inside Vim: +> + :so ~/.vimrc + :PluginInstall +< +If you use Pathogen [3], do this: +> + cd ~/.vim/bundle + git clone https://github.com/plasticboy/vim-markdown.git +< +To install without Pathogen using the Debian vim-addon-manager [4], do this: +> + git clone https://github.com/plasticboy/vim-markdown.git + cd vim-markdown + sudo make install + vim-addon-manager install markdown +< +If you are not using any package manager, download the tarball [5] and do this: +> + cd ~/.vim + tar --strip=1 -zxf vim-markdown-master.tar.gz +< +=============================================================================== + *vim-markdown-basic-usage* +Basic usage ~ + +------------------------------------------------------------------------------- + *vim-markdown-folding* +Folding ~ + +Folding is enabled for headers by default. + +The following commands are useful to open and close folds: + + *vim-markdown-zr* +- 'zr': reduces fold level throughout the buffer + *vim-markdown-zR* +- 'zR': opens all folds + *vim-markdown-zm* +- 'zm': increases fold level throughout the buffer + *vim-markdown-zM* +- 'zM': folds everything all the way + *vim-markdown-za* +- 'za': open a fold your cursor is on + *vim-markdown-zA* +- 'zA': open a fold your cursor is on recursively + *vim-markdown-zc* +- 'zc': close a fold your cursor is on + *vim-markdown-zC* +- 'zC': close a fold your cursor is on recursively + +Options are available to disable folding or change folding style. + +Try ':help fold-expr' and ':help fold-commands' for details. + +------------------------------------------------------------------------------- + *vim-markdown-concealing* +Concealing ~ + +Concealing is set for some syntax such as bold, italic, code block and link. + +Concealing lets you conceal text with other text. The actual source text is not +modified. If you put your cursor on the concealed line, the conceal goes away. + +Options are available to disable or change concealing. + +Try ':help concealcursor' and ':help conceallevel' for details. + +=============================================================================== + *vim-markdown-options* +Options ~ + +------------------------------------------------------------------------------- + *vim-markdown-disable-folding* +Disable Folding ~ + + *g:vim_markdown_folding_disabled* +- 'g:vim_markdown_folding_disabled' + + Add the following line to your '.vimrc' to disable the folding + configuration: +> + let g:vim_markdown_folding_disabled = 1 +< + This option only controls Vim Markdown specific folding configuration. + + To enable/disable folding use Vim's standard folding configuration. +> + set [no]foldenable +< +------------------------------------------------------------------------------- + *vim-markdown-change-fold-style* +Change fold style ~ + + *g:vim_markdown_folding_style_pythonic* +- 'g:vim_markdown_folding_style_pythonic' + + To fold in a style like python-mode [6], add the following to your + '.vimrc': +> + let g:vim_markdown_folding_style_pythonic = 1 +< + 'g:vim_markdown_folding_level' setting (default 1) is set to 'foldlevel'. + Thus level 1 heading which is served as a document title is expanded by + default. + + *g:vim_markdown_override_foldtext* +- 'g:vim_markdown_override_foldtext' + + To prevent foldtext from being set add the following to your '.vimrc': +> + let g:vim_markdown_override_foldtext = 0 +< +------------------------------------------------------------------------------- + *vim-markdown-set-header-folding-level* +Set header folding level ~ + + *g:vim_markdown_folding_level* +- 'g:vim_markdown_folding_level' + + Folding level is a number between 1 and 6. By default, if not specified, it + is set to 1. +> + let g:vim_markdown_folding_level = 6 +< + Tip: it can be changed on the fly with: +> + :let g:vim_markdown_folding_level = 1 + :edit +< +------------------------------------------------------------------------------- + *vim-markdown-disable-default-key-mappings* +Disable Default Key Mappings ~ + + *g:vim_markdown_no_default_key_mappings* +- 'g:vim_markdown_no_default_key_mappings' + + Add the following line to your '.vimrc' to disable default key mappings: +> + let g:vim_markdown_no_default_key_mappings = 1 +< + You can also map them by yourself with '<Plug>' mappings. + +------------------------------------------------------------------------------- + *vim-markdown-enable-toc-window-auto-fit* +Enable TOC window auto-fit ~ + + *g:vim_markdown_toc_autofit* +- 'g:vim_markdown_toc_autofit' + + Allow for the TOC window to auto-fit when it's possible for it to shrink. + It never increases its default size (half screen), it only shrinks. +> + let g:vim_markdown_toc_autofit = 1 +< +------------------------------------------------------------------------------- + *vim-markdown-text-emphasis-restriction-to-single-lines* +Text emphasis restriction to single-lines ~ + + *g:vim_markdown_emphasis_multiline* +- 'g:vim_markdown_emphasis_multiline' + + By default text emphasis works across multiple lines until a closing token + is found. However, it's possible to restrict text emphasis to a single line + (i.e., for it to be applied a closing token must be found on the same + line). To do so: +> + let g:vim_markdown_emphasis_multiline = 0 +< +------------------------------------------------------------------------------- + *vim-markdown-syntax-concealing* +Syntax Concealing ~ + + *g:vim_markdown_conceal* +- 'g:vim_markdown_conceal' + + Concealing is set for some syntax. + + For example, conceal '[link text](link url)' as just 'link text'. Also, + '_italic_' and '*italic*' will conceal to just _italic_. Similarly + '__bold__', '**bold**', '___italic bold___', and '***italic bold***' will + conceal to just **bold**, **bold**, **_italic bold_**, and **_italic + bold_** respectively. + + To enable conceal use Vim's standard conceal configuration. +> + set conceallevel=2 +< + To disable conceal regardless of 'conceallevel' setting, add the following + to your '.vimrc': +> + let g:vim_markdown_conceal = 0 +< + To disable math conceal with LaTeX math syntax enabled, add the following + to your '.vimrc': +> + let g:tex_conceal = "" + let g:vim_markdown_math = 1 +< + *g:vim_markdown_conceal_code_blocks* +- 'g:vim_markdown_conceal_code_blocks' + + Disabling conceal for code fences requires an additional setting: +> + let g:vim_markdown_conceal_code_blocks = 0 +< +------------------------------------------------------------------------------- + *vim-markdown-fenced-code-block-languages* +Fenced code block languages ~ + + *g:vim_markdown_fenced_languages* +- 'g:vim_markdown_fenced_languages' + + You can use filetype name as fenced code block languages for syntax + highlighting. If you want to use different name from filetype, you can add + it in your '.vimrc' like so: +> + let g:vim_markdown_fenced_languages = ['csharp=cs'] +< + This will cause the following to be highlighted using the 'cs' filetype + syntax. +> + ```csharp + ... + ``` +< + Default is "['c++=cpp', 'viml=vim', 'bash=sh', 'ini=dosini']". + +------------------------------------------------------------------------------- + *vim-markdown-follow-named-anchors* +Follow named anchors ~ + + *g:vim_markdown_follow_anchor* +- 'g:vim_markdown_follow_anchor' + + This feature allows the 'ge' command to follow named anchors in links of + the form 'file#anchor' or just '#anchor', where file may omit the '.md' + extension as usual. Two variables control its operation: +> + let g:vim_markdown_follow_anchor = 1 +< + This tells vim-markdown whether to attempt to follow a named anchor in a + link or not. When it is 1, and only if a link can be split in two parts by + the pattern '#', then the first part is interpreted as the file and the + second one as the named anchor. This also includes urls of the form + '#anchor', for which the first part is considered empty, meaning that the + target file is the current one. After the file is opened, the anchor will + be searched. + + Default is '0'. + + *g:vim_markdown_anchorexpr* +- 'g:vim_markdown_anchorexpr' +> + let g:vim_markdown_anchorexpr = "'<<'.v:anchor.'>>'" +< + This expression will be evaluated substituting 'v:anchor' with a quoted + string that contains the anchor to visit. The result of the evaluation will + become the real anchor to search in the target file. This is useful in + order to convert anchors of the form, say, 'my-section-title' to searches + of the form 'My Section Title' or '<<my-section-title>>'. + + Default is "''". + +------------------------------------------------------------------------------- + *vim-markdown-syntax-extensions* +Syntax extensions ~ + +The following options control which syntax extensions will be turned on. They +are off by default. + +------------------------------------------------------------------------------- + *vim-markdown-latex-math* +LaTeX math ~ + + *g:vim_markdown_math* +- 'g:vim_markdown_math' + + Used as '$x^2$', '$$x^2$$', escapable as '\$x\$' and '\$\$x\$\$'. +> + let g:vim_markdown_math = 1 +< +------------------------------------------------------------------------------- + *vim-markdown-yaml-front-matter* +YAML Front Matter ~ + + *g:vim_markdown_frontmatter* +- 'g:vim_markdown_frontmatter' + + Highlight YAML front matter as used by Jekyll or Hugo [7]. +> + let g:vim_markdown_frontmatter = 1 +< +------------------------------------------------------------------------------- + *vim-markdown-toml-front-matter* +TOML Front Matter ~ + + *g:vim_markdown_toml_frontmatter* +- 'g:vim_markdown_toml_frontmatter' + + Highlight TOML front matter as used by Hugo [7]. + + TOML syntax highlight requires vim-toml [8]. +> + let g:vim_markdown_toml_frontmatter = 1 +< +------------------------------------------------------------------------------- + *vim-markdown-json-front-matter* +JSON Front Matter ~ + + *g:vim_markdown_json_frontmatter* +- 'g:vim_markdown_json_frontmatter' + + Highlight JSON front matter as used by Hugo [7]. + + JSON syntax highlight requires vim-json [9]. +> + let g:vim_markdown_json_frontmatter = 1 +< +------------------------------------------------------------------------------- + *vim-markdown-strikethrough* +Strikethrough ~ + + *g:vim_markdown_strikethrough* +- 'g:vim_markdown_strikethrough' + + Strikethrough uses two tildes. '~~Scratch this.~~' +> + let g:vim_markdown_strikethrough = 1 +< +------------------------------------------------------------------------------- + *vim-markdown-adjust-new-list-item-indent* +Adjust new list item indent ~ + + *g:vim_markdown_new_list_item_indent* +- 'g:vim_markdown_new_list_item_indent' + + You can adjust a new list indent. For example, you insert a single line + like below: +> + * item1 +< + Then if you type 'o' to insert new line in vim and type '* item2', the + result will be: +> + * item1 + * item2 +< + vim-markdown automatically insert the indent. By default, the number of + spaces of indent is 4. If you'd like to change the number as 2, just write: +> + let g:vim_markdown_new_list_item_indent = 2 +< +------------------------------------------------------------------------------- + *vim-markdown-do-not-require-.md-extensions-for-markdown-links* +Do not require .md extensions for Markdown links ~ + + *g:vim_markdown_no_extensions_in_markdown* +- 'g:vim_markdown_no_extensions_in_markdown' + + If you want to have a link like this '[link text](link-url)' and follow it + for editing in vim using the 'ge' command, but have it open the file "link- + url.md" instead of the file "link-url", then use this option: +> + let g:vim_markdown_no_extensions_in_markdown = 1 +< + This is super useful for GitLab and GitHub wiki repositories. + + Normal behaviour would be that vim-markup required you to do this '[link + text](link-url.md)', but this is not how the Gitlab and GitHub wiki + repositories work. So this option adds some consistency between the two. + +------------------------------------------------------------------------------- + *vim-markdown-auto-write-when-following-link* +Auto-write when following link ~ + + *g:vim_markdown_autowrite* +- 'g:vim_markdown_autowrite' + + If you follow a link like this '[link text](link-url)' using the 'ge' + shortcut, this option will automatically save any edits you made before + moving you: +> + let g:vim_markdown_autowrite = 1 +< +------------------------------------------------------------------------------- + *vim-markdown-change-default-file-extension* +Change default file extension ~ + + *g:vim_markdown_auto_extension_ext* +- 'g:vim_markdown_auto_extension_ext' + + If you would like to use a file extension other than '.md' you may do so + using the 'vim_markdown_auto_extension_ext' variable: +> + let g:vim_markdown_auto_extension_ext = 'txt' +< +------------------------------------------------------------------------------- + *vim-markdown-do-not-automatically-insert-bulletpoints* +Do not automatically insert bulletpoints ~ + + *g:vim_markdown_auto_insert_bullets* +- 'g:vim_markdown_auto_insert_bullets' + + Automatically inserting bulletpoints can lead to problems when wrapping + text (see issue #232 for details), so it can be disabled: +> + let g:vim_markdown_auto_insert_bullets = 0 +< + In that case, you probably also want to set the new list item indent to 0 + as well, or you will have to remove an indent each time you add a new list + item: +> + let g:vim_markdown_new_list_item_indent = 0 +< +------------------------------------------------------------------------------- + *vim-markdown-change-how-to-open-new-files* +Change how to open new files ~ + + *g:vim_markdown_edit_url_in* +- 'g:vim_markdown_edit_url_in' + + By default when following a link the target file will be opened in your + current buffer. This behavior can change if you prefer using splits or tabs + by using the 'vim_markdown_edit_url_in' variable. Possible values are + 'tab', 'vsplit', 'hsplit', 'current' opening in a new tab, vertical split, + horizontal split, and current buffer respectively. Defaults to current + buffer if not set: +> + let g:vim_markdown_edit_url_in = 'tab' +< +=============================================================================== + *vim-markdown-mappings* +Mappings ~ + +The following work on normal and visual modes: + + *vim-markdown-gx* +- 'gx': open the link under the cursor in the same browser as the standard + 'gx' command. '<Plug>Markdown_OpenUrlUnderCursor' + + The standard 'gx' is extended by allowing you to put your cursor anywhere + inside a link. + + For example, all the following cursor positions will work: +> + [Example](http://example.com) + ^ ^ ^^ ^ ^ + 1 2 34 5 6 + + <http://example.com> + ^ ^ ^ + 1 2 3 +< + Known limitation: does not work for links that span multiple lines. + + *vim-markdown-ge* +- 'ge': open the link under the cursor in Vim for editing. Useful for + relative markdown links. '<Plug>Markdown_EditUrlUnderCursor' + + The rules for the cursor position are the same as the 'gx' command. + + *vim-markdown-]]* +- ']]': go to next header. '<Plug>Markdown_MoveToNextHeader' + + *vim-markdown-[[* +- '[[': go to previous header. Contrast with ']c'. + '<Plug>Markdown_MoveToPreviousHeader' + + *vim-markdown-][* +- '][': go to next sibling header if any. + '<Plug>Markdown_MoveToNextSiblingHeader' + + *vim-markdown-[]* +- '[]': go to previous sibling header if any. + '<Plug>Markdown_MoveToPreviousSiblingHeader' + + *vim-markdown-]c* +- ']c': go to Current header. '<Plug>Markdown_MoveToCurHeader' + + *vim-markdown-]u* +- ']u': go to parent header (Up). '<Plug>Markdown_MoveToParentHeader' + +This plugin follows the recommended Vim plugin mapping interface, so to change +the map ']u' to 'asdf', add to your '.vimrc': +> + map asdf <Plug>Markdown_MoveToParentHeader +< +To disable a map use: +> + map <Plug> <Plug>Markdown_MoveToParentHeader +< +=============================================================================== + *vim-markdown-commands* +Commands ~ + +The following requires ':filetype plugin on'. + + *:HeaderDecrease* +- ':HeaderDecrease': + + Decrease level of all headers in buffer: 'h2' to 'h1', 'h3' to 'h2', etc. + + If range is given, only operate in the range. + + If an 'h1' would be decreased, abort. + + For simplicity of implementation, Setex headers are converted to Atx. + + *:HeaderIncrease* +- ':HeaderIncrease': Analogous to ':HeaderDecrease', but increase levels + instead. + + *:SetexToAtx* +- ':SetexToAtx': + + Convert all Setex style headers in buffer to Atx. + + If a range is given, e.g. hit ':' from visual mode, only operate on the + range. + + *:TableFormat* +- ':TableFormat': Format the table under the cursor like this [10]. + + Requires Tabular [11]. + + The input table _must_ already have a separator line as the second line of + the table. That line only needs to contain the correct pipes '|', nothing + else is required. + + *:Toc* +- ':Toc': create a quickfix vertical window navigable table of contents with + the headers. + + Hit '<Enter>' on a line to jump to the corresponding line of the markdown + file. + + *:Toch* +- ':Toch': Same as ':Toc' but in an horizontal window. + + *:Toct* +- ':Toct': Same as ':Toc' but in a new tab. + + *:Tocv* +- ':Tocv': Same as ':Toc' for symmetry with ':Toch' and ':Tocv'. + +=============================================================================== + *vim-markdown-credits* +Credits ~ + +The main contributors of vim-markdown are: + +- **Ben Williams** (A.K.A. **plasticboy**). The original developer of vim- + markdown. Homepage [12]. + +If you feel that your name should be on this list, please make a pull request +listing your contributions. + +=============================================================================== + *vim-markdown-license* +License ~ + +The MIT License (MIT) + +Copyright (c) 2012 Benjamin D. Williams + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +=============================================================================== + *vim-markdown-references* +References ~ + +[1] http://daringfireball.net/projects/markdown/ +[2] https://github.com/gmarik/vundle +[3] https://github.com/tpope/vim-pathogen +[4] http://packages.qa.debian.org/v/vim-addon-manager.html +[5] https://github.com/plasticboy/vim-markdown/archive/master.tar.gz +[6] https://github.com/klen/python-mode +[7] https://gohugo.io/content/front-matter/ +[8] https://github.com/cespare/vim-toml +[9] https://github.com/elzr/vim-json +[10] http://www.cirosantilli.com/markdown-style-guide/#tables +[11] https://github.com/godlygeek/tabular +[12] http://plasticboy.com/ + +vim: ft=help + +endif diff --git a/doc/vim-raml.txt b/doc/vim-raml.txt new file mode 100644 index 00000000..ea26798c --- /dev/null +++ b/doc/vim-raml.txt @@ -0,0 +1,64 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'raml') == -1 + +# vim-raml +Vim syntax and language settings for RAML + +About +--- +vim-raml is a superset of Vim's own syntax settings for YAML, as RAML itself +is a superset of YAML. Obviously, filetype detection is provided for RAML +files as well to make use of the expanded syntax, as well language formatting +defaults. + +You'll notice several changes over using the default YAML syntax file: + - The RAML version header, manditory in RAML now stands out brightly, + rather than looking like a comment. + - Parameter interpolation i.e. ```<<thing>>``` is highlighted inside of blocks + and values. + - Delimiters and blocks i.e. ```-, |, etc``` are consistently highlighted + (flaky in YAML). + - HTTP verbs, response codes, data types, and route definitions are all + colored separately from regular keys to help immediately distingush + different levels of the data structure. + - HTTP verbs include all that are supported by RAML: get, post, put, delete, + head, patch, and options + - Response codes e.g. 200, 201, 404, 401, etc are colored like numbers + (for obvious reasons) + - Data types e.g. ```type: integer```. Supports all RAML datatypes. string, + number, integer, date, boolean, and file. + - Route definitions: these include ```/posts:``` or ```/{id}:``` + +Installation +--- +vim-raml doesn't have any strange or esoteric requirements. +Provided you're using Vundle, Pathogen or any of the other standard Vim +plugin managers. You can install vim-raml exactly how you'd expect. + +For completeness, to install via Vundle just add the following into your +.vimrc with your other plugins + +Plugin '.../.../' +Plugin 'IN3D/vim-raml' +Plugin '.../.../' + +Then run: + +:source % +:PluginInstall + + +Or for Pathogen: + +cd ~/.vim/bundle +git clone https://github.com/IN3D/vim-raml.git + +And Pathogen should pick it up the next time Vim is started. + + +Questions, suggestions, and issues +--- +If you have a question, suggestion, or have found an issue with vim-raml. +The best way to bring it to my attention is to open an issue at +https://github.com/IN3D/vim-raml/issues + +endif diff --git a/scripts/build b/scripts/build index 54285bfe..099dc616 100755 --- a/scripts/build +++ b/scripts/build @@ -14,7 +14,7 @@ PACKAGES = YAML.load_stream(File.read('packages.yaml')) BASE_URL = 'https://raw.githubusercontent.com/github/linguist/master' DIRS = { - default: %w(syntax indent compiler autoload ftplugin ctags after/syntax after/indent after/ftplugin), + default: %w(syntax indent doc compiler autoload ftplugin ctags after/syntax after/indent after/ftplugin), all: %w(syntax indent compiler autoload ftplugin after extras ctags), syntax: %w(syntax indent after/syntax after/indent) } @@ -99,7 +99,7 @@ def parse_remote(remote) end def copy_file(package, src, dest) - return unless [".vim", ".ctags", ".vital"].include?(File.extname(src)) + return unless [".vim", ".ctags", ".vital", ".txt"].include?(File.extname(src)) FileUtils.mkdir_p(File.dirname(dest)) name = package.fetch("name") |