{"id":13898727,"url":"https://github.com/wincent/loupe","last_synced_at":"2025-04-05T15:07:28.404Z","repository":{"id":34635034,"uuid":"38586119","full_name":"wincent/loupe","owner":"wincent","description":"🔍 Enhanced in-file search for Vim","archived":false,"fork":false,"pushed_at":"2025-01-24T10:07:09.000Z","size":135,"stargazers_count":144,"open_issues_count":10,"forks_count":6,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-29T14:09:19.949Z","etag":null,"topics":["vim"],"latest_commit_sha":null,"homepage":"","language":"Vim Script","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wincent.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-07-05T22:14:34.000Z","updated_at":"2025-01-19T19:04:00.000Z","dependencies_parsed_at":"2023-01-15T08:12:39.436Z","dependency_job_id":"6107a916-610e-4a24-912c-a8e47666bba8","html_url":"https://github.com/wincent/loupe","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wincent%2Floupe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wincent%2Floupe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wincent%2Floupe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wincent%2Floupe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wincent","download_url":"https://codeload.github.com/wincent/loupe/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247353745,"owners_count":20925329,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["vim"],"created_at":"2024-08-06T18:04:25.674Z","updated_at":"2025-04-05T15:07:28.384Z","avatar_url":"https://github.com/wincent.png","language":"Vim Script","funding_links":[],"categories":["Vim Script"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/wincent/loupe/media/loupe-small.jpg\" /\u003e\n\u003c/p\u003e\n\n# loupe\u003ca name=\"loupe-loupe\" href=\"#user-content-loupe-loupe\"\u003e\u003c/a\u003e\n\n## Intro\u003ca name=\"loupe-intro\" href=\"#user-content-loupe-intro\"\u003e\u003c/a\u003e\n\n\u003e \u0026quot;loupe (noun)\u003cbr /\u003ea small magnifying glass used by jewelers and watchmakers.\u0026quot;\n\n\u003cp align=\"right\"\u003e\u003ca name=\"loupe-features\" href=\"#user-content-loupe-features\"\u003e\u003ccode\u003eloupe-features\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\nLoupe enhances Vim's \u003cstrong\u003e`search-commands`\u003c/strong\u003e in four ways:\n\n### 1. Makes the currently selected match easier to see\u003ca name=\"loupe-1-makes-the-currently-selected-match-easier-to-see\" href=\"#user-content-loupe-1-makes-the-currently-selected-match-easier-to-see\"\u003e\u003c/a\u003e\n\nWhen searching using \u003cstrong\u003e`/`\u003c/strong\u003e, \u003cstrong\u003e`?`\u003c/strong\u003e, \u003cstrong\u003e`star`\u003c/strong\u003e, \u003cstrong\u003e`#`\u003c/strong\u003e, \u003cstrong\u003e`n`\u003c/strong\u003e, \u003cstrong\u003e`N`\u003c/strong\u003e or similar, it can be hard to see the \u0026quot;current\u0026quot; match from among all the matches that 'hlsearch' highlights. Loupe makes the currently selected match easier to see by:\n\n- Applying a different \u003cstrong\u003e`:highlight`\u003c/strong\u003e group (by default, \u003cstrong\u003e`hl-IncSearch`\u003c/strong\u003e) to the match under the cursor.\n- Keeping the matching line centered within the window when jumping between matches with \u003cstrong\u003e`n`\u003c/strong\u003e and \u003cstrong\u003e`N`\u003c/strong\u003e.\n\n### 2. Applies sane pattern syntax by default\u003ca name=\"loupe-2-applies-sane-pattern-syntax-by-default\" href=\"#user-content-loupe-2-applies-sane-pattern-syntax-by-default\"\u003e\u003c/a\u003e\n\nLoupe makes \u0026quot;very magic\u0026quot; (\u003cstrong\u003e`/\\v`\u003c/strong\u003e) syntax apply by default when searching. This is true even if you initiate a search via a novel means, such as from a visual selection or with a complicated \u003cstrong\u003e`:range`\u003c/strong\u003e prefix.\n\nThis means that you can use a pattern syntax closer to the familiar regular expression syntax from languages such as Perl, Ruby, JavaScript (indeed, most other modern languages that support regular expressions).\n\n### 3. Provides a shortcut to remove search highlighting\u003ca name=\"loupe-3-provides-a-shortcut-to-remove-search-highlighting\" href=\"#user-content-loupe-3-provides-a-shortcut-to-remove-search-highlighting\"\u003e\u003c/a\u003e\n\nLoupe maps \u0026lt;leader\u0026gt;n to quickly remove all 'hlsearch' highlighting (although you can provide an alternative mapping of your choosing or suppress the feature entirely).\n\n### 4. Sensible defaults for search-related features\u003ca name=\"loupe-4-sensible-defaults-for-search-related-features\" href=\"#user-content-loupe-4-sensible-defaults-for-search-related-features\"\u003e\u003c/a\u003e\n\nLoupe provides reasonable defaults for most search-related Vim settings to provide a good \u0026quot;out of the box\u0026quot; experience. For more details, or to see how to override Loupe's settings, see \u003cstrong\u003e[`loupe-overrides`](#user-content-loupe-overrides)\u003c/strong\u003e.\n\n## Installation\u003ca name=\"loupe-installation\" href=\"#user-content-loupe-installation\"\u003e\u003c/a\u003e\n\nTo install Loupe, use your plug-in management system of choice.\n\nIf you don't have a \u0026quot;plug-in management system of choice\u0026quot;, I recommend Pathogen (https://github.com/tpope/vim-pathogen) due to its simplicity and robustness. Assuming that you have Pathogen installed and configured, and that you want to install Loupe into `~/.vim/bundle`, you can do so with:\n\n```\ngit clone https://github.com/wincent/loupe.git ~/.vim/bundle/loupe\n```\n\nAlternatively, if you use a Git submodule for each Vim plug-in, you could do the following after `cd`-ing into the top-level of your Git superproject:\n\n```\ngit submodule add https://github.com/wincent/loupe.git ~/vim/bundle/loupe\ngit submodule init\n```\n\nTo generate help tags under Pathogen, you can do so from inside Vim with:\n\n```\n:call pathogen#helptags()\n```\n\n## Mappings\u003ca name=\"loupe-mappings\" href=\"#user-content-loupe-mappings\"\u003e\u003c/a\u003e\n\n### `\u003cPlug\u003e(LoupeClearHighlight)`\u003ca name=\"loupe-plugloupeclearhighlight\" href=\"#user-content-loupe-plugloupeclearhighlight\"\u003e\u003c/a\u003e\n\nLoupe maps \u0026lt;leader\u0026gt;n to \u003cstrong\u003e[`\u003cPlug\u003e(LoupeClearHighlight)`](#user-content-plugloupeclearhighlight)\u003c/strong\u003e, which clears all visible highlights (like \u003cstrong\u003e`:nohighlight`\u003c/strong\u003e does). To use an alternative mapping instead, create a different one in your \u003cstrong\u003e`.vimrc`\u003c/strong\u003e instead using \u003cstrong\u003e`:nmap`\u003c/strong\u003e:\n\n```\n\" Instead of \u003cleader\u003en, use \u003cleader\u003ex.\nnmap \u003cleader\u003ex \u003cPlug\u003e(LoupeClearHighlight)\n```\n\nNote that Loupe will not try to set up its \u0026lt;leader\u0026gt;n mapping if any of the following are true:\n\n- A mapping for \u0026lt;leader\u0026gt;n already exists.\n- An alternative mapping for \u003cstrong\u003e[`\u003cPlug\u003e(LoupeClearHighlight)`](#user-content-plugloupeclearhighlight)\u003c/strong\u003e has already been set up from a \u003cstrong\u003e`.vimrc`\u003c/strong\u003e.\n- The mapping has been suppressed by setting \u003cstrong\u003e[`g:LoupeClearHighlightMap`](#user-content-gloupeclearhighlightmap)\u003c/strong\u003e to 1 in your \u003cstrong\u003e`.vimrc`\u003c/strong\u003e.\n\n### `\u003cPlug\u003e(LoupeOctothorpe)`\u003ca name=\"loupe-plugloupeoctothorpe\" href=\"#user-content-loupe-plugloupeoctothorpe\"\u003e\u003c/a\u003e\n\nLoupe maps \u003cstrong\u003e`#`\u003c/strong\u003e to \u003cstrong\u003e[`\u003cPlug\u003e(LoupeOctothorpe)`](#user-content-plugloupeoctothorpe)\u003c/strong\u003e in order to implement custom highlighting and line-centering for the current match.\n\nTo prevent this from happening, create an alternate mapping in your \u003cstrong\u003e`.vimrc`\u003c/strong\u003e:\n\n```\nnmap \u003cNop\u003e \u003cPlug\u003e(LoupeOctothorpe)\n```\n\n### `\u003cPlug\u003e(LoupeStar)`\u003ca name=\"loupe-plugloupestar\" href=\"#user-content-loupe-plugloupestar\"\u003e\u003c/a\u003e\n\nLoupe maps \u003cstrong\u003e`star`\u003c/strong\u003e to \u003cstrong\u003e[`\u003cPlug\u003e(LoupeStar)`](#user-content-plugloupestar)\u003c/strong\u003e in order to implement custom highlighting and line-centering for the current match.\n\nTo prevent this from happening, create an alternate mapping in your \u003cstrong\u003e`.vimrc`\u003c/strong\u003e:\n\n```\nnmap \u003cNop\u003e \u003cPlug\u003e(LoupeStar)\n```\n\n### `\u003cPlug\u003e(LoupeN)`\u003ca name=\"loupe-plugloupen\" href=\"#user-content-loupe-plugloupen\"\u003e\u003c/a\u003e\n\nLoupe maps \u003cstrong\u003e`N`\u003c/strong\u003e to \u003cstrong\u003e[`\u003cPlug\u003e(LoupeN)`](#user-content-plugloupen)\u003c/strong\u003e in order to implement custom highlighting and line-centering for the current match.\n\nTo prevent this from happening, create an alternate mapping in your \u003cstrong\u003e`.vimrc`\u003c/strong\u003e:\n\n```\nnmap \u003cNop\u003e \u003cPlug\u003e(LoupeN)\n```\n\n### `\u003cPlug\u003e(LoupeGOctothorpe)`\u003ca name=\"loupe-plugloupegoctothorpe\" href=\"#user-content-loupe-plugloupegoctothorpe\"\u003e\u003c/a\u003e\n\nLoupe maps \u003cstrong\u003e`g#`\u003c/strong\u003e to \u003cstrong\u003e[`\u003cPlug\u003e(LoupeGOctothorpe)`](#user-content-plugloupegoctothorpe)\u003c/strong\u003e in order to implement custom highlighting and line-centering for the current match.\n\nTo prevent this from happening, create an alternate mapping in your \u003cstrong\u003e`.vimrc`\u003c/strong\u003e:\n\n```\nnmap \u003cNop\u003e \u003cPlug\u003e(LoupeGOctothorpe)\n```\n\n### `\u003cPlug\u003e(LoupeGStar)`\u003ca name=\"loupe-plugloupegstar\" href=\"#user-content-loupe-plugloupegstar\"\u003e\u003c/a\u003e\n\nLoupe maps \u003cstrong\u003e`gstar`\u003c/strong\u003e to \u003cstrong\u003e[`\u003cPlug\u003e(LoupeGStar)`](#user-content-plugloupegstar)\u003c/strong\u003e in order to implement custom highlighting and line-centering for the current match.\n\nTo prevent this from happening, create an alternate mapping in your \u003cstrong\u003e`.vimrc`\u003c/strong\u003e:\n\n```\nnmap \u003cNop\u003e \u003cPlug\u003e(LoupeGStar)\n```\n\n### `\u003cPlug\u003e(Loupen)`\u003ca name=\"loupe-plugloupen\" href=\"#user-content-loupe-plugloupen\"\u003e\u003c/a\u003e\n\nLoupe maps \u003cstrong\u003e`n`\u003c/strong\u003e to \u003cstrong\u003e[`\u003cPlug\u003e(Loupen)`](#user-content-plugloupen)\u003c/strong\u003e in order to implement custom highlighting and line-centering for the current match.\n\nTo prevent this from happening, create an alternate mapping in your \u003cstrong\u003e`.vimrc`\u003c/strong\u003e:\n\n```\nnmap \u003cNop\u003e \u003cPlug\u003e(Loupen)\n```\n\n## Options\u003ca name=\"loupe-options\" href=\"#user-content-loupe-options\"\u003e\u003c/a\u003e\n\n\u003cp align=\"right\"\u003e\u003ca name=\"gloupehighlightgroup\" href=\"#user-content-gloupehighlightgroup\"\u003e\u003ccode\u003eg:LoupeHighlightGroup\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\n### `g:LoupeHighlightGroup` (string, default: IncSearch)\u003ca name=\"loupe-gloupehighlightgroup-string-default-incsearch\" href=\"#user-content-loupe-gloupehighlightgroup-string-default-incsearch\"\u003e\u003c/a\u003e\n\nSpecifies the \u003cstrong\u003e`:highlight`\u003c/strong\u003e group used to emphasize the match currently under the cursor for the current search pattern. Defaults to \u0026quot;IncSearch\u0026quot; (ie. \u003cstrong\u003e`hl-IncSearch`\u003c/strong\u003e). For example:\n\n```\nlet g:LoupeHighlightGroup='Error'\n```\n\nTo prevent any special highlighting from being applied, set this option to \u0026quot;\u0026quot; (ie. the empty string).\n\n\u003cp align=\"right\"\u003e\u003ca name=\"gloupeloaded\" href=\"#user-content-gloupeloaded\"\u003e\u003ccode\u003eg:LoupeLoaded\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\n### `g:LoupeLoaded` (any, default: none)\u003ca name=\"loupe-gloupeloaded-any-default-none\" href=\"#user-content-loupe-gloupeloaded-any-default-none\"\u003e\u003c/a\u003e\n\nTo prevent Loupe from being loaded, set \u003cstrong\u003e[`g:LoupeLoaded`](#user-content-gloupeloaded)\u003c/strong\u003e to any value in your \u003cstrong\u003e`.vimrc`\u003c/strong\u003e. For example:\n\n```\nlet g:LoupeLoaded=1\n```\n\n\u003cp align=\"right\"\u003e\u003ca name=\"gloupeclearhighlightmap\" href=\"#user-content-gloupeclearhighlightmap\"\u003e\u003ccode\u003eg:LoupeClearHighlightMap\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\n### `g:LoupeClearHighlightMap` (boolean, default: 1)\u003ca name=\"loupe-gloupeclearhighlightmap-boolean-default-1\" href=\"#user-content-loupe-gloupeclearhighlightmap-boolean-default-1\"\u003e\u003c/a\u003e\n\nControls whether to set up the \u003cstrong\u003e[`\u003cPlug\u003e(LoupeClearHighlight)`](#user-content-plugloupeclearhighlight)\u003c/strong\u003e mapping. To prevent any mapping from being configured, set to 0:\n\n```\nlet g:LoupeClearHighlightMap=0\n```\n\n\u003cp align=\"right\"\u003e\u003ca name=\"gloupeverymagic\" href=\"#user-content-gloupeverymagic\"\u003e\u003ccode\u003eg:LoupeVeryMagic\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\n### `g:LoupeVeryMagic` (boolean, default: 1)\u003ca name=\"loupe-gloupeverymagic-boolean-default-1\" href=\"#user-content-loupe-gloupeverymagic-boolean-default-1\"\u003e\u003c/a\u003e\n\nControls whether \u0026quot;very magic\u0026quot; pattern syntax (\u003cstrong\u003e`/\\v`\u003c/strong\u003e) is applied by default. To disable, set to 0:\n\n```\nlet g:LoupeVeryMagic=0\n```\n\n\u003cp align=\"right\"\u003e\u003ca name=\"gloupecenterresults\" href=\"#user-content-gloupecenterresults\"\u003e\u003ccode\u003eg:LoupeCenterResults\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\n### `g:LoupeCenterResults` (boolean, default: 1)\u003ca name=\"loupe-gloupecenterresults-boolean-default-1\" href=\"#user-content-loupe-gloupecenterresults-boolean-default-1\"\u003e\u003c/a\u003e\n\nControls whether the match's line is vertically centered within the window when jumping (via \u003cstrong\u003e`n`\u003c/strong\u003e, \u003cstrong\u003e`N`\u003c/strong\u003e etc). To disable, set to 0:\n\n```\nlet g:LoupeCenterResults=0\n```\n\n\u003cp align=\"right\"\u003e\u003ca name=\"gloupecasesettingsalways\" href=\"#user-content-gloupecasesettingsalways\"\u003e\u003ccode\u003eg:LoupeCaseSettingsAlways\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\n### `g:LoupeCaseSettingsAlways` (boolean, default: 1)\u003ca name=\"loupe-gloupecasesettingsalways-boolean-default-1\" href=\"#user-content-loupe-gloupecasesettingsalways-boolean-default-1\"\u003e\u003c/a\u003e\n\nNormally Vim will respect your \u003cstrong\u003e`'smartcase'`\u003c/strong\u003e and \u003cstrong\u003e`'ignorecase'`\u003c/strong\u003e settings when searching with \u003cstrong\u003e`/`\u003c/strong\u003e, or \u003cstrong\u003e`?`\u003c/strong\u003e, but it ignores them when using \u003cstrong\u003e`star`\u003c/strong\u003e, \u003cstrong\u003e`#`\u003c/strong\u003e, \u003cstrong\u003e`gstar`\u003c/strong\u003e or \u003cstrong\u003e`g#`\u003c/strong\u003e.\n\nThis setting forces Vim to respect your \u003cstrong\u003e`'smartcase'`\u003c/strong\u003e and \u003cstrong\u003e`'ignorecase'`\u003c/strong\u003e settings in all cases. To disable, set to 0:\n\n```\nlet g:LoupeCaseSettingsAlways=0\n```\n\n## Functions\u003ca name=\"loupe-functions\" href=\"#user-content-loupe-functions\"\u003e\u003c/a\u003e\n\n\u003cp align=\"right\"\u003e\u003ca name=\"loupehlmatch\" href=\"#user-content-loupehlmatch\"\u003e\u003ccode\u003eloupe#hlmatch()\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\n### `loupe#hlmatch()`\u003ca name=\"loupe-loupehlmatch\" href=\"#user-content-loupe-loupehlmatch\"\u003e\u003c/a\u003e\n\nApply highlighting to the current search match.\n\n## Overrides\u003ca name=\"loupe-overrides\" href=\"#user-content-loupe-overrides\"\u003e\u003c/a\u003e\n\nLoupe sets a number of search-related Vim settings to reasonable defaults in order to provide a good \u0026quot;out of the box\u0026quot; experience. The following overrides will be set unless suppressed or overridden (see \u003cstrong\u003e[`loupe-suppress-overrides`](#user-content-loupe-suppress-overrides)\u003c/strong\u003e):\n\n\u003cp align=\"right\"\u003e\u003ca name=\"loupe-history-override\" href=\"#user-content-loupe-history-override\"\u003e\u003ccode\u003eloupe-history-override\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\n\u003cstrong\u003e`'history'`\u003c/strong\u003e\n\nIncreased to 1000, to increase the number of previous searches remembered. Note that Loupe only applies this setting if the current value of 'history' is less than 1000.\n\n\u003cp align=\"right\"\u003e\u003ca name=\"loupe-hlsearch-override\" href=\"#user-content-loupe-hlsearch-override\"\u003e\u003ccode\u003eloupe-hlsearch-override\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\n\u003cstrong\u003e`'hlsearch'`\u003c/strong\u003e\n\nTurned on (when there is a previous search pattern, highlight all its matches).\n\n\u003cp align=\"right\"\u003e\u003ca name=\"loupe-incsearch-override\" href=\"#user-content-loupe-incsearch-override\"\u003e\u003ccode\u003eloupe-incsearch-override\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\n\u003cstrong\u003e`'incsearch'`\u003c/strong\u003e\n\nTurned on (while typing a search command, show where the pattern matches, as it was typed so far).\n\n\u003cp align=\"right\"\u003e\u003ca name=\"loupe-ignorecase-override\" href=\"#user-content-loupe-ignorecase-override\"\u003e\u003ccode\u003eloupe-ignorecase-override\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\n\u003cstrong\u003e`'ignorecase'`\u003c/strong\u003e\n\nTurned on (to ignore case in search patterns).\n\n\u003cp align=\"right\"\u003e\u003ca name=\"loupe-shortmess-override\" href=\"#user-content-loupe-shortmess-override\"\u003e\u003ccode\u003eloupe-shortmess-override\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\n\u003cstrong\u003e`'shortmess'`\u003c/strong\u003e\n\nAdds \u0026quot;s\u0026quot;, which suppresses the display of \u0026quot;search hit BOTTOM, continuing at TOP\u0026quot; and \u0026quot;search hit TOP, continuing at BOTTOM\u0026quot; messages.\n\n\u003cp align=\"right\"\u003e\u003ca name=\"loupe-smartcase-override\" href=\"#user-content-loupe-smartcase-override\"\u003e\u003ccode\u003eloupe-smartcase-override\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\n\u003cstrong\u003e`'smartcase'`\u003c/strong\u003e\n\nTurned on (overrides \u003cstrong\u003e`'ignorecase'`\u003c/strong\u003e, making the search pattern case-sensitive whenever it containers uppercase characters).\n\n\u003cp align=\"right\"\u003e\u003ca name=\"loupe-suppress-overrides\" href=\"#user-content-loupe-suppress-overrides\"\u003e\u003ccode\u003eloupe-suppress-overrides\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\n### Preventing Loupe overrides from taking effect\u003ca name=\"loupe-preventing-loupe-overrides-from-taking-effect\" href=\"#user-content-loupe-preventing-loupe-overrides-from-taking-effect\"\u003e\u003c/a\u003e\n\nTo override any of these choices, you can place overrides in an \u003cstrong\u003e`after-directory`\u003c/strong\u003e (ie. `~/.vim/after/plugin/loupe.vim`). For example:\n\n```\n \" Override Loupe's 'history' setting from 1000 to 10000.\n set history=10000\n\n \" Reset Loupe's 'incsearch' back to Vim default.\n set incsearch\u0026vim\n\n \" Remove unwanted 's' from 'shortmess'.\n set shortmess-=s\n```\n\n## Related\u003ca name=\"loupe-related\" href=\"#user-content-loupe-related\"\u003e\u003c/a\u003e\n\nJust as Loupe aims to improve the within-file search experience, Ferret does the same for multi-file searching and replacing:\n\n- https://github.com/wincent/ferret\n\n## Website\u003ca name=\"loupe-website\" href=\"#user-content-loupe-website\"\u003e\u003c/a\u003e\n\nSource code:\n\n- https://github.com/wincent/loupe\n\nOfficial releases are listed at:\n\n- http://www.vim.org/scripts/script.php?script_id=5215\n\n## License\u003ca name=\"loupe-license\" href=\"#user-content-loupe-license\"\u003e\u003c/a\u003e\n\nCopyright 2015-present Greg Hurrell. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \u0026quot;AS IS\u0026quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n## Development\u003ca name=\"loupe-development\" href=\"#user-content-loupe-development\"\u003e\u003c/a\u003e\n\n### Contributing patches\u003ca name=\"loupe-contributing-patches\" href=\"#user-content-loupe-contributing-patches\"\u003e\u003c/a\u003e\n\nPatches can be sent via mail to greg@hurrell.net, or as GitHub pull requests at: https://github.com/wincent/loupe/pulls\n\n### Cutting a new release\u003ca name=\"loupe-cutting-a-new-release\" href=\"#user-content-loupe-cutting-a-new-release\"\u003e\u003c/a\u003e\n\nAt the moment the release process is manual:\n\n- Perform final sanity checks and manual testing\n- Update the \u003cstrong\u003e[`loupe-history`](#user-content-loupe-history)\u003c/strong\u003e section of the documentation\n- Verify clean work tree:\n\n```\ngit status\n```\n\n- Tag the release:\n\n```\ngit tag -s -m \"$VERSION release\" $VERSION\n```\n\n- Publish the code:\n\n```\ngit push origin main --follow-tags\ngit push github main --follow-tags\n```\n\n- Produce the release archive:\n\n```\ngit archive -o loupe-$VERSION.zip HEAD -- .\n```\n\n- Upload to http://www.vim.org/scripts/script.php?script_id=5215\n\n## Authors\u003ca name=\"loupe-authors\" href=\"#user-content-loupe-authors\"\u003e\u003c/a\u003e\n\nLoupe is written and maintained by Greg Hurrell \u0026lt;greg@hurrell.net\u0026gt;.\n\nThe original idea for the \u003cstrong\u003e[`g:LoupeHighlightGroup`](#user-content-gloupehighlightgroup)\u003c/strong\u003e feature was taken from Damian Conway's Vim set-up:\n\n- https://github.com/thoughtstream/Damian-Conway-s-Vim-Setup/blob/master/plugin/hlnext.vim\n\nWhich he discussed in his \u0026quot;More Instantly Better Vim\u0026quot; presentation at OSCON 2013:\n\n- https://www.youtube.com/watch?v=aHm36-na4-4\n\n## History\u003ca name=\"loupe-history\" href=\"#user-content-loupe-history\"\u003e\u003c/a\u003e\n\n### main (not yet released)\u003ca name=\"loupe-main-not-yet-released\" href=\"#user-content-loupe-main-not-yet-released\"\u003e\u003c/a\u003e\n\n- Add \u003cstrong\u003e[`g:LoupeCaseSettingsAlways`](#user-content-gloupecasesettingsalways)\u003c/strong\u003e to make Vim respect \u003cstrong\u003e`'ignorecase'`\u003c/strong\u003e and \u003cstrong\u003e`'smartcase'`\u003c/strong\u003e settings while using \u003cstrong\u003e`star`\u003c/strong\u003e, \u003cstrong\u003e`gstar`\u003c/strong\u003e, \u003cstrong\u003e`#`\u003c/strong\u003e and \u003cstrong\u003e`g#`\u003c/strong\u003e.\n- Ensure that \u003cstrong\u003e[`g:LoupeVeryMagic`](#user-content-gloupeverymagic)\u003c/strong\u003e takes effect with longer-forms of the \u003cstrong\u003e`:global`\u003c/strong\u003e, \u003cstrong\u003e`:substitute`\u003c/strong\u003e and \u003cstrong\u003e`:vglobal`\u003c/strong\u003e commands.\n- Treat `:g!` as equivalent to `:v` (https://github.com/wincent/loupe/issues/20).\n\n### 1.2.2 (7 August 2018)\u003ca name=\"loupe-122-7-august-2018\" href=\"#user-content-loupe-122-7-august-2018\"\u003e\u003c/a\u003e\n\n- Fix error-handling to work regardless of \u003cstrong\u003e`'iskeyword'`\u003c/strong\u003e setting (https://github.com/wincent/loupe/pull/14).\n\n### 1.2.1 (13 July 2016)\u003ca name=\"loupe-121-13-july-2016\" href=\"#user-content-loupe-121-13-july-2016\"\u003e\u003c/a\u003e\n\n- Match default Vim behavior of opening folds when jumping to a match.\n\n### 1.2 (27 June 2016)\u003ca name=\"loupe-12-27-june-2016\" href=\"#user-content-loupe-12-27-june-2016\"\u003e\u003c/a\u003e\n\n- Suppress unwanted cursor movement after \u003cstrong\u003e[`\u003cPlug\u003e(LoupeClearHighlight)`](#user-content-plugloupeclearhighlight)\u003c/strong\u003e and when using \u003cstrong\u003e`:nohighlight`\u003c/strong\u003e.\n- Expose \u003cstrong\u003e[`loupe#hlmatch()`](#user-content-loupehlmatch)\u003c/strong\u003e (previously was a private function) for users who wish to do low-level intergration with other plug-ins.\n- Provide \u003cstrong\u003e`\u003cPlug\u003e`\u003c/strong\u003e mappings for \u003cstrong\u003e`star`\u003c/strong\u003e, \u003cstrong\u003e`#`\u003c/strong\u003e, \u003cstrong\u003e`n`\u003c/strong\u003e, \u003cstrong\u003e`N`\u003c/strong\u003e, \u003cstrong\u003e`gstar`\u003c/strong\u003e, \u003cstrong\u003e`g#`\u003c/strong\u003e (see \u003cstrong\u003e[`\u003cPlug\u003e(LoupeStar)`](#user-content-plugloupestar)\u003c/strong\u003e, \u003cstrong\u003e[`\u003cPlug\u003e(LoupeOctothorpe)`](#user-content-plugloupeoctothorpe)\u003c/strong\u003e, \u003cstrong\u003e[`\u003cPlug\u003e(Loupen)`](#user-content-plugloupen)\u003c/strong\u003e, \u003cstrong\u003e[`\u003cPlug\u003e(LoupeN)`](#user-content-plugloupen)\u003c/strong\u003e, \u003cstrong\u003e[`\u003cPlug\u003e(LoupeGStar)`](#user-content-plugloupegstar)\u003c/strong\u003e, \u003cstrong\u003e[`\u003cPlug\u003e(LoupeGOctothorpe)`](#user-content-plugloupegoctothorpe)\u003c/strong\u003e).\n\n### 1.1 (15 June 2016)\u003ca name=\"loupe-11-15-june-2016\" href=\"#user-content-loupe-11-15-june-2016\"\u003e\u003c/a\u003e\n\n- Make compatible with older versions of Vim that do not have \u003cstrong\u003e`v:hlsearch`\u003c/strong\u003e.\n- Add support for special delimiters with \u003cstrong\u003e`:substitute`\u003c/strong\u003e command.\n\n### 1.0 (28 December 2015)\u003ca name=\"loupe-10-28-december-2015\" href=\"#user-content-loupe-10-28-december-2015\"\u003e\u003c/a\u003e\n\n- Renamed the \u003cstrong\u003e`\u003cPlug\u003eLoupeClearHighlight`\u003c/strong\u003e mapping to \u003cstrong\u003e[`\u003cPlug\u003e(LoupeClearHighlight)`](#user-content-plugloupeclearhighlight)\u003c/strong\u003e.\n\n### 0.1 (5 July 2015)\u003ca name=\"loupe-01-5-july-2015\" href=\"#user-content-loupe-01-5-july-2015\"\u003e\u003c/a\u003e\n\n- Initial release, extracted from my dotfiles (https://github.com/wincent/wincent).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwincent%2Floupe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwincent%2Floupe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwincent%2Floupe/lists"}