vim.loader.enable(true) vim.pack.add({ "https://github.com/nvim-treesitter/nvim-treesitter", }, { confirm = false }) vim.pack.add({ "https://github.com/zenbones-theme/zenbones.nvim", }, { load = false }) require("mo.zen").setup("seoulbones") require("vim._extui").enable({}) vim.cmd([[ packadd! nvim.undotree ]]) vim.cmd([[ nnoremap [e '.move --' . v:count1 . '' nnoremap ]e '.move +' . v:count1 . '' xnoremap [e ':move --' . v:count1 . 'gv' xnoremap ]e ':move +' . (v:count1 + line('''>') - line('''<')) . 'gv' function! Sort(type, ...) abort '[,']sort call setpos('.', getpos("''")) endfunction nnoremap gs m'set operatorfunc=Sortg@ xnoremap gs :sort ]]) vim.keymap.set("n", "gK", "K") vim.o.breakindent = true -- Every wrapped line will continue visually indented (same amount of -- space as the beginning of that line), thus preserving horizontal -- blocks of text. vim.o.cinoptions = "l1,:0,g0,E-s,N-s,t0,(s,J1,j1" -- The 'cinoptions' affect the way 'cindent' reindents lines in a C -- program. vim.o.colorcolumn = "+1" -- 'colorcolumn' is a comma-separated list of screen columns that are -- highlighted with ColorColumn |hl-ColorColumn|. Useful to align -- text. Will make screen redrawing slower. -- The screen column can be an absolute number, or a number preceded with -- '+' or '-', which is added to or subtracted from 'textwidth'. -- When 'textwidth' is zero then the items with '-' and '+' are not used. vim.o.completeopt = "menu,menuone,preview,noselect,fuzzy" -- 'completeopt' 'cot' string (default "menu,popup") -- global or local to buffer |global-local| -- A comma-separated list of options for Insert mode completion -- |ins-completion|. The supported values are: -- -- fuzzy Enable |fuzzy-matching| for completion candidates. This -- allows for more flexible and intuitive matching, where -- characters can be skipped and matches can be found even -- if the exact sequence is not typed. -- -- longest -- When 'autocomplete' is not active, only the longest common -- prefix of the matches is inserted. If the popup menu is -- displayed, you can use CTRL-L to add more characters. -- Whether case is ignored depends on the type of completion. -- For buffer text the 'ignorecase' option applies. -- -- When 'autocomplete' is active and no completion item is -- selected, the longest common prefix of the matches is -- inserted after the cursor. The prefix is taken either -- from all displayed items or only from items in the current -- buffer. The inserted text is highlighted with -- |hl-PreInsert|, and the cursor position does not change -- (similar to `"preinsert"`). Press CTRL-Y to accept. -- See also |preinserted()|. -- -- menu Use a popup menu to show the possible completions. The -- menu is only shown when there is more than one match and -- sufficient colors are available. |ins-completion-menu| -- -- menuone Use the popup menu also when there is only one match. -- Useful when there is additional information about the -- match, e.g., what file it comes from. -- -- nearest Matches are listed based on their proximity to the cursor -- position, unlike the default behavior, which only -- considers proximity for matches appearing below the -- cursor. This applies only to matches from the current -- buffer. No effect if "fuzzy" is present. -- -- noinsert Do not insert any text for a match until the user selects -- a match from the menu. Only works in combination with -- "menu" or "menuone". No effect if "longest" is present. -- -- noselect Same as "noinsert", except that no menu item is -- pre-selected. If both "noinsert" and "noselect" are -- present, "noselect" takes precedence. This is enabled -- automatically when 'autocomplete' is on, unless -- "preinsert" is also enabled. -- -- nosort Disable sorting of completion candidates based on fuzzy -- scores when "fuzzy" is enabled. Candidates will appear -- in their original order. -- -- popup Show extra information about the currently selected -- completion in a popup window. Only works in combination -- with "menu" or "menuone". Overrides "preview". -- -- preinsert -- Inserts the text of the first completion candidate beyond -- the current leader, highlighted with |hl-PreInsert|. -- The cursor does not move. -- Requires "fuzzy" to be unset, and either "menuone" in -- 'completeopt' or 'autocomplete' enabled. When -- 'autocomplete' is enabled, this does not work if -- 'ignorecase' is set without 'infercase'. -- See also |preinserted()|. -- -- preview Show extra information about the currently selected -- completion in the preview window. Only works in -- combination with "menu" or "menuone". -- -- Only "fuzzy", "longest", "popup", "preinsert" and "preview" have an -- effect when 'autocomplete' is enabled. -- -- This option does not apply to |cmdline-completion|. See 'wildoptions' -- for that. vim.opt.cpoptions:remove("~") -- 'cpoptions' 'cpo' string (default "aABceFs_") -- global -- A sequence of single character flags. When a character is present -- this indicates Vi-compatible behavior. This is used for things where -- not being Vi-compatible is mostly or sometimes preferred. -- 'cpoptions' stands for "compatible-options". -- Commas can be added for readability. -- To avoid problems with flags that are added in the future, use the -- "+=" and "-=" feature of ":set" |add-option-flags|. vim.o.cursorline = true vim.o.cursorlineopt = "number" vim.o.foldlevelstart = 99 -- 'foldlevelstart' 'fdls' number (default -1) -- global -- Sets 'foldlevel' when starting to edit another buffer in a window. -- Useful to always start editing with all folds closed (value zero), -- some folds closed (one) or no folds closed (99). -- This is done before reading any modeline, thus a setting in a modeline -- overrules this option. Starting to edit a file for |diff-mode| also -- ignores this option and closes all folds. -- It is also done before BufReadPre autocommands, to allow an autocmd to -- overrule the 'foldlevel' value for specific files. -- When the value is negative, it is not used. vim.o.foldtext = "" -- 'foldtext' 'fdt' string (default "foldtext()") -- local to window -- An expression which is used to specify the text displayed for a closed -- fold. The context is set to the script where 'foldexpr' was set, -- script-local items can be accessed. See |fold-foldtext| for the -- usage. -- -- The expression will be evaluated in the |sandbox| if set from a -- modeline, see |sandbox-option|. -- This option cannot be set in a modeline when 'modelineexpr' is off. -- -- It is not allowed to change text or jump to another window while -- evaluating 'foldtext' |textlock|. -- -- When set to an empty string, foldtext is disabled, and the line -- is displayed normally with highlighting and no line wrapping. vim.o.ignorecase = true -- 'ignorecase' 'ic' boolean (default off) -- global -- Ignore case in search patterns, |cmdline-completion|, when -- searching in the tags file, |expr-==| and for Insert-mode completion -- |ins-completion|. -- Also see 'smartcase' and 'tagcase'. -- Can be overruled by using "\c" or "\C" in the pattern, see -- |/ignorecase|. vim.o.smartcase = true -- Override the 'ignorecase' option if the search pattern contains upper -- case characters. Only used when the search pattern is typed and -- 'ignorecase' option is on. Used for the commands "/", "?", "n", "N", -- ":g" and ":s" and when filtering matches for the completion menu -- |compl-states|. -- Not used for "*", "#", "gd", tag search, etc. After "*" and "#" you -- can make 'smartcase' used by doing a "/" command, recalling the search -- pattern from history and hitting . vim.o.jumpoptions = "view,clean" -- 'jumpoptions' 'jop' string (default "clean") -- global -- List of words that change the behavior of the |jumplist|. -- stack Make the jumplist behave like the tagstack. -- Relative location of entries in the jumplist is -- preserved at the cost of discarding subsequent entries -- when navigating backwards in the jumplist and then -- jumping to a location. |jumplist-stack| -- -- view When moving through the jumplist, |changelist|, -- |alternate-file|, using |mark-motions| or when popping -- the |tagstack| try to restore the |mark-view| in which -- the action occurred. -- -- clean Remove unloaded buffers from the jumplist. -- EXPERIMENTAL: this flag may change in the future. vim.o.linebreak = true -- 'linebreak' 'lbr' boolean (default off) -- local to window -- If on, Vim will wrap long lines at a character in 'breakat' rather -- than at the last character that fits on the screen. Unlike -- 'wrapmargin' and 'textwidth', this does not insert s in the file, -- it only affects the way the file is displayed, not its contents. -- If 'breakindent' is set, line is visually indented. Then, the value -- of 'showbreak' is used to put in front of wrapped lines. This option -- is not used when the 'wrap' option is off. -- Note that characters after an are mostly not displayed -- with the right amount of white space. vim.o.list = true -- 'list' boolean (default off) -- local to window -- List mode: By default, show tabs as ">", trailing spaces as "-", and -- non-breakable space characters as "+". Useful to see the difference -- between tabs and spaces and for trailing blanks. Further changed by -- the 'listchars' option. -- -- When 'listchars' does not contain "tab" field, tabs are shown as "^I" -- or "<09>", like how unprintable characters are displayed. -- -- The cursor is displayed at the start of the space a Tab character -- occupies, not at the end as usual in Normal mode. To get this cursor -- position while displaying Tabs with spaces, use: >vim -- set list lcs=tab:\ \ -- < -- Note that list mode will also affect formatting (set with 'textwidth' -- or 'wrapmargin') when 'cpoptions' includes 'L'. See 'listchars' for -- changing the way tabs are displayed. vim.opt.listchars:append("precedes:<", "extends:>") -- 'listchars' 'lcs' string (default "tab:> ,trail:-,nbsp:+") -- global or local to window |global-local| -- Strings to use in 'list' mode and for the |:list| command. It is a -- comma-separated list of string settings. *E1511* -- -- *lcs-eol* -- eol:c Character to show at the end of each line. When -- omitted, there is no extra character at the end of the -- line. -- *lcs-tab* -- tab:xy[z] Two or three characters to be used to show a tab. -- The third character is optional. -- -- tab:xy The 'x' is always used, then 'y' as many times as will -- fit. Thus "tab:>-" displays: > -- > -- >- -- >-- -- etc. -- < -- tab:xyz The 'z' is always used, then 'x' is prepended, and -- then 'y' is used as many times as will fit. Thus -- "tab:<->" displays: > -- > -- <> -- <-> -- <--> -- etc. -- < -- When "tab:" is omitted, a tab is shown as ^I. -- *lcs-space* -- space:c Character to show for a space. When omitted, spaces -- are left blank. -- *lcs-multispace* -- multispace:c... -- One or more characters to use cyclically to show for -- multiple consecutive spaces. Overrides the "space" -- setting, except for single spaces. When omitted, the -- "space" setting is used. For example, -- `:set listchars=multispace:---+` shows ten consecutive -- spaces as: > -- ---+---+-- -- < -- *lcs-lead* -- lead:c Character to show for leading spaces. When omitted, -- leading spaces are blank. Overrides the "space" and -- "multispace" settings for leading spaces. You can -- combine it with "tab:", for example: >vim -- set listchars+=tab:>-,lead:. -- < -- *lcs-leadmultispace* -- leadmultispace:c... -- Like the |lcs-multispace| value, but for leading -- spaces only. Also overrides |lcs-lead| for leading -- multiple spaces. -- `:set listchars=leadmultispace:---+` shows ten -- consecutive leading spaces as: > -- ---+---+--XXX -- < -- Where "XXX" denotes the first non-blank characters in -- the line. -- *lcs-trail* -- trail:c Character to show for trailing spaces. When omitted, -- trailing spaces are blank. Overrides the "space" and -- "multispace" settings for trailing spaces. -- *lcs-extends* -- extends:c Character to show in the last column, when 'wrap' is -- off and the line continues beyond the right of the -- screen. -- *lcs-precedes* -- precedes:c Character to show in the first visible column of the -- physical line, when there is text preceding the -- character visible in the first column. -- *lcs-conceal* -- conceal:c Character to show in place of concealed text, when -- 'conceallevel' is set to 1. A space when omitted. -- *lcs-nbsp* -- nbsp:c Character to show for a non-breakable space character -- (0xA0 (160 decimal) and U+202F). Left blank when -- omitted. -- -- The characters ':' and ',' should not be used. UTF-8 characters can -- be used. All characters must be single width. *E1512* -- -- Each character can be specified as hex: >vim -- set listchars=eol:\\x24 -- set listchars=eol:\\u21b5 -- set listchars=eol:\\U000021b5 -- < Note that a double backslash is used. The number of hex characters -- must be exactly 2 for \\x, 4 for \\u and 8 for \\U. -- -- Examples: >vim -- set lcs=tab:>-,trail:- -- set lcs=tab:>-,eol:<,nbsp:% -- set lcs=extends:>,precedes:< -- < |hl-NonText| highlighting will be used for "eol", "extends" and -- "precedes". |hl-Whitespace| for "nbsp", "space", "tab", "multispace", -- "lead" and "trail". vim.o.number = true vim.o.pumheight = 10 -- 'pumheight' 'ph' number (default 0) -- global -- Maximum number of items to show in the popup menu -- (|ins-completion-menu|). Zero means "use available screen space". vim.o.scrolloff = 2 -- 'scrolloff' 'so' number (default 0) -- global or local to window |global-local| -- Minimal number of screen lines to keep above and below the cursor. -- This will make some context visible around where you are working. If -- you set it to a very large value (999) the cursor line will always be -- in the middle of the window (except at the start or end of the file or -- when long lines wrap). -- After using the local value, go back the global value with one of -- these two: >vim -- setlocal scrolloff< -- setlocal scrolloff=-1 -- < For scrolling horizontally see 'sidescrolloff'. vim.o.shada = "'100,<50,s10,:100,/100,h,r/tmp/,r/private/,rfugitive:,rzipfile:,rterm:" -- 'shada' 'sd' string (default for -- Win32: !,'100,<50,s10,h,rA:,rB: -- others: !,'100,<50,s10,h) -- global -- When non-empty, the shada file is read upon startup and written -- when exiting Vim (see |shada-file|). The string should be a comma- -- separated list of parameters, each consisting of a single character -- identifying the particular parameter, followed by a number or string -- which specifies the value of that parameter. If a particular -- character is left out, then the default value is used for that -- parameter. The following is a list of the identifying characters and -- the effect of their value. -- CHAR VALUE ~ -- *shada-!* -- ! When included, save and restore global variables that start -- with an uppercase letter, and don't contain a lowercase -- letter. Thus "KEEPTHIS and "K_L_M" are stored, but "KeepThis" -- and "_K_L_M" are not. Nested List and Dict items may not be -- read back correctly, you end up with an empty item. -- *shada-quote* -- " Maximum number of lines saved for each register. Old name of -- the '<' item, with the disadvantage that you need to put a -- backslash before the ", otherwise it will be recognized as the -- start of a comment! -- *shada-%* -- % When included, save and restore the buffer list. If Vim is -- started with a file name argument, the buffer list is not -- restored. If Vim is started without a file name argument, the -- buffer list is restored from the shada file. Quickfix -- ('buftype'), unlisted ('buflisted'), unnamed and buffers on -- removable media (|shada-r|) are not saved. -- When followed by a number, the number specifies the maximum -- number of buffers that are stored. Without a number all -- buffers are stored. -- *shada-'* -- ' Maximum number of previously edited files for which the marks -- are remembered. This parameter must always be included when -- 'shada' is non-empty. -- If non-zero, then the |jumplist| and the |changelist| are also -- stored in the shada file. -- *shada-/* -- / Maximum number of items in the search pattern history to be -- saved. If non-zero, then the previous search and substitute -- patterns are also saved. When not included, the value of -- 'history' is used. -- *shada-:* -- : Maximum number of items in the command-line history to be -- saved. When not included, the value of 'history' is used. -- *shada-<* -- < Maximum number of lines saved for each register. If zero then -- registers are not saved. When not included, all lines are -- saved. '"' is the old name for this item. -- Also see the 's' item below: limit specified in KiB. -- *shada-@* -- @ Maximum number of items in the input-line history to be -- saved. When not included, the value of 'history' is used. -- *shada-c* -- c Dummy option, kept for compatibility reasons. Has no actual -- effect: ShaDa always uses UTF-8 and 'encoding' value is fixed -- to UTF-8 as well. -- *shada-f* -- f Whether file marks need to be stored. If zero, file marks ('0 -- to '9, 'A to 'Z) are not stored. When not present or when -- non-zero, they are all stored. '0 is used for the current -- cursor position (when exiting or when doing |:wshada|). -- *shada-h* -- h Disable the effect of 'hlsearch' when loading the shada -- file. When not included, it depends on whether ":nohlsearch" -- has been used since the last search command. -- *shada-n* -- n Name of the shada file. The name must immediately follow -- the 'n'. Must be at the end of the option! If the -- 'shadafile' option is set, that file name overrides the one -- given here with 'shada'. Environment variables are -- expanded when opening the file, not when setting the option. -- *shada-r* -- r Removable media. The argument is a string (up to the next -- ','). This parameter can be given several times. Each -- specifies the start of a path for which no marks will be -- stored. This is to avoid removable media. For Windows you -- could use "ra:,rb:". You can also use it for temp files, -- e.g., for Unix: "r/tmp". Case is ignored. -- *shada-s* -- s Maximum size of an item contents in KiB. If zero then nothing -- is saved. Unlike Vim this applies to all items, except for -- the buffer list and header. Full item size is off by three -- unsigned integers: with `s10` maximum item size may be 1 byte -- (type: 7-bit integer) + 9 bytes (timestamp: up to 64-bit -- integer) + 3 bytes (item size: up to 16-bit integer because -- 2^8 < 10240 < 2^16) + 10240 bytes (requested maximum item -- contents size) = 10253 bytes. -- -- Example: >vim -- set shada='50,<1000,s100,:0,n~/nvim/shada -- < -- '50 Marks will be remembered for the last 50 files you -- edited. -- <1000 Contents of registers (up to 1000 lines each) will be -- remembered. -- s100 Items with contents occupying more then 100 KiB are -- skipped. -- :0 Command-line history will not be saved. -- n~/nvim/shada The name of the file to use is "~/nvim/shada". -- no / Since '/' is not specified, the default will be used, -- that is, save all of the search history, and also the -- previous search and substitute patterns. -- no % The buffer list will not be saved nor read back. -- no h 'hlsearch' highlighting will be restored. -- -- When setting 'shada' from an empty value you can use |:rshada| to -- load the contents of the file, this is not done automatically. -- -- This option cannot be set from a |modeline| or in the |sandbox|, for -- security reasons. vim.o.sidescrolloff = 5 -- 'sidescrolloff' 'siso' number (default 0) -- global or local to window |global-local| -- The minimal number of screen columns to keep to the left and to the -- right of the cursor if 'nowrap' is set. Setting this option to a -- value greater than 0 while having 'sidescroll' also at a non-zero -- value makes some context visible in the line you are scrolling in -- horizontally (except at beginning of the line). Setting this option -- to a large value (like 999) has the effect of keeping the cursor -- horizontally centered in the window, as long as one does not come too -- close to the beginning of the line. -- After using the local value, go back the global value with one of -- these two: >vim -- setlocal sidescrolloff< -- setlocal sidescrolloff=-1 -- < -- Example: Try this together with 'sidescroll' and 'listchars' as in the -- following example to never allow the cursor to move onto the -- "extends" character: >vim -- -- set nowrap sidescroll=1 listchars=extends:>,precedes:< -- set sidescrolloff=1 -- < vim.o.smartcase = true -- 'smartcase' 'scs' boolean (default off) -- global -- Override the 'ignorecase' option if the search pattern contains upper -- case characters. Only used when the search pattern is typed and -- 'ignorecase' option is on. Used for the commands "/", "?", "n", "N", -- ":g" and ":s" and when filtering matches for the completion menu -- |compl-states|. -- Not used for "*", "#", "gd", tag search, etc. After "*" and "#" you -- can make 'smartcase' used by doing a "/" command, recalling the search -- pattern from history and hitting . vim.o.smoothscroll = true -- 'smoothscroll' 'sms' boolean (default off) -- local to window -- Scrolling works with screen lines. When 'wrap' is set and the first -- line in the window wraps part of it may not be visible, as if it is -- above the window. "<<<" is displayed at the start of the first line, -- highlighted with |hl-NonText|. -- You may also want to add "lastline" to the 'display' option to show as -- much of the last line as possible. -- NOTE: partly implemented, doesn't work yet for |gj| and |gk|. vim.o.splitright = true -- 'splitright' 'spr' boolean (default off) -- global -- When on, splitting a window will put the new window right of the -- current one. |:vsplit| vim.o.statuscolumn = "%s%=%l%{%&nu||&rnu?'%#WinSeparator#│':''%}" -- 'statuscolumn' 'stc' string (default "") -- local to window -- When non-empty, this option determines the content of the area to the -- side of a window, normally containing the fold, sign and number columns. -- The format of this option is like that of 'statusline'. -- -- Some of the items from the 'statusline' format are different for -- 'statuscolumn': -- -- %l line number column for currently drawn line -- %s sign column for currently drawn line -- %C fold column for currently drawn line -- -- The 'statuscolumn' width follows that of the default columns and -- adapts to the 'numberwidth', 'signcolumn' and 'foldcolumn' option values -- (regardless of whether the sign and fold items are present). -- Additionally, the 'statuscolumn' grows with the size of the evaluated -- format string, up to a point (following the maximum size of the default -- fold, sign and number columns). Shrinking only happens when the number -- of lines in a buffer changes, or the 'statuscolumn' option is set. -- -- The |v:lnum| variable holds the line number to be drawn. -- The |v:relnum| variable holds the relative line number to be drawn. -- The |v:virtnum| variable is negative when drawing virtual lines, zero -- when drawing the actual buffer line, and positive when -- drawing the wrapped part of a buffer line. -- -- When using |v:relnum|, keep in mind that cursor movement by itself will -- not cause the 'statuscolumn' to update unless 'relativenumber' is set. -- -- NOTE: The %@ click execute function item is supported as well but the -- specified function will be the same for each row in the same column. -- It cannot be switched out through a dynamic 'statuscolumn' format, the -- handler should be written with this in mind. -- -- Examples: >vim -- " Line number with bar separator and click handlers: -- set statuscolumn=%@SignCb@%s%=%T%@NumCb@%l│%T -- -- " Line numbers in hexadecimal for non wrapped part of lines: -- let &stc='%=%{v:virtnum>0?"":printf("%x",v:lnum)} ' -- -- " Human readable line numbers with thousands separator: -- let &stc='%{substitute(v:lnum,"\\d\\zs\\ze\\' -- . '%(\\d\\d\\d\\)\\+$",",","g")}' -- -- " Both relative and absolute line numbers with different -- " highlighting for odd and even relative numbers: -- let &stc='%#NonText#%{&nu?v:lnum:""}' . -- '%=%{&rnu&&(v:lnum%2)?"\ ".v:relnum:""}' . -- '%#LineNr#%{&rnu&&!(v:lnum%2)?"\ ".v:relnum:""}' -- -- < WARNING: this expression is evaluated for each screen line so defining -- an expensive expression can negatively affect render performance. -- vim.o.tagcase = "match" -- 'tagcase' 'tc' string (default "followic") -- global or local to buffer |global-local| -- This option specifies how case is handled when searching the tags -- file: -- followic Follow the 'ignorecase' option -- followscs Follow the 'smartcase' and 'ignorecase' options -- ignore Ignore case -- match Match case -- smart Ignore case unless an upper case letter is used vim.o.title = true -- 'title' boolean (default off) -- global -- When on, the title of the window will be set to the value of -- 'titlestring' (if it is not empty), or to: -- filename [+=-] (path) - Nvim -- Where: -- filename the name of the file being edited -- - indicates the file cannot be modified, 'ma' off -- + indicates the file was modified -- = indicates the file is read-only -- =+ indicates the file is read-only and modified -- (path) is the path of the file being edited -- - Nvim the server name |v:servername| or "Nvim" vim.o.undofile = true -- 'undofile' 'udf' boolean (default off) -- local to buffer -- When on, Vim automatically saves undo history to an undo file when -- writing a buffer to a file, and restores undo history from the same -- file on buffer read. -- The directory where the undo file is stored is specified by 'undodir'. -- For more information about this feature see |undo-persistence|. -- The undo file is not read when 'undoreload' causes the buffer from -- before a reload to be saved for undo. -- When 'undofile' is turned off the undo file is NOT deleted. vim.o.updatetime = 250 -- 'updatetime' 'ut' number (default 4000) -- global -- If this many milliseconds nothing is typed the swap file will be -- written to disk (see |crash-recovery|). Also used for the -- |CursorHold| autocommand event. vim.opt.wildignore:append({ "*.pyc", "__pycache__", "*~", "#*#", "*.o" }) -- 'wildignore' 'wig' string (default "") -- global -- A list of file patterns. A file that matches with one of these -- patterns is ignored when expanding |wildcards|, completing file or -- directory names, and influences the result of |expand()|, |glob()| and -- |globpath()| unless a flag is passed to disable this. -- The pattern is used like with |:autocmd|, see |autocmd-pattern|. -- Also see 'suffixes'. -- Example: >vim -- set wildignore=*.o,*.obj -- < The use of |:set+=| and |:set-=| is preferred when adding or removing -- a pattern from the list. This avoids problems when a future version -- uses another default. vim.o.wildignorecase = true -- 'wildignorecase' 'wic' boolean (default off) -- global -- When set case is ignored when completing file names and directories. -- Has no effect when 'fileignorecase' is set. -- Does not apply when the shell is used to expand wildcards, which -- happens when there are special characters. vim.o.wildmode = "longest:full,full" -- 'wildmode' 'wim' string (default "full") -- global -- Completion mode used for the character specified with 'wildchar'. -- This option is a comma-separated list of up to four parts, -- corresponding to the first, second, third, and fourth presses of -- 'wildchar'. Each part is a colon-separated list of completion -- behaviors, which are applied simultaneously during that phase. -- -- The possible behavior values are: -- "" Only complete (insert) the first match. No further -- matches are cycled or listed. -- "full" Complete the next full match. Cycles through all -- matches, returning to the original input after the -- last match. If 'wildmenu' is enabled, it will be -- shown. -- "longest" Complete to the longest common substring. If this -- doesn't extend the input, the next 'wildmode' part is -- used. -- "list" If multiple matches are found, list all of them. -- "lastused" When completing buffer names, sort them by most -- recently used (excluding the current buffer). Only -- applies to buffer name completion. -- "noselect" If 'wildmenu' is enabled, show the menu but do not -- preselect the first item. -- If only one match exists, it is completed fully, unless "noselect" is -- specified. -- -- Some useful combinations of colon-separated values: -- "longest:full" Start with the longest common string and show -- 'wildmenu' (if enabled). Does not cycle -- through full matches. -- "list:full" List all matches and complete first match. -- "list:longest" List all matches and complete till the longest -- common prefix. -- "list:lastused" List all matches. When completing buffers, -- sort them by most recently used (excluding the -- current buffer). -- "noselect:lastused" Do not preselect the first item in 'wildmenu' -- if it is active. When completing buffers, -- sort them by most recently used (excluding the -- current buffer). -- -- Examples: >vim -- set wildmode=full -- < Complete full match on every press (default behavior) >vim -- set wildmode=longest,full -- < First press: longest common substring -- Second press: cycle through full matches >vim -- set wildmode=list:full -- < First press: list all matches and complete the first one >vim -- set wildmode=list,full -- < First press: list matches only -- Second press: complete full matches >vim -- set wildmode=longest,list -- < First press: longest common substring -- Second press: list all matches >vim -- set wildmode=noselect:full -- < First press: show 'wildmenu' without completing or selecting -- Second press: cycle full matches >vim -- set wildmode=noselect:lastused,full -- < Same as above, but buffer matches are sorted by time last used -- More info here: |cmdline-completion|. vim.o.winborder = "none" -- 'winborder' string (default "") -- global -- Defines the default border style of floating windows. The default value -- is empty, which is equivalent to "none". Valid values include: -- - "bold": Bold line box. -- - "double": Double-line box. -- - "none": No border. -- - "rounded": Like "single", but with rounded corners ("ā•­" etc.). -- - "shadow": Drop shadow effect, by blending with the background. -- - "single": Single-line box. -- - "solid": Adds padding by a single whitespace cell. -- - custom: comma-separated list of exactly 8 characters in clockwise -- order starting from topleft. Example: >lua -- vim.o.winborder='+,-,+,|,+,-,+,|' -- <