Full Code of VSCodeVim/Vim for AI

master 1fe317a6552b cached
311 files
2.4 MB
646.5k tokens
2315 symbols
1 requests
Download .txt
Showing preview only (2,581K chars total). Download the full file or copy to clipboard to get everything.
Repository: VSCodeVim/Vim
Branch: master
Commit: 1fe317a6552b
Files: 311
Total size: 2.4 MB

Directory structure:
gitextract_6p9ldwqz/

├── .eslintrc.js
├── .github/
│   ├── CONTRIBUTING.md
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── copilot-instructions.md
│   └── workflows/
│       ├── build.yml
│       ├── pull_request.yml
│       └── release.yml
├── .gitignore
├── .husky/
│   ├── .gitignore
│   └── pre-commit
├── .prettierignore
├── .prettierrc
├── .vscode/
│   ├── extensions.json
│   ├── launch.json
│   ├── settings.json
│   └── tasks.json
├── .vscodeignore
├── .yarnrc
├── CHANGELOG.OLD.md
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── SECURITY.md
├── build/
│   └── Dockerfile
├── extension.ts
├── extensionBase.ts
├── extensionWeb.ts
├── gulpfile.js
├── language-configuration.json
├── package.json
├── renovate.json
├── src/
│   ├── actions/
│   │   ├── base.ts
│   │   ├── baseMotion.ts
│   │   ├── commands/
│   │   │   ├── actions.ts
│   │   │   ├── commandLine.ts
│   │   │   ├── digraphs.ts
│   │   │   ├── documentChange.ts
│   │   │   ├── file.ts
│   │   │   ├── fold.ts
│   │   │   ├── incrementDecrement.ts
│   │   │   ├── insert.ts
│   │   │   ├── join.ts
│   │   │   ├── macro.ts
│   │   │   ├── navigate.ts
│   │   │   ├── put.ts
│   │   │   ├── replace.ts
│   │   │   ├── scroll.ts
│   │   │   ├── search.ts
│   │   │   ├── undo.ts
│   │   │   ├── visual.ts
│   │   │   └── window.ts
│   │   ├── include-main.ts
│   │   ├── include-plugins.ts
│   │   ├── languages/
│   │   │   └── python/
│   │   │       └── motion.ts
│   │   ├── motion.ts
│   │   ├── operator.ts
│   │   ├── plugins/
│   │   │   ├── camelCaseMotion.ts
│   │   │   ├── easymotion/
│   │   │   │   ├── easymotion.cmd.ts
│   │   │   │   ├── easymotion.ts
│   │   │   │   ├── markerGenerator.ts
│   │   │   │   ├── registerMoveActions.ts
│   │   │   │   └── types.ts
│   │   │   ├── imswitcher.ts
│   │   │   ├── pluginDefaultMappings.ts
│   │   │   ├── replaceWithRegister.ts
│   │   │   ├── sneak.ts
│   │   │   ├── surround.ts
│   │   │   └── targets/
│   │   │       ├── lastNextObjectHelper.ts
│   │   │       ├── lastNextObjects.ts
│   │   │       ├── searchUtils.ts
│   │   │       ├── smartQuotes.ts
│   │   │       ├── smartQuotesMatcher.ts
│   │   │       ├── targets.ts
│   │   │       └── targetsConfig.ts
│   │   ├── types.d.ts
│   │   └── wrapping.ts
│   ├── cmd_line/
│   │   ├── commandLine.ts
│   │   └── commands/
│   │       ├── ascii.ts
│   │       ├── bang.ts
│   │       ├── breakpoints.ts
│   │       ├── bufferDelete.ts
│   │       ├── change.ts
│   │       ├── close.ts
│   │       ├── copy.ts
│   │       ├── delete.ts
│   │       ├── digraph.ts
│   │       ├── echo.ts
│   │       ├── eval.ts
│   │       ├── explore.ts
│   │       ├── file.ts
│   │       ├── fileInfo.ts
│   │       ├── goto.ts
│   │       ├── gotoLine.ts
│   │       ├── grep.ts
│   │       ├── history.ts
│   │       ├── jumps.ts
│   │       ├── leftRightCenter.ts
│   │       ├── let.ts
│   │       ├── marks.ts
│   │       ├── move.ts
│   │       ├── nohl.ts
│   │       ├── normal.ts
│   │       ├── only.ts
│   │       ├── print.ts
│   │       ├── put.ts
│   │       ├── pwd.ts
│   │       ├── quit.ts
│   │       ├── read.ts
│   │       ├── redo.ts
│   │       ├── register.ts
│   │       ├── retab.ts
│   │       ├── set.ts
│   │       ├── sh.ts
│   │       ├── shift.ts
│   │       ├── smile.ts
│   │       ├── sort.ts
│   │       ├── substitute.ts
│   │       ├── tab.ts
│   │       ├── terminal.ts
│   │       ├── undo.ts
│   │       ├── vscode.ts
│   │       ├── wall.ts
│   │       ├── write.ts
│   │       ├── writequit.ts
│   │       ├── writequitall.ts
│   │       └── yank.ts
│   ├── common/
│   │   ├── matching/
│   │   │   ├── matcher.ts
│   │   │   ├── quoteMatcher.ts
│   │   │   └── tagMatcher.ts
│   │   ├── motion/
│   │   │   ├── cursor.ts
│   │   │   └── position.ts
│   │   └── number/
│   │       └── numericString.ts
│   ├── completion/
│   │   └── lineCompletionProvider.ts
│   ├── configuration/
│   │   ├── configuration.ts
│   │   ├── configurationValidator.ts
│   │   ├── decoration.ts
│   │   ├── iconfiguration.ts
│   │   ├── iconfigurationValidator.ts
│   │   ├── langmap.ts
│   │   ├── notation.ts
│   │   ├── remapper.ts
│   │   ├── validators/
│   │   │   ├── inputMethodSwitcherValidator.ts
│   │   │   ├── neovimValidator.ts
│   │   │   ├── remappingValidator.ts
│   │   │   └── vimrcValidator.ts
│   │   ├── vimrc.ts
│   │   └── vimrcKeyRemappingBuilder.ts
│   ├── error.ts
│   ├── globals.ts
│   ├── history/
│   │   ├── historyFile.ts
│   │   └── historyTracker.ts
│   ├── jumps/
│   │   ├── jump.ts
│   │   └── jumpTracker.ts
│   ├── mode/
│   │   ├── internalSelectionsTracker.ts
│   │   ├── mode.ts
│   │   ├── modeData.ts
│   │   ├── modeHandler.ts
│   │   └── modeHandlerMap.ts
│   ├── neovim/
│   │   └── neovim.ts
│   ├── platform/
│   │   ├── browser/
│   │   │   ├── constants.ts
│   │   │   ├── fs.ts
│   │   │   └── history.ts
│   │   └── node/
│   │       ├── constants.ts
│   │       ├── fs.ts
│   │       └── history.ts
│   ├── register/
│   │   └── register.ts
│   ├── state/
│   │   ├── compositionState.ts
│   │   ├── globalState.ts
│   │   ├── recordedState.ts
│   │   ├── remapState.ts
│   │   ├── replaceState.ts
│   │   ├── searchState.ts
│   │   ├── substituteState.ts
│   │   └── vimState.ts
│   ├── statusBar.ts
│   ├── taskQueue.ts
│   ├── textEditor.ts
│   ├── textobject/
│   │   ├── paragraph.ts
│   │   ├── sentence.ts
│   │   ├── textobject.ts
│   │   ├── util.ts
│   │   └── word.ts
│   ├── transformations/
│   │   ├── execute.ts
│   │   ├── transformations.ts
│   │   └── transformer.ts
│   ├── util/
│   │   ├── child_process.ts
│   │   ├── clipboard.ts
│   │   ├── decorationUtils.ts
│   │   ├── externalCommand.ts
│   │   ├── logger.ts
│   │   ├── os.ts
│   │   ├── path.ts
│   │   ├── selections.ts
│   │   ├── specialKeys.ts
│   │   ├── statusBarTextUtils.ts
│   │   ├── util.ts
│   │   └── vscodeContext.ts
│   └── vimscript/
│       ├── exCommand.ts
│       ├── exCommandParser.ts
│       ├── expression/
│       │   ├── build.ts
│       │   ├── displayValue.ts
│       │   ├── evaluate.ts
│       │   ├── parser.ts
│       │   └── types.ts
│       ├── lineRange.ts
│       ├── parserUtils.ts
│       └── pattern.ts
├── syntaxes/
│   └── vimscript.tmLanguage.json
├── test/
│   ├── actions/
│   │   ├── baseAction.test.ts
│   │   ├── insertLine.test.ts
│   │   ├── languages/
│   │   │   └── python/
│   │   │       └── motion.test.ts
│   │   └── markMovement.test.ts
│   ├── cmd_line/
│   │   ├── bang.test.ts
│   │   ├── breakpoints.test.ts
│   │   ├── bufferDelete.test.ts
│   │   ├── change.test.ts
│   │   ├── command.test.ts
│   │   ├── cursorLocation.test.ts
│   │   ├── delete.test.ts
│   │   ├── grep.test.ts
│   │   ├── historyFile.test.ts
│   │   ├── move.test.ts
│   │   ├── normal.test.ts
│   │   ├── only.test.ts
│   │   ├── put.test.ts
│   │   ├── redo.test.ts
│   │   ├── retab.test.ts
│   │   ├── smile.test.ts
│   │   ├── sort.test.ts
│   │   ├── split.test.ts
│   │   ├── substitute.test.ts
│   │   ├── tab.test.ts
│   │   ├── tabCompletion.test.ts
│   │   ├── undo.test.ts
│   │   ├── vsplit.test.ts
│   │   ├── write.test.ts
│   │   ├── writequit.test.ts
│   │   └── yank.test.ts
│   ├── completion/
│   │   └── lineCompletion.test.ts
│   ├── configuration/
│   │   ├── configuration.test.ts
│   │   ├── langmap.test.ts
│   │   ├── notation.test.ts
│   │   ├── remapper.test.ts
│   │   ├── remaps.test.ts
│   │   ├── validators/
│   │   │   ├── neovimValidator.test.ts
│   │   │   └── remappingValidator.test.ts
│   │   ├── vimrc.test.ts
│   │   └── vimrcKeyRemappingBuilder.test.ts
│   ├── extension.test.ts
│   ├── historyTracker.test.ts
│   ├── index.ts
│   ├── jumpTracker.test.ts
│   ├── macro.test.ts
│   ├── marks.test.ts
│   ├── mode/
│   │   ├── modeHandler.test.ts
│   │   ├── modeInsert.test.ts
│   │   ├── modeNormal.test.ts
│   │   ├── modeReplace.test.ts
│   │   ├── modeVisual.test.ts
│   │   ├── modeVisualBlock.test.ts
│   │   ├── modeVisualLine.test.ts
│   │   └── normalModeTests/
│   │       ├── commands.test.ts
│   │       ├── dot.test.ts
│   │       ├── matchingBracket.test.ts
│   │       ├── motionMatchpairs.test.ts
│   │       ├── motions.test.ts
│   │       └── undo.test.ts
│   ├── motion.test.ts
│   ├── motionLineWrapping.test.ts
│   ├── multicursor.test.ts
│   ├── number/
│   │   ├── incrementDecrement.test.ts
│   │   └── numericString.test.ts
│   ├── operator/
│   │   ├── comment.test.ts
│   │   ├── filter.test.ts
│   │   ├── format.test.ts
│   │   ├── put.test.ts
│   │   ├── rot13.test.ts
│   │   ├── shift.test.ts
│   │   └── surrogate.test.ts
│   ├── plugins/
│   │   ├── camelCaseMotion.test.ts
│   │   ├── easymotion.test.ts
│   │   ├── imswitcher.test.ts
│   │   ├── lastNextObject.test.ts
│   │   ├── replaceWithRegister.test.ts
│   │   ├── smartQuotes.test.ts
│   │   ├── sneak.test.ts
│   │   └── surround.test.ts
│   ├── register/
│   │   ├── register.test.ts
│   │   └── repeatableMovement.test.ts
│   ├── runTest.ts
│   ├── search/
│   │   ├── motionIncSearch.test.ts
│   │   ├── search.test.ts
│   │   └── searchTextObject.test.ts
│   ├── sentenceMotion.test.ts
│   ├── state/
│   │   └── vimState.test.ts
│   ├── testConfiguration.ts
│   ├── testSimplifier.ts
│   ├── testUtils.ts
│   ├── util/
│   │   └── path.test.ts
│   └── vimscript/
│       ├── exCommandParse.test.ts
│       ├── expression.test.ts
│       ├── lineRangeParse.test.ts
│       ├── lineRangeResolve.test.ts
│       └── searchOffset.test.ts
├── tsconfig.json
├── webpack.config.js
└── webpack.dev.js

================================================
FILE CONTENTS
================================================

================================================
FILE: .eslintrc.js
================================================
module.exports = {
  env: {
    es6: true,
    node: true,
  },
  extends: [
    'plugin:@typescript-eslint/recommended',
    'plugin:@typescript-eslint/recommended-requiring-type-checking',
    'prettier',
  ],
  parser: '@typescript-eslint/parser',
  parserOptions: {
    project: 'tsconfig.json',
    sourceType: 'module',
  },
  plugins: ['eslint-plugin-jsdoc', 'eslint-plugin-prefer-arrow', '@typescript-eslint'],
  root: true,
  ignorePatterns: ['*.js'],
  rules: {
    '@typescript-eslint/adjacent-overload-signatures': 'error',
    '@typescript-eslint/array-type': [
      'error',
      {
        default: 'array-simple',
      },
    ],
    '@typescript-eslint/await-thenable': 'error',
    '@typescript-eslint/ban-ts-comment': 'error',
    '@typescript-eslint/consistent-type-assertions': 'error',
    '@typescript-eslint/dot-notation': 'error',
    '@typescript-eslint/explicit-function-return-type': 'off',
    '@typescript-eslint/explicit-module-boundary-types': 'off',
    '@typescript-eslint/naming-convention': [
      'error',
      {
        selector: 'variable',
        format: ['camelCase', 'UPPER_CASE', 'PascalCase'],
        leadingUnderscore: 'allow',
        trailingUnderscore: 'forbid',
      },
    ],
    '@typescript-eslint/no-array-constructor': 'error',
    // ignore the rule to conform to current code
    '@typescript-eslint/no-base-to-string': 'off',
    '@typescript-eslint/no-duplicate-enum-values': 'error',
    '@typescript-eslint/no-duplicate-type-constituents': 'error',
    '@typescript-eslint/no-empty-function': 'error',
    '@typescript-eslint/no-empty-interface': 'error',
    // ignore the rule to conform to current code
    '@typescript-eslint/no-explicit-any': 'off',
    '@typescript-eslint/no-extra-non-null-assertion': 'error',
    '@typescript-eslint/no-floating-promises': 'error',
    '@typescript-eslint/no-for-in-array': 'error',
    '@typescript-eslint/no-implied-eval': 'error',
    '@typescript-eslint/no-loss-of-precision': 'error',
    '@typescript-eslint/no-misused-new': 'error',
    '@typescript-eslint/no-misused-promises': [
      'error',
      {
        checksVoidReturn: false, // TODO
      },
    ],
    '@typescript-eslint/no-namespace': 'error',
    '@typescript-eslint/no-non-null-asserted-optional-chain': 'error',
    '@typescript-eslint/parameter-properties': 'error',
    '@typescript-eslint/no-redundant-type-constituents': 'error',
    '@typescript-eslint/no-shadow': [
      'error',
      {
        hoist: 'all',
      },
    ],
    '@typescript-eslint/no-this-alias': 'error',
    '@typescript-eslint/no-unnecessary-type-assertion': 'error',
    '@typescript-eslint/no-unnecessary-type-constraint': 'error',
    '@typescript-eslint/no-unsafe-argument': 'error',
    '@typescript-eslint/no-unsafe-assignment': 'error',
    '@typescript-eslint/no-unsafe-call': 'error',
    '@typescript-eslint/no-unsafe-declaration-merging': 'error',
    '@typescript-eslint/no-unsafe-member-access': 'error',
    '@typescript-eslint/no-unsafe-return': 'error',
    '@typescript-eslint/no-unused-expressions': 'error',
    '@typescript-eslint/no-unused-vars': 'off',
    '@typescript-eslint/no-use-before-define': 'off',
    '@typescript-eslint/no-var-requires': 'error',
    '@typescript-eslint/prefer-as-const': 'error',
    '@typescript-eslint/prefer-for-of': 'error',
    '@typescript-eslint/prefer-function-type': 'error',
    '@typescript-eslint/prefer-namespace-keyword': 'error',
    // ignore the rule to conform to current code
    '@typescript-eslint/require-await': 'off',
    '@typescript-eslint/restrict-plus-operands': 'error',
    // ignore the rule to conform to current code
    '@typescript-eslint/restrict-template-expressions': 'off',
    '@typescript-eslint/triple-slash-reference': [
      'error',
      {
        path: 'always',
        types: 'prefer-import',
        lib: 'always',
      },
    ],
    '@typescript-eslint/typedef': 'off',
    '@typescript-eslint/unbound-method': 'error',
    '@typescript-eslint/unified-signatures': 'error',
    complexity: 'off',
    'constructor-super': 'error',
    'dot-notation': 'off',
    eqeqeq: ['error', 'smart'],
    'guard-for-in': 'error',
    'id-denylist': [
      'error',
      'any',
      'Number',
      'number',
      'String',
      'string',
      'Boolean',
      'boolean',
      'Undefined',
      'undefined',
    ],
    'id-match': 'error',
    'jsdoc/check-alignment': 'error',
    // ignore the rule to conform to current code
    'jsdoc/check-indentation': 'off',
    'max-classes-per-file': 'off',
    'new-parens': 'error',
    'no-array-constructor': 'off',
    'no-bitwise': 'error',
    'no-caller': 'error',
    'no-cond-assign': 'error',
    'no-console': [
      'error',
      {
        allow: [
          'log',
          'warn',
          'dir',
          'timeLog',
          'assert',
          'clear',
          'count',
          'countReset',
          'group',
          'groupEnd',
          'table',
          'dirxml',
          'error',
          'groupCollapsed',
          'Console',
          'profile',
          'profileEnd',
          'timeStamp',
          'context',
        ],
      },
    ],
    'no-debugger': 'error',
    'no-empty': 'error',
    'no-empty-function': 'off',
    'no-eval': 'error',
    'no-fallthrough': 'error',
    'no-implied-eval': 'off',
    'no-invalid-this': 'off',
    'no-loss-of-precision': 'off',
    'no-new-wrappers': 'error',
    'no-return-await': 'error',
    'no-shadow': 'off',
    'no-throw-literal': 'error',
    'no-trailing-spaces': 'error',
    'no-undef-init': 'error',
    'no-underscore-dangle': 'off',
    'no-unsafe-finally': 'error',
    'no-unused-expressions': 'off',
    'no-unused-labels': 'error',
    'no-unused-vars': 'off',
    'no-use-before-define': 'off',
    'no-var': 'error',
    'object-shorthand': 'error',
    'one-var': ['error', 'never'],
    'prefer-arrow/prefer-arrow-functions': [
      'error',
      {
        allowStandaloneDeclarations: true,
      },
    ],
    'prefer-const': [
      'error',
      {
        destructuring: 'all',
      },
    ],
    radix: 'error',
    'require-await': 'off',
    'spaced-comment': [
      'error',
      'always',
      {
        markers: ['/'],
      },
    ],
    'use-isnan': 'error',
    'valid-typeof': 'off',
  },
};


================================================
FILE: .github/CONTRIBUTING.md
================================================
# Contribution Guide

This document offers a set of guidelines for contributing to VSCodeVim.
These are just guidelines, not rules; use your best judgment and feel free to propose changes to this document.
If you need help, drop by on [GitHub Discussions](https://github.com/VSCodeVim/Vim/discussions) or [Slack](https://vscodevim.slack.com/).

Thanks for helping us in making VSCodeVim better! :clap:

## Submitting Issues

The [GitHub issue tracker](https://github.com/VSCodeVim/Vim/issues) is the preferred channel for tracking bugs and enhancement suggestions.
When creating a new bug report do:

- Search against existing issues to check if somebody else has already reported your problem or requested your idea
- Fill out the issue template.

### Improve Existing Issues

- Try to replicate bugs and describe the method if you're able to.
- Search for [duplicate issues](https://github.com/VSCodeVim/Vim/issues?q=is%3Aissue+is%3Aopen+cursor). See which thread(s) are more mature, and recommend the duplicate be closed, or just provide links to related issues.
- Find [old issues](https://github.com/VSCodeVim/Vim/issues?page=25&q=is%3Aissue+is%3Aopen) and test them in the latest version of VSCodeVim. If the issue has been resolved, comment & recommend OP to close (or provide more information if not resolved).
- Give thumbs up / thumbs down to existing issues, to indicate your support (or not)

## Submitting Pull Requests

Pull requests are _awesome_.
If you're looking to raise a PR for something which doesn't have an open issue, consider creating an issue first.

When submitting a PR, please fill out the template that is presented by GitHub when a PR is opened.

## First Time Setup

1. Install prerequisites:
   - [Visual Studio Code](https://code.visualstudio.com/), latest stable or insiders
   - [Node.js](https://nodejs.org/) v22.x or higher
   - [Yarn](https://classic.yarnpkg.com/) v1.x
   - _Optional_: [Docker Community Edition](https://store.docker.com/search?type=edition&offering=community) 🐋

2. Fork and clone repository:

   ```bash
   git clone git@github.com:<YOUR-FORK>/Vim.git
   cd Vim
   ```

3. Build extension:

   ```bash
   # Install the dependencies
   yarn install

   # Open in VS Code
   code .

   # Build with one of these...
   yarn build-dev # Fast build for development
   yarn build     # Slow build for release
   yarn watch     # Fast build whenever a file changes
   ```

4. Run extension using VS Code's "Run and Debug" menu

5. Run tests:

   ```bash
   # If Docker is installed and running:
   npx gulp test                 # Run tests inside Docker container
   npx gulp test --grep <REGEX>  # Run only tests/suites matching <REGEX> inside Docker container

   # Otherwise, build and run the tests locally:
   yarn build                    # Build
   yarn build-test               # Build tests
   yarn test                     # Test (must close all instances of VS Code)
   ```

6. Package and install extension:

   ```bash
   # Package extension into `vim-<MAJOR>.<MINOR>.<PATCH>.vsix`
   # (This can be opened and inspected like a .zip file)
   yarn package

   # Install packaged extension to your local VS Code installation
   code --install-extension vim-<MAJOR>.<MINOR>.<PATCH>.vsix --force
   ```

## Code Architecture

The code is split into two parts:

- ModeHandler - Vim state machine
- Actions - 'actions' which modify the state

### Actions

Actions are all currently stuffed into actions.ts (sorry!). There are:

- `BaseAction` - the base Action type that all Actions derive from.
- `BaseMovement` - A movement (e.g.`w`, `h`, `{`, etc.) _ONLY_ updates the cursor position or returns an `IMovement`, which indicates a start and stop. This is used for movements like `aw` which may actually start before the cursor.
- `BaseCommand` - Anything which is not just a movement is a Command. That includes motions which also update the state of Vim in some way, like `*`.

Actions should, when possible, avoid side effects other than modifying `vimState`.

### The Vim State Machine

Consists of two data structures:

- `VimState` - this is the state of Vim, scoped to a `TextEditor`. It's what actions update.
- `RecordedState` - this is temporary state that will reset at the end of a change.

#### How it works

1. `handleKeyEventHelper` is called with the most recent keypress.
2. `Actions.getRelevantAction` determines if all the keys pressed so far uniquely specify any action in actions.ts. If not, we continue waiting for keypresses.
3. `runAction` runs the action that was matched. Movements, Commands and Operators all have separate functions that dictate how to run them - `executeMovement`, `handleCommand`, and `executeOperator` respectively.
4. Now that we've updated `VimState`, we run `updateView` with the new VimState to "redraw" VS Code to the new state.

#### `vscode.window.onDidChangeTextEditorSelection`

This is my hack to simulate a click event based API in an IDE that doesn't have them (yet?). I check the selection that just came in to see if it's the same as what I thought I previously set the selection to the last time the state machine updated. If it's not, the user _probably_ clicked. (But she also could have tab completed!)

## Release

Before you push a release, be sure to make sure the changelog is updated!

To push a release:

```bash
npx gulp release --semver [SEMVER]
git push --follow-tags
```

The above Gulp command will:

1. Bump the package version based off the semver supplied. Supported values: patch, minor, major.
2. Create a Git commit with the above changes.
3. Create a Git tag using the new package version.

In addition to building and testing the extension, when a tag is applied to the commit, the CI server will also create a GitHub release and publish the new version to the Visual Studio marketplace.

## Troubleshooting

### VS Code Slowdown

If you notice a slowdown and have ever run `yarn test` in the past instead of running tests through VSCode, you might find a `.vscode-test/` folder, which VSCode is continually consuming CPU cycles to index. Long story short, you can speed up VSCode by:

```bash
rm -rf .vscode-test/
```


================================================
FILE: .github/FUNDING.yml
================================================
github: [J-Fields]


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:

1.  Go to '...'
2.  Click on '....'
3.  Scroll down to '....'
4.  See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.
If remapping-related, please attach log output: https://github.com/VSCodeVim/Vim#debugging-remappings.

**Environment (please complete the following information):**

<!--
Ensure you are on the latest VSCode + VSCodeVim
You can use "Report Issue" by running "Developer: Show Running Extensions" from the Command Palette to prefill these.
-->

- Extension (VsCodeVim) version:
- VSCode version:
- OS:

**Additional context**
Add any other context about the problem here.


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--
Yay! Thanks for sending us a PR! 🎊

Please ensure your PR adheres to:

- [ ] Commit messages has a short & issue references when necessary
- [ ] Each commit does a logical chunk of work.
- [ ] It builds and tests pass (e.g `gulp`)
-->

**What this PR does / why we need it**:

**Which issue(s) this PR fixes**

<!--
Commits in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)
-->

**Special notes for your reviewer**:


================================================
FILE: .github/copilot-instructions.md
================================================
# Copilot Instructions for VSCodeVim

## Project Overview

- **VSCodeVim** is a complex VS Code extension that emulates Vim behavior within VS Code. It is written in TypeScript and targets both desktop and web environments.
- The codebase is organized by Vim concepts: actions, motions, operators, modes, state, configuration, and plugin emulation. See `src/` for main logic, with subfolders for each concept.
- The extension supports advanced features like `.vimrc` parsing, Neovim integration, multi-cursor, and emulated Vim plugins (see `README.md` for the full list).

## Key Architectural Patterns

- **Mode Handler:** Each open document is managed by a `ModeHandler` (`src/mode/`), which can be compared to an instance of Vim. State transitions and command dispatch are centralized here.
- **State Management:** Each `ModeHandler` has a `VimState` (`src/state/vimState.ts`) which tracks the current mode, cursor, registers, and more. State is passed through most command flows.
- **Action/Motion/Operator Classes:** User input is parsed into actions, motions, and operators (see `src/actions/`). These are composed to implement Vim commands.
- **Configuration:** Settings are loaded from VS Code config, `.vimrc`, and defaults, in that order. See `src/configuration/` and `README.md` for details.
- **Plugin Emulation:** Many Vim plugins are emulated natively (see `src/actions/plugins/` and `README.md` > Emulated Plugins).
- **Neovim Integration:** If enabled, some Ex-commands are delegated to a Neovim process (`src/neovim/`).

## Developer Workflows

- **Build:** Use `yarn build-dev` (or the VS Code task) to build the extension. See `package.json` and `gulpfile.js` for all tasks.
- **Test:** Run tests with `yarn build-test` then `yarn test`. Tests are in `test/` and mirror the structure of `src/`.
- **Debug:** Launch the extension in the Extension Development Host via VS Code's debugger. Use breakpoints in TypeScript files.
- **Release:** Versioning and release tasks are managed via Gulp (`gulpfile.js`).

## Project-Specific Conventions

- **Remapping:** Key remapping is handled via configuration and `.vimrc`. Only remaps are supported in `.vimrc` (see `README.md`).
- **Settings Precedence:** Settings are loaded in this order: Ex-commands, user/workspace settings, VS Code settings, then defaults.
- **Plugin Emulation:** Emulated plugins are implemented as native TypeScript, not as Vimscript or external scripts.
- **Testing:** Tests are colocated with the feature under test (e.g., `test/actions/`, `test/mode/`).
- **Cross-Platform:** Some features (e.g., input method switching) require platform-specific configuration (see `README.md`).

## Integration Points

- **VS Code API:** Extension entry point is `extension.ts`. All VS Code API usage is centralized here and in `extensionBase.ts`/`extensionWeb.ts`.
- **Neovim:** Integration is optional and controlled by settings. See `src/neovim/`.
- **Status Bar:** Status bar updates are handled in `src/statusBar.ts`.

## References

- See `README.md` for user-facing documentation, settings, and plugin support.
- See `gulpfile.js` for build/test/release automation.
- See `src/` for main extension logic, organized by Vim concept.
- See `test/` for tests, which mirror the structure of `src/`.

---

If you are unsure about a pattern or workflow, check the `README.md` or the relevant subdirectory in `src/` or `test/`. For new features, follow the structure and conventions of existing code.


================================================
FILE: .github/workflows/build.yml
================================================
name: build

on:
  push:
    branches:
      - 'master'

jobs:
  build:
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - name: Checkout VSCodeVim
        uses: actions/checkout@v6

      - name: Set up Node.js
        uses: actions/setup-node@v6
        with:
          node-version: 22
          cache: yarn

      - name: Install dependencies
        run: yarn install --frozen-lockfile

      - name: Prettier
        if: matrix.os != 'windows-latest'
        run: yarn prettier:check

      - name: Lint
        if: matrix.os != 'windows-latest'
        run: yarn lint

      - name: Build
        run: yarn build

      - name: Test on ubuntu-latest
        if: matrix.os != 'windows-latest'
        run: |
          yarn build-test
          xvfb-run -a yarn test

      - name: Test on windows-latest
        if: matrix.os == 'windows-latest'
        run: |
          yarn build-test
          yarn test


================================================
FILE: .github/workflows/pull_request.yml
================================================
name: Pull Request

on:
  pull_request:
    branches:
      - '**'

jobs:
  build:
    strategy:
      matrix:
        os: [ubuntu-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - name: Checkout VSCodeVim
        uses: actions/checkout@v6

      - name: Set up Node.js
        uses: actions/setup-node@v6
        with:
          node-version: 22
          cache: yarn

      - name: Install dependencies
        run: yarn install --frozen-lockfile

      - name: Prettier
        run: yarn prettier:check

      - name: Lint
        run: yarn lint

      - name: Build
        run: yarn build

      - name: Test
        run: |
          yarn build-test
          xvfb-run -a yarn test


================================================
FILE: .github/workflows/release.yml
================================================
name: Release

on:
  push:
    tags:
      - v1.[0-9]+.[0-9]+

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout VSCodeVim
        uses: actions/checkout@v6

      - name: Set up Node.js
        uses: actions/setup-node@v6
        with:
          node-version: 22
          cache: yarn

      - name: Install dependencies
        run: yarn install --frozen-lockfile

      - name: Lint
        run: yarn lint

      - name: Build
        run: yarn build

      - name: Test
        run: |
          yarn build-test
          xvfb-run -a yarn test

      - name: Build extension package
        id: build_vsix
        run: |
          yarn package;
          echo ::set-output name=vsix_path::$(ls *.vsix);

      - name: Create release on GitHub
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: ${{ github.ref }}
          draft: false
          prerelease: false

      - name: Upload .vsix as release asset to GitHub
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: ${{ steps.build_vsix.outputs.vsix_path }}
          asset_name: ${{ steps.build_vsix.outputs.vsix_path }}
          asset_content_type: application/zip

      - name: Publish to VSCode Extension Marketplace
        run: yarn run vsce publish --yarn
        env:
          VSCE_PAT: ${{ secrets.VSCE_PAT }}

      - name: Publish to Open VSX Registry
        uses: HaaLeo/publish-vscode-extension@v1
        id: publishToOpenVSX
        with:
          pat: ${{ secrets.OPEN_VSX_TOKEN }}


================================================
FILE: .gitignore
================================================
out
testing
node_modules
*.sw?
.vscode-test
.DS_Store
*.vsix
*.log
.cache

typings/*
!typings/custom/
testing


================================================
FILE: .husky/.gitignore
================================================
_


================================================
FILE: .husky/pre-commit
================================================
npx lint-staged


================================================
FILE: .prettierignore
================================================
.vscode-test
out

================================================
FILE: .prettierrc
================================================
{
  "printWidth": 100,
  "singleQuote": true,
  "plugins": ["prettier-plugin-organize-imports"]
}


================================================
FILE: .vscode/extensions.json
================================================
{
  // See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations.
  // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp

  // List of extensions which should be recommended for users of this workspace.
  "recommendations": ["esbenp.prettier-vscode", "dbaeumer.vscode-eslint"],
  // List of extensions recommended by VS Code that should not be recommended for users of this workspace.
  "unwantedRecommendations": []
}


================================================
FILE: .vscode/launch.json
================================================
// A launch configuration that compiles the extension and then opens it inside a new window
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Build, Run Extension",
      "type": "extensionHost",
      "request": "launch",
      "runtimeExecutable": "${execPath}",
      "args": ["--extensionDevelopmentPath=${workspaceRoot}"],
      "stopOnEntry": false,
      "sourceMaps": true,
      "outFiles": ["${workspaceRoot}/{out, node_modules}/**/*.js"],
      "preLaunchTask": "gulp: build-dev",
      "internalConsoleOptions": "openOnSessionStart"
    },
    {
      "name": "Run Extension",
      "type": "extensionHost",
      "request": "launch",
      "runtimeExecutable": "${execPath}",
      "args": ["--extensionDevelopmentPath=${workspaceRoot}"],
      "stopOnEntry": false,
      "sourceMaps": true,
      "outFiles": ["${workspaceRoot}/{out, node_modules}/**/*.js"]
    },
    {
      "name": "Run Tests",
      "type": "extensionHost",
      "request": "launch",
      "runtimeExecutable": "${execPath}",
      "args": [
        "--extensionDevelopmentPath=${workspaceRoot}",
        "--extensionTestsPath=${workspaceRoot}/out/test"
      ],
      "stopOnEntry": false,
      "sourceMaps": true,
      "outFiles": ["${workspaceRoot}/{out, node_modules}/**/*.js"],
      "preLaunchTask": "gulp: prepare-test",
      "internalConsoleOptions": "openOnSessionStart"
    },
    {
      "name": "Run Web Extension",
      "type": "pwa-extensionHost",
      "debugWebWorkerHost": true,
      "request": "launch",
      "args": ["--extensionDevelopmentPath=${workspaceRoot}", "--extensionDevelopmentKind=web"],
      "outFiles": ["${workspaceRoot}/{out, node_modules}/**/*.js"]
    }
  ]
}


================================================
FILE: .vscode/settings.json
================================================
{
  "files.trimTrailingWhitespace": true,
  "files.exclude": {
    "out": false // set this to true to hide the "out" folder with the compiled JS files
  },
  "search.exclude": {
    "out": true // set this to false to include "out" folder in search results
  },
  "typescript.tsdk": "./node_modules/typescript/lib", // we want to use the TS server from our node_modules folder to control its version
  "editor.tabSize": 2,
  "editor.insertSpaces": true
}


================================================
FILE: .vscode/tasks.json
================================================
// Available variables which can be used inside of strings.
// ${workspaceRoot}: the root folder of the team
// ${file}: the current opened file
// ${fileBasename}: the current opened file's basename
// ${fileDirname}: the current opened file's dirname
// ${fileExtname}: the current opened file's extension
// ${cwd}: the current working directory of the spawned process
{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "gulp",
      "task": "default",
      "problemMatcher": "$tsc-watch"
    },
    {
      "type": "gulp",
      "task": "build-dev",
      "problemMatcher": []
    },
    {
      "type": "gulp",
      "task": "prepare-test",
      "problemMatcher": []
    }
  ]
}


================================================
FILE: .vscodeignore
================================================
.github/**
.husky/**
.yarn/**
.vscode/**
.vscode-test/**

**/*.ts
*.yml

src/**
build/**
test/**
typings/**
out/src/**
out/test/**
out/*.map
node_modules/**
images/design/**

.gitignore
.prettierignore

tsconfig.json
webpack.*.js
gulpfile.js
renovate.json


================================================
FILE: .yarnrc
================================================
ignore-engines true

================================================
FILE: CHANGELOG.OLD.md
================================================
# Change Log

## **_NOTE: For versions 1.23.0 and newer, include the lastest changes; please see [CHANGELOG.md](CHANGELOG.md)._**

## [v1.22.2](https://github.com/vscodevim/vim/tree/v1.22.2) (2022-02-18)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.22.1...v1.22.2)

**Fixed Bugs:**

- Failed to handle key `j`: Cannot read property 'substring' of undefined [\#7512](https://github.com/VSCodeVim/Vim/issues/7512)
- 1.22 broken for browser [\#7469](https://github.com/VSCodeVim/Vim/issues/7469)
- Tab completion of file names should be case insensitive on Windows [\#7160](https://github.com/VSCodeVim/Vim/issues/7160)

**Merged pull requests:**

- Fix extension for web [\#7520](https://github.com/VSCodeVim/Vim/pull/7520) ([jeanp413](https://github.com/jeanp413))
- fix bugs with: Failed to handle key ... Cannot read property 'substring' of undefined [\#7513](https://github.com/VSCodeVim/Vim/pull/7513) ([elazarcoh](https://github.com/elazarcoh))
- Tab completion of file names is case insensitive on Windows [\#7471](https://github.com/VSCodeVim/Vim/pull/7471) ([elazarcoh](https://github.com/elazarcoh))

## [v1.22.1](https://github.com/vscodevim/vim/tree/v1.22.1) (2022-02-08)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.22.0...v1.22.1)

**Fixed Bugs:**

- `\#` does not work with `visualstar` enabled [\#7463](https://github.com/VSCodeVim/Vim/issues/7463)
- `\*` does not reliably update search highlights [\#7462](https://github.com/VSCodeVim/Vim/issues/7462)

**Merged pull requests:**

- Added documentation for complex keyboard shortcuts [\#6944](https://github.com/VSCodeVim/Vim/pull/6944) ([w-cantin](https://github.com/w-cantin))

## [v1.22.0](https://github.com/vscodevim/vim/tree/v1.22.0) (2022-02-07)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.21.10...v1.22.0)

**Enhancements:**

- Vim filter with WSL2 is unavailable [\#7100](https://github.com/VSCodeVim/Vim/issues/7100)

**Fixed Bugs:**

- `O` does not properly preserve indentation [\#7423](https://github.com/VSCodeVim/Vim/issues/7423)
- `:marks` to list marks doesn't work [\#7367](https://github.com/VSCodeVim/Vim/issues/7367)
- `cgn` fails when the match is one character long [\#7291](https://github.com/VSCodeVim/Vim/issues/7291)
- Notebook-cells duplicate marks [\#7280](https://github.com/VSCodeVim/Vim/issues/7280)
- Command line `move` command throws `E488: Trailing characters` [\#7207](https://github.com/VSCodeVim/Vim/issues/7207)
- Opening search in multiple editors leads to invalid state [\#7038](https://github.com/VSCodeVim/Vim/issues/7038)
- `:s` does not properly handle capture groups \(`\0`, `\1`, ...\) [\#6963](https://github.com/VSCodeVim/Vim/issues/6963)
- Undo doesn't work in Notebook Cell [\#6960](https://github.com/VSCodeVim/Vim/issues/6960)
- Cannot paste with `\<D-v\>` in command-line mode on OSX. Works with `\<C-v\>` [\#6922](https://github.com/VSCodeVim/Vim/issues/6922)
- Exclude `:w`, `:q`, and `:wq` from dot command [\#6829](https://github.com/VSCodeVim/Vim/issues/6829)

**Closed issues:**

- why sneak doesn't highlight matching results using different characters as expected? [\#7429](https://github.com/VSCodeVim/Vim/issues/7429)
- gh to show variable value in debug mode [\#7409](https://github.com/VSCodeVim/Vim/issues/7409)
- Vimrc file won't reload after saving file with vimrcPath's home environment variable [\#7359](https://github.com/VSCodeVim/Vim/issues/7359)
- vim.editVimrc command failed with vimrcPath's home environment variable [\#7358](https://github.com/VSCodeVim/Vim/issues/7358)
- Keep selection when copying text [\#7352](https://github.com/VSCodeVim/Vim/issues/7352)
- Type lower case "j" in insert mode has strange cursor behavior. [\#7351](https://github.com/VSCodeVim/Vim/issues/7351)
- `vim.mode == 'Normal'` in key binding is triggering in replace mode [\#7256](https://github.com/VSCodeVim/Vim/issues/7256)
- Use a separate color for the current match while searching [\#7212](https://github.com/VSCodeVim/Vim/issues/7212)
- Can't install in Azure Data Studio from VSIX package [\#7079](https://github.com/VSCodeVim/Vim/issues/7079)

**Merged pull requests:**

- Fixed a bug where insertLineAbove would leave extra whitespace. [\#7450](https://github.com/VSCodeVim/Vim/pull/7450) ([half-potato](https://github.com/half-potato))
- add sentence when currentChar is undefined [\#7439](https://github.com/VSCodeVim/Vim/pull/7439) ([monjara](https://github.com/monjara))
- Exclude :w, :q, and :wq from dot command [\#7428](https://github.com/VSCodeVim/Vim/pull/7428) ([justalmill](https://github.com/justalmill))
- Fixed insertLineBefore indent behavior [\#7424](https://github.com/VSCodeVim/Vim/pull/7424) ([half-potato](https://github.com/half-potato))
- Implement `inccommand` [\#7416](https://github.com/VSCodeVim/Vim/pull/7416) ([adrsm108](https://github.com/adrsm108))
- added enable key-repeating doc for Codium Exploration Users [\#7408](https://github.com/VSCodeVim/Vim/pull/7408) ([AMMAR-62](https://github.com/AMMAR-62))
- Disable other extensions while running tests for avoiding unexpected side effect [\#7376](https://github.com/VSCodeVim/Vim/pull/7376) ([waynewaynetsai](https://github.com/waynewaynetsai))
- Fix \<D-c\> override system-clipboard issue for macOS users [\#7375](https://github.com/VSCodeVim/Vim/pull/7375) ([waynewaynetsai](https://github.com/waynewaynetsai))
- fix typo in README [\#7365](https://github.com/VSCodeVim/Vim/pull/7365) ([ambiguous48](https://github.com/ambiguous48))
- Fix .vimrc file's issues with vimrcPath's home environment variable [\#7360](https://github.com/VSCodeVim/Vim/pull/7360) ([waynewaynetsai](https://github.com/waynewaynetsai))
- Update README.md [\#7311](https://github.com/VSCodeVim/Vim/pull/7311) ([xerosanyam](https://github.com/xerosanyam))
- Silence failing tests on Windows and add Windows build step [\#7293](https://github.com/VSCodeVim/Vim/pull/7293) ([tagniam](https://github.com/tagniam))
- Add `vim.shell` setting for custom `!` shell [\#7255](https://github.com/VSCodeVim/Vim/pull/7255) ([tagniam](https://github.com/tagniam))
- Add silent option to key remappings [\#7253](https://github.com/VSCodeVim/Vim/pull/7253) ([mly32](https://github.com/mly32))
- Refactor `externalCommand.ts` to not use temporary files [\#7252](https://github.com/VSCodeVim/Vim/pull/7252) ([tagniam](https://github.com/tagniam))
- fix \#6922: paste with \<D-v\> in command-line mode [\#7227](https://github.com/VSCodeVim/Vim/pull/7227) ([Injae-Lee](https://github.com/Injae-Lee))
- Improve incremental search [\#7224](https://github.com/VSCodeVim/Vim/pull/7224) ([adrsm108](https://github.com/adrsm108))
- search operator `\%V` [\#7215](https://github.com/VSCodeVim/Vim/pull/7215) ([elazarcoh](https://github.com/elazarcoh))
- Fix a typo in the bug report template [\#7205](https://github.com/VSCodeVim/Vim/pull/7205) ([brettcannon](https://github.com/brettcannon))
- Fix release date error [\#7178](https://github.com/VSCodeVim/Vim/pull/7178) ([oo6](https://github.com/oo6))
- Added documentation for argument text objects [\#6942](https://github.com/VSCodeVim/Vim/pull/6942) ([w-cantin](https://github.com/w-cantin))

## [v1.21.10](https://github.com/vscodevim/vim/tree/v1.21.10) (2021-10-19)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.21.9...v1.21.10)

**Fixed Bugs:**

- `:tabo\[nly\]` and `:tabc\[lose\]` throw `E488` in version 1.21.9 [\#7171](https://github.com/VSCodeVim/Vim/issues/7171)

## [v1.21.9](https://github.com/vscodevim/vim/tree/v1.21.9) (2021-10-18)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.21.8...v1.21.9)

**Fixed Bugs:**

- /pattern/s/.../.../ doesn't work [\#7151](https://github.com/VSCodeVim/Vim/issues/7151)
- 1.21.8 does not work in web worker anymore [\#7150](https://github.com/VSCodeVim/Vim/issues/7150)
- `\*` throws an error when `wordSeparators` doesn't have `/` [\#7135](https://github.com/VSCodeVim/Vim/issues/7135)
- `iskeyword` doesn't work for multiple languages [\#7123](https://github.com/VSCodeVim/Vim/issues/7123)
- Ex "copy" command with `.`, `-`, or `+` \(current, previous, or next line\) at end of command stopped working [\#7058](https://github.com/VSCodeVim/Vim/issues/7058)

**Closed issues:**

- README.md missing installation item: linux setup [\#7080](https://github.com/VSCodeVim/Vim/issues/7080)

**Merged pull requests:**

- Load process polyfill automatically, required by util [\#7156](https://github.com/VSCodeVim/Vim/pull/7156) ([jeanp413](https://github.com/jeanp413))
- Add pane resize keybindings [\#7138](https://github.com/VSCodeVim/Vim/pull/7138) ([tagniam](https://github.com/tagniam))
- Update ROADMAP.ZH.md [\#7137](https://github.com/VSCodeVim/Vim/pull/7137) ([hellorayza](https://github.com/hellorayza))
- iskeyword is evaluated when a command is called \(\#7123\) [\#7126](https://github.com/VSCodeVim/Vim/pull/7126) ([shinichy](https://github.com/shinichy))
- Fix bang command with ranges [\#7122](https://github.com/VSCodeVim/Vim/pull/7122) ([tagniam](https://github.com/tagniam))
- \#6553: capture file mode and restore it after force write [\#7092](https://github.com/VSCodeVim/Vim/pull/7092) ([joecrop](https://github.com/joecrop))

## [v1.21.8](https://github.com/vscodevim/vim/tree/v1.21.8) (2021-09-29)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.21.7...v1.21.8)

**Enhancements:**

- Support `:substitute`'s `n` flag \(count matches without substituting\) [\#7081](https://github.com/VSCodeVim/Vim/issues/7081)
- Support `\['` and `\]'` \(move to nearby lowercase mark\) commands [\#7041](https://github.com/VSCodeVim/Vim/issues/7041)

**Closed issues:**

- Inconsistent indentation? [\#7107](https://github.com/VSCodeVim/Vim/issues/7107)
- Cannot change to normal mode. [\#7106](https://github.com/VSCodeVim/Vim/issues/7106)
- Simple movement like HJKL should not be recorded in jump history for Ctrl-O and Ctrl-I [\#7102](https://github.com/VSCodeVim/Vim/issues/7102)

**Merged pull requests:**

- fix ROADMAP.md typo [\#7066](https://github.com/VSCodeVim/Vim/pull/7066) ([mly32](https://github.com/mly32))
- make vim strict ui extension [\#7049](https://github.com/VSCodeVim/Vim/pull/7049) ([sandy081](https://github.com/sandy081))
- Added documentation for all Vim Modes [\#6945](https://github.com/VSCodeVim/Vim/pull/6945) ([w-cantin](https://github.com/w-cantin))

## [v1.21.7](https://github.com/vscodevim/vim/tree/v1.21.7) (2021-08-31)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.21.6...v1.21.7)

**Enhancements:**

- `:delete` and `:yank` should support `{count}` argument [\#6995](https://github.com/VSCodeVim/Vim/issues/6995)

**Fixed Bugs:**

- Failed to handle key=\<C-e\>. Cannot read property 'end' of undefined [\#7027](https://github.com/VSCodeVim/Vim/issues/7027)
- Failed to handle key=\<Esc\>. e.getTransformation is not a function [\#7009](https://github.com/VSCodeVim/Vim/issues/7009)

**Closed issues:**

- Why vim-surround command csw" \(word surround\) is not working now? [\#7003](https://github.com/VSCodeVim/Vim/issues/7003)
- Allow for appending to \[a-z\] registers [\#6965](https://github.com/VSCodeVim/Vim/issues/6965)

**Merged pull requests:**

- Show command and search when showmodename is disabled [\#7021](https://github.com/VSCodeVim/Vim/pull/7021) ([BlakeWilliams](https://github.com/BlakeWilliams))
- Adds count argument to `:yank` and `:delete` commands [\#7007](https://github.com/VSCodeVim/Vim/pull/7007) ([DevinLeamy](https://github.com/DevinLeamy))
- fix: \<tab\> behavior in replace mode [\#6997](https://github.com/VSCodeVim/Vim/pull/6997) ([Komar0ff](https://github.com/Komar0ff))
- Append to \[a-z\] registers [\#6971](https://github.com/VSCodeVim/Vim/pull/6971) ([DevinLeamy](https://github.com/DevinLeamy))

## [v1.21.6](https://github.com/vscodevim/vim/tree/v1.21.6) (2021-08-11)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.21.5...v1.21.6)

**Fixed Bugs:**

- Backslashes must be duplicated in :s substitution [\#6890](https://github.com/VSCodeVim/Vim/issues/6890)
- Failed to handle key=\<Esc\>. Overlapping ranges are not allowed! [\#6888](https://github.com/VSCodeVim/Vim/issues/6888)
- Failed to handle key=:. No cursor index - this should never ever happen! [\#6887](https://github.com/VSCodeVim/Vim/issues/6887)
- `:marks` show error position when focusing on another file [\#6886](https://github.com/VSCodeVim/Vim/issues/6886)
- Failed to handle key=.. Illegal argument: line must be non-negative [\#6870](https://github.com/VSCodeVim/Vim/issues/6870)
- Repeating with `.` does not play nice with auto-matching quotes [\#6819](https://github.com/VSCodeVim/Vim/issues/6819)

**Closed issues:**

- s [\#6959](https://github.com/VSCodeVim/Vim/issues/6959)
- Make "gd" Open definition to the side in Search Editor [\#6921](https://github.com/VSCodeVim/Vim/issues/6921)
- Failed to handle key=\<C-o\>. Could NOT open editor for "file:///home/fabrice/CRIStAL/Speed/examples/train_example.py". [\#6868](https://github.com/VSCodeVim/Vim/issues/6868)
- Failed to handle key=2. Cannot read property 'length' of undefined [\#6861](https://github.com/VSCodeVim/Vim/issues/6861)
- Failed to handle key=.. Overlapping ranges are not allowed! [\#6840](https://github.com/VSCodeVim/Vim/issues/6840)

**Merged pull requests:**

- Fix history navigation in VS Code interactive window [\#6980](https://github.com/VSCodeVim/Vim/pull/6980) ([rebornix](https://github.com/rebornix))
- Remove look behind for Safari [\#6937](https://github.com/VSCodeVim/Vim/pull/6937) ([rebornix](https://github.com/rebornix))
- Fix /\\c by requiring odd number of \'s before c for case \(in\)sensitivity [\#6900](https://github.com/VSCodeVim/Vim/pull/6900) ([edemaine](https://github.com/edemaine))
- Fix escaping in :s substitutions [\#6891](https://github.com/VSCodeVim/Vim/pull/6891) ([edemaine](https://github.com/edemaine))
- Argument text object documentation [\#6857](https://github.com/VSCodeVim/Vim/pull/6857) ([w-cantin](https://github.com/w-cantin))
- Add debuggingForeground to colorCustomizations [\#6852](https://github.com/VSCodeVim/Vim/pull/6852) ([lmlorca](https://github.com/lmlorca))

## [v1.21.5](https://github.com/vscodevim/vim/tree/v1.21.5) (2021-07-06)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.21.4...v1.21.5)

**Fixed Bugs:**

- :sort u merges two duplicates [\#6825](https://github.com/VSCodeVim/Vim/issues/6825)
- setting space as leader key does not work anymore [\#6824](https://github.com/VSCodeVim/Vim/issues/6824)
- Problems with \<leader\> key and remapping in the latest version [\#6821](https://github.com/VSCodeVim/Vim/issues/6821)

**Merged pull requests:**

- Fix sort unique bug [\#6835](https://github.com/VSCodeVim/Vim/pull/6835) ([sixskys](https://github.com/sixskys))

## [v1.21.4](https://github.com/vscodevim/vim/tree/v1.21.4) (2021-07-02)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.21.3...v1.21.4)

**Fixed Bugs:**

- `2i"` should act like `a"`, but exclude whitespace before/after the quotes [\#6806](https://github.com/VSCodeVim/Vim/issues/6806)

## [v1.21.3](https://github.com/vscodevim/vim/tree/v1.21.3) (2021-06-18)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.21.2...v1.21.3)

## [v1.21.2](https://github.com/vscodevim/vim/tree/v1.21.2) (2021-06-11)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.21.1...v1.21.2)

## [v1.21.1](https://github.com/vscodevim/vim/tree/v1.21.1) (2021-06-10)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.21.0...v1.21.1)

## [v1.21.0](https://github.com/vscodevim/vim/tree/v1.21.0) (2021-06-09)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.20.3...v1.21.0)

## [v1.20.3](https://github.com/vscodevim/vim/tree/v1.20.3) (2021-05-18)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.20.2...v1.20.3)

## [v1.20.2](https://github.com/vscodevim/vim/tree/v1.20.2) (2021-04-30)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.20.1...v1.20.2)

## [v1.20.1](https://github.com/vscodevim/vim/tree/v1.20.1) (2021-04-25)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.20.0...v1.20.1)

## [v1.20.0](https://github.com/vscodevim/vim/tree/v1.20.0) (2021-04-17)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.19.3...v1.20.0)

## [v1.19.3](https://github.com/vscodevim/vim/tree/v1.19.3) (2021-03-29)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.19.2...v1.19.3)

## [v1.19.2](https://github.com/vscodevim/vim/tree/v1.19.2) (2021-03-24)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.19.1...v1.19.2)

## [v1.19.1](https://github.com/vscodevim/vim/tree/v1.19.1) (2021-03-21)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.19.0...v1.19.1)

## [v1.19.0](https://github.com/vscodevim/vim/tree/v1.19.0) (2021-03-19)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.18.9...v1.19.0)

## [v1.18.9](https://github.com/vscodevim/vim/tree/v1.18.9) (2021-02-05)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.18.8...v1.18.9)

## [v1.18.8](https://github.com/vscodevim/vim/tree/v1.18.8) (2021-02-02)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.18.7...v1.18.8)

## [v1.18.7](https://github.com/vscodevim/vim/tree/v1.18.7) (2021-02-01)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.18.5...v1.18.7)

## [v1.18.5](https://github.com/vscodevim/vim/tree/v1.18.5) (2020-12-10)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.18.4...v1.18.5)

## [v1.18.4](https://github.com/vscodevim/vim/tree/v1.18.4) (2020-12-07)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.18.3...v1.18.4)

## [v1.18.3](https://github.com/vscodevim/vim/tree/v1.18.3) (2020-12-07)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.18.2...v1.18.3)

## [v1.18.2](https://github.com/vscodevim/vim/tree/v1.18.2) (2020-12-07)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.18.0...v1.18.2)

## [v1.18.0](https://github.com/vscodevim/vim/tree/v1.18.0) (2020-12-06)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.17.1...v1.18.0)

## [v1.17.1](https://github.com/vscodevim/vim/tree/v1.17.1) (2020-09-25)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.17.0...v1.17.1)

## [v1.17.0](https://github.com/vscodevim/vim/tree/v1.17.0) (2020-09-22)

[Full Changelog](https://github.com/vscodevim/vim/compare/beta...v1.17.0)

## [beta](https://github.com/vscodevim/vim/tree/beta) (2020-09-21)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.16.0...beta)

## [v1.11.0](https://github.com/vscodevim/vim/tree/v1.11.0) (2019-09-28)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.10.2...v1.11.0)

**Enhancements:**

- Support VSCode's View: Toggle Panel in vim mode. [\#4103](https://github.com/VSCodeVim/Vim/issues/4103)
- Store subparsers in terms of abbreviation and full command [\#4094](https://github.com/VSCodeVim/Vim/issues/4094)
- directories are un-completable with tab-completion [\#4085](https://github.com/VSCodeVim/Vim/issues/4085)
- Command mode status bar is too small [\#4077](https://github.com/VSCodeVim/Vim/issues/4077)
- set cursorcolumn [\#4076](https://github.com/VSCodeVim/Vim/issues/4076)
- Support for whichwarp [\#4068](https://github.com/VSCodeVim/Vim/issues/4068)
- Command line does not support Ctrl-W [\#4027](https://github.com/VSCodeVim/Vim/issues/4027)
- Add setting to swap ; with : in Easymotion [\#4020](https://github.com/VSCodeVim/Vim/issues/4020)
- Allow for placeholders in rebindings [\#4012](https://github.com/VSCodeVim/Vim/issues/4012)
- Support :his\[tory\] [\#3949](https://github.com/VSCodeVim/Vim/issues/3949)
- Support gdefault option [\#3594](https://github.com/VSCodeVim/Vim/issues/3594)

**Fixed Bugs:**

- Find and replace all occurances in current line does not work [\#4067](https://github.com/VSCodeVim/Vim/issues/4067)
- Commentary does not work in visual block mode [\#4036](https://github.com/VSCodeVim/Vim/issues/4036)
- Change operator doesn't behave linewise when appropriate [\#4024](https://github.com/VSCodeVim/Vim/issues/4024)
- \$ command takes newline in visual mode [\#3970](https://github.com/VSCodeVim/Vim/issues/3970)
- Text reflow doesn't respect tabs [\#3929](https://github.com/VSCodeVim/Vim/issues/3929)
- commands \(d, y, c...\) don't work with the smart selection [\#3850](https://github.com/VSCodeVim/Vim/issues/3850)
- :split Can't Open Files With Names That Include Spaces [\#3824](https://github.com/VSCodeVim/Vim/issues/3824)
- Unexpected jumping after deleting a line with 'd-d' [\#3804](https://github.com/VSCodeVim/Vim/issues/3804)
- jk doesn't respect tab size [\#3796](https://github.com/VSCodeVim/Vim/issues/3796)
- 'dd' followed by any character jumps cursor to end of file. [\#3713](https://github.com/VSCodeVim/Vim/issues/3713)
- In ctrl v mode, c doesn't change all instances [\#3601](https://github.com/VSCodeVim/Vim/issues/3601)

**Closed issues:**

- gf doesn't work for files not from current directory [\#4099](https://github.com/VSCodeVim/Vim/issues/4099)
- ViM extension makes VSCode super slow, typing is almost impossible. [\#4088](https://github.com/VSCodeVim/Vim/issues/4088)
- mapping control-something to escape in insert doesn't work [\#4062](https://github.com/VSCodeVim/Vim/issues/4062)
- When Overtype extension presents, VSCodeVim stops working. [\#4046](https://github.com/VSCodeVim/Vim/issues/4046)
- \<C-v\> in search mode doesn't respect cursor position [\#4044](https://github.com/VSCodeVim/Vim/issues/4044)
- Tests for special keys on command line [\#4040](https://github.com/VSCodeVim/Vim/issues/4040)
- Cannot find module 'winston-transport' [\#4029](https://github.com/VSCodeVim/Vim/issues/4029)
- How to re-map ":e" to ":w"? [\#4026](https://github.com/VSCodeVim/Vim/issues/4026)
- Ctrl+h ignores useCtrlKeys and handleKeys binds [\#4019](https://github.com/VSCodeVim/Vim/issues/4019)
- It is possible to scroll the cursor out of screen [\#3846](https://github.com/VSCodeVim/Vim/issues/3846)
- ModeHandler messages not coming through debug console [\#3828](https://github.com/VSCodeVim/Vim/issues/3828)
- :o fails in remote SSH [\#3815](https://github.com/VSCodeVim/Vim/issues/3815)
- Being able to disable VIM on startup [\#3783](https://github.com/VSCodeVim/Vim/issues/3783)
- Autocomplete feature [\#3570](https://github.com/VSCodeVim/Vim/issues/3570)

**Merged pull requests:**

- Use command abbreviations [\#4106](https://github.com/VSCodeVim/Vim/pull/4106) ([J-Fields](https://github.com/J-Fields))
- Update dependency @types/node to v12.7.8 [\#4100](https://github.com/VSCodeVim/Vim/pull/4100) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency @types/node to v12.7.7 [\#4097](https://github.com/VSCodeVim/Vim/pull/4097) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency sinon to v7.5.0 [\#4095](https://github.com/VSCodeVim/Vim/pull/4095) ([renovate[bot]](https://github.com/apps/renovate))
- Tests for special keys on the command line [\#4090](https://github.com/VSCodeVim/Vim/pull/4090) ([J-Fields](https://github.com/J-Fields))
- Add shift+tab support for cmd line [\#4089](https://github.com/VSCodeVim/Vim/pull/4089) ([stevenguh](https://github.com/stevenguh))
- Update dependency ts-loader to v6.1.2 [\#4087](https://github.com/VSCodeVim/Vim/pull/4087) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency ts-loader to v6.1.1 [\#4084](https://github.com/VSCodeVim/Vim/pull/4084) ([renovate[bot]](https://github.com/apps/renovate))
- Add missing `to` in CONTRIBUTING.md [\#4080](https://github.com/VSCodeVim/Vim/pull/4080) ([caleywoods](https://github.com/caleywoods))
- Fix incorrect position when editing the same file in 2 splits [\#4074](https://github.com/VSCodeVim/Vim/pull/4074) ([uHOOCCOOHu](https://github.com/uHOOCCOOHu))
- Smile command [\#4070](https://github.com/VSCodeVim/Vim/pull/4070) ([caleywoods](https://github.com/caleywoods))
- Update dependency @types/node to v12.7.5 [\#4066](https://github.com/VSCodeVim/Vim/pull/4066) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency ts-loader to v6.1.0 [\#4065](https://github.com/VSCodeVim/Vim/pull/4065) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency typescript to v3.6.3 [\#4064](https://github.com/VSCodeVim/Vim/pull/4064) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency tslint to v5.20.0 [\#4060](https://github.com/VSCodeVim/Vim/pull/4060) ([renovate[bot]](https://github.com/apps/renovate))
- Don't use lodash for things ES6 supports natively [\#4056](https://github.com/VSCodeVim/Vim/pull/4056) ([J-Fields](https://github.com/J-Fields))
- Pin dependencies [\#4051](https://github.com/VSCodeVim/Vim/pull/4051) ([renovate[bot]](https://github.com/apps/renovate))
- Fix gq to handle tab indentation [\#4050](https://github.com/VSCodeVim/Vim/pull/4050) ([orn688](https://github.com/orn688))
- Add flag to replace `f` with a single-character sneak [\#4048](https://github.com/VSCodeVim/Vim/pull/4048) ([J-Fields](https://github.com/J-Fields))
- \<C-v\> doesn't respect the cursor in search mode [\#4045](https://github.com/VSCodeVim/Vim/pull/4045) ([stevenguh](https://github.com/stevenguh))
- Fix dependencies [\#4037](https://github.com/VSCodeVim/Vim/pull/4037) ([J-Fields](https://github.com/J-Fields))
- Update dependency @types/node to v12.7.4 [\#4033](https://github.com/VSCodeVim/Vim/pull/4033) ([renovate[bot]](https://github.com/apps/renovate))
- Refactor the existing file opening and auto completion [\#4032](https://github.com/VSCodeVim/Vim/pull/4032) ([stevenguh](https://github.com/stevenguh))
- Remove word in command line with \<C-w\> [\#4031](https://github.com/VSCodeVim/Vim/pull/4031) ([stevenguh](https://github.com/stevenguh))
- Update dependency sinon to v7.4.2 [\#4030](https://github.com/VSCodeVim/Vim/pull/4030) ([renovate[bot]](https://github.com/apps/renovate))
- Implement `nowrapscan` [\#4028](https://github.com/VSCodeVim/Vim/pull/4028) ([contrib15](https://github.com/contrib15))
- linewise change operator [\#4025](https://github.com/VSCodeVim/Vim/pull/4025) ([JoshuaRichards](https://github.com/JoshuaRichards))
- Fix gj/gk so it maintains cursor position [\#3890](https://github.com/VSCodeVim/Vim/pull/3890) ([hetmankp](https://github.com/hetmankp))
- WebPack builds for improved loading times [\#3889](https://github.com/VSCodeVim/Vim/pull/3889) ([ianjfrosst](https://github.com/ianjfrosst))

## [v1.10.2](https://github.com/vscodevim/vim/tree/v1.10.2) (2019-09-01)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.10.1...v1.10.2)

**Closed issues:**

- Cut release 1.10.1 [\#4022](https://github.com/VSCodeVim/Vim/issues/4022)

**Merged pull requests:**

- Fix case sensitive sorting [\#4023](https://github.com/VSCodeVim/Vim/pull/4023) ([noslaver](https://github.com/noslaver))

## [v1.10.1](https://github.com/vscodevim/vim/tree/v1.10.1) (2019-08-31)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.10.0...v1.10.1)

**Fixed Bugs:**

- ReplaceWithRegister doesn't work in visual mode [\#4015](https://github.com/VSCodeVim/Vim/issues/4015)
- \<C-n\> not working in 1.10.0 [\#4011](https://github.com/VSCodeVim/Vim/issues/4011)
- zh/zl/zH/zL not working properly [\#4008](https://github.com/VSCodeVim/Vim/issues/4008)

**Closed issues:**

- Ctrl-P and Ctrl-N can‘t work in the latest version [\#4017](https://github.com/VSCodeVim/Vim/issues/4017)
- d Command Removes Mode Text [\#3781](https://github.com/VSCodeVim/Vim/issues/3781)
- Yanking "clears" mode \(or makes it disappear\) from status bar until INSERT mode [\#3488](https://github.com/VSCodeVim/Vim/issues/3488)

**Merged pull requests:**

- Update dependency @types/node to v12.7.3 [\#4021](https://github.com/VSCodeVim/Vim/pull/4021) ([renovate[bot]](https://github.com/apps/renovate))
- Make ReplaceWithRegister work in visual mode [\#4016](https://github.com/VSCodeVim/Vim/pull/4016) ([stevenguh](https://github.com/stevenguh))
- :w write in background [\#4013](https://github.com/VSCodeVim/Vim/pull/4013) ([stevenguh](https://github.com/stevenguh))
- Update dependency typescript to v3.6.2 [\#4010](https://github.com/VSCodeVim/Vim/pull/4010) ([renovate[bot]](https://github.com/apps/renovate))

## [v1.10.0](https://github.com/vscodevim/vim/tree/v1.10.0) (2019-08-28)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.9.0...v1.10.0)

**Enhancements:**

- \<C-b\> and \<C-e\> should be equivalent to \<Home\> and \<End\> on command line / search bar [\#3995](https://github.com/VSCodeVim/Vim/issues/3995)
- Support `when` for contextual keybindings [\#3994](https://github.com/VSCodeVim/Vim/issues/3994)
- Del should work on command/search line [\#3992](https://github.com/VSCodeVim/Vim/issues/3992)
- Home/End should work on command/search line [\#3991](https://github.com/VSCodeVim/Vim/issues/3991)
- `Ctrl-R` should allow pasting from a register when typing a command, as in insert mode [\#3950](https://github.com/VSCodeVim/Vim/issues/3950)
- Ctrl-P and Ctrl-N should be equivalent to Up / Down when entering a command or search [\#3942](https://github.com/VSCodeVim/Vim/issues/3942)
- Support ignorecase for sort command [\#3939](https://github.com/VSCodeVim/Vim/issues/3939)
- Support search offsets [\#3917](https://github.com/VSCodeVim/Vim/issues/3917)
- Enhancement: sneak one char jump. [\#3907](https://github.com/VSCodeVim/Vim/issues/3907)
- Simple undo command behaviour from vi/vim not implemented [\#3649](https://github.com/VSCodeVim/Vim/issues/3649)

**Fixed Bugs:**

- Variable highlighting not working [\#3982](https://github.com/VSCodeVim/Vim/issues/3982)
- Change side in diff mode [\#3979](https://github.com/VSCodeVim/Vim/issues/3979)
- Annoying brackets autoremoving [\#3936](https://github.com/VSCodeVim/Vim/issues/3936)
- "Search forward" functionality is not case sensitive [\#3764](https://github.com/VSCodeVim/Vim/issues/3764)
- Does not start up with VSCode and no vim commands work [\#3753](https://github.com/VSCodeVim/Vim/issues/3753)

**Closed issues:**

- `/` is not case sensitive [\#3980](https://github.com/VSCodeVim/Vim/issues/3980)
- Will VIM extension be compatible with python interactive window in the next update? [\#3973](https://github.com/VSCodeVim/Vim/issues/3973)
- visual mode block copy/past [\#3971](https://github.com/VSCodeVim/Vim/issues/3971)
- range yank does not work [\#3931](https://github.com/VSCodeVim/Vim/issues/3931)
- Console warning [\#3926](https://github.com/VSCodeVim/Vim/issues/3926)
- :wq does not close window if there are unsaved changes [\#3922](https://github.com/VSCodeVim/Vim/issues/3922)
- make easymotion looks exactly the vim-easymotion way [\#3901](https://github.com/VSCodeVim/Vim/issues/3901)
- bug to record macro [\#3898](https://github.com/VSCodeVim/Vim/issues/3898)
- Faulty link in readme [\#3827](https://github.com/VSCodeVim/Vim/issues/3827)
- Navigation in the explorer pane vim way \(j , k\) doesn't work after window reload [\#3760](https://github.com/VSCodeVim/Vim/issues/3760)
- Easy motion shows error when jumping to brackets and backslash [\#3685](https://github.com/VSCodeVim/Vim/issues/3685)
- I can't continuous movement the cursor ,and copy or delete more line. [\#3634](https://github.com/VSCodeVim/Vim/issues/3634)
- Why don't work command mode? [\#3500](https://github.com/VSCodeVim/Vim/issues/3500)
- Tab completion for `:vnew` and `:tabnew` [\#3479](https://github.com/VSCodeVim/Vim/issues/3479)
- Yank lines in 1 window should be available for pasting in another window [\#3401](https://github.com/VSCodeVim/Vim/issues/3401)

**Merged pull requests:**

- Update dependency @types/lodash to v4.14.138 [\#4003](https://github.com/VSCodeVim/Vim/pull/4003) ([renovate[bot]](https://github.com/apps/renovate))
- Fix typo in README.md [\#4002](https://github.com/VSCodeVim/Vim/pull/4002) ([jedevc](https://github.com/jedevc))
- Implement single char sneak [\#3999](https://github.com/VSCodeVim/Vim/pull/3999) ([JohnnyUrosevic](https://github.com/JohnnyUrosevic))
- fix :wq in remote [\#3998](https://github.com/VSCodeVim/Vim/pull/3998) ([stevenguh](https://github.com/stevenguh))
- Update dependency tslint to v5.19.0 [\#3987](https://github.com/VSCodeVim/Vim/pull/3987) ([renovate[bot]](https://github.com/apps/renovate))
- Fix console warning [\#3985](https://github.com/VSCodeVim/Vim/pull/3985) ([huww98](https://github.com/huww98))
- Fix duplicated command added in c542b42 [\#3984](https://github.com/VSCodeVim/Vim/pull/3984) ([huww98](https://github.com/huww98))
- Update dependency @types/lodash to v4.14.137 [\#3983](https://github.com/VSCodeVim/Vim/pull/3983) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency @types/node to v12.7.2 [\#3981](https://github.com/VSCodeVim/Vim/pull/3981) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency @types/node to v12.7.1 [\#3967](https://github.com/VSCodeVim/Vim/pull/3967) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency @types/node to v12.7.0 [\#3964](https://github.com/VSCodeVim/Vim/pull/3964) ([renovate[bot]](https://github.com/apps/renovate))
- Disallow all forms of :help [\#3962](https://github.com/VSCodeVim/Vim/pull/3962) ([J-Fields](https://github.com/J-Fields))
- Be clear in package.json that vim.statusBarColorControl reduces performance [\#3961](https://github.com/VSCodeVim/Vim/pull/3961) ([J-Fields](https://github.com/J-Fields))
- Update dependency sinon to v7.4.1 [\#3958](https://github.com/VSCodeVim/Vim/pull/3958) ([renovate[bot]](https://github.com/apps/renovate))
- Implement `q/` and `q?` [\#3956](https://github.com/VSCodeVim/Vim/pull/3956) ([J-Fields](https://github.com/J-Fields))
- When the `c` \(confirm\) flag is used in a `:s` command, don't use neovim [\#3955](https://github.com/VSCodeVim/Vim/pull/3955) ([J-Fields](https://github.com/J-Fields))
- `\<C-f\>` shows command history when pressed on command line [\#3954](https://github.com/VSCodeVim/Vim/pull/3954) ([J-Fields](https://github.com/J-Fields))
- Fix `gC` in visual mode [\#3948](https://github.com/VSCodeVim/Vim/pull/3948) ([J-Fields](https://github.com/J-Fields))
- Roll back dependency sinon to 7.3.2 [\#3947](https://github.com/VSCodeVim/Vim/pull/3947) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency sinon to v7.4.0 [\#3944](https://github.com/VSCodeVim/Vim/pull/3944) ([renovate[bot]](https://github.com/apps/renovate))
- Allow \<C-p\> and \<C-n\> to be used as prev/next when entering a command or search [\#3943](https://github.com/VSCodeVim/Vim/pull/3943) ([J-Fields](https://github.com/J-Fields))
- Respect `editor.autoClosingBrackets` and `editor.autoClosingQuotes` when deleting a bracket/quote [\#3941](https://github.com/VSCodeVim/Vim/pull/3941) ([J-Fields](https://github.com/J-Fields))
- added option to ignore case when sorting [\#3938](https://github.com/VSCodeVim/Vim/pull/3938) ([noslaver](https://github.com/noslaver))
- Update dependency @types/node to v12.6.9 [\#3937](https://github.com/VSCodeVim/Vim/pull/3937) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency vscode to v1.1.36 [\#3933](https://github.com/VSCodeVim/Vim/pull/3933) ([renovate[bot]](https://github.com/apps/renovate))
- Implement search offsets [\#3918](https://github.com/VSCodeVim/Vim/pull/3918) ([J-Fields](https://github.com/J-Fields))

## [v1.9.0](https://github.com/vscodevim/vim/tree/v1.9.0) (2019-07-29)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.8.2...v1.9.0)

**Enhancements:**

- Support ampersand \("&"\) action in normal mode [\#3808](https://github.com/VSCodeVim/Vim/issues/3808)

**Fixed Bugs:**

- At beginning of line with all spaces, backspace causes error [\#3915](https://github.com/VSCodeVim/Vim/issues/3915)
- Go to Line Using \[line\]+gg Throws Exception [\#3845](https://github.com/VSCodeVim/Vim/issues/3845)
- Easymotion uses RegExp [\#3844](https://github.com/VSCodeVim/Vim/issues/3844)
- `%` doesn't ignore unmatched `\>` [\#3807](https://github.com/VSCodeVim/Vim/issues/3807)
- Regression: full path to nvim is now required [\#3754](https://github.com/VSCodeVim/Vim/issues/3754)

**Closed issues:**

- Mapping s in Visual Mode causes strange mistake [\#3788](https://github.com/VSCodeVim/Vim/issues/3788)

**Merged pull requests:**

- Make `C` work with registers [\#3927](https://github.com/VSCodeVim/Vim/pull/3927) ([J-Fields](https://github.com/J-Fields))
- Implement ampersand \(&\) action [\#3925](https://github.com/VSCodeVim/Vim/pull/3925) ([J-Fields](https://github.com/J-Fields))
- Move prettier configuration to .prettierrc [\#3921](https://github.com/VSCodeVim/Vim/pull/3921) ([kizza](https://github.com/kizza))
- Handle backspace on first character of all-space line correctly [\#3916](https://github.com/VSCodeVim/Vim/pull/3916) ([J-Fields](https://github.com/J-Fields))
- Fix f/F/t/T with \<tab\> [\#3914](https://github.com/VSCodeVim/Vim/pull/3914) ([J-Fields](https://github.com/J-Fields))
- Make `%` skip over characters such as '\>' [\#3913](https://github.com/VSCodeVim/Vim/pull/3913) ([J-Fields](https://github.com/J-Fields))
- Do not treat easymotion input as regex unless it's a letter [\#3911](https://github.com/VSCodeVim/Vim/pull/3911) ([J-Fields](https://github.com/J-Fields))
- fix\(deps\): update dependency lodash to v4.17.15 [\#3906](https://github.com/VSCodeVim/Vim/pull/3906) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency mocha to v6.2.0 [\#3905](https://github.com/VSCodeVim/Vim/pull/3905) ([renovate[bot]](https://github.com/apps/renovate))
- Fixes \#3754. Don't require full path to neovim [\#3903](https://github.com/VSCodeVim/Vim/pull/3903) ([notskm](https://github.com/notskm))
- chore\(deps\): update dependency @types/node to v12.6.8 [\#3902](https://github.com/VSCodeVim/Vim/pull/3902) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency @types/node to v12.6.6 [\#3897](https://github.com/VSCodeVim/Vim/pull/3897) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency @types/node to v12.6.4 [\#3896](https://github.com/VSCodeVim/Vim/pull/3896) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency @types/node to v12.6.3 [\#3893](https://github.com/VSCodeVim/Vim/pull/3893) ([renovate[bot]](https://github.com/apps/renovate))
- Add ReplaceWithRegister plugin [\#3887](https://github.com/VSCodeVim/Vim/pull/3887) ([kizza](https://github.com/kizza))

## [v1.8.2](https://github.com/vscodevim/vim/tree/v1.8.2) (2019-07-15)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.8.1...v1.8.2)

**Fixed Bugs:**

- GoToDefinition make invalid history when use C\# extension [\#3865](https://github.com/VSCodeVim/Vim/issues/3865)
- Invisible "WORD" in roadmap [\#3823](https://github.com/VSCodeVim/Vim/issues/3823)

**Closed issues:**

- Identifier highlights do not appear with keyboard movement [\#3885](https://github.com/VSCodeVim/Vim/issues/3885)
- Cursor width when indent using tabs [\#3856](https://github.com/VSCodeVim/Vim/issues/3856)
- cw without yank [\#3836](https://github.com/VSCodeVim/Vim/issues/3836)
- Frozen in 'Activating Extensions' [\#3826](https://github.com/VSCodeVim/Vim/issues/3826)
- How can we make a normal-mode shift-enter mapping? [\#3814](https://github.com/VSCodeVim/Vim/issues/3814)
- Input response is too slow after updating vsc to the latest version\(1.34.0\) [\#3810](https://github.com/VSCodeVim/Vim/issues/3810)
- Yank + motion only working partially [\#3794](https://github.com/VSCodeVim/Vim/issues/3794)
- vim mode does not work after upgrading to 1.8.1 [\#3791](https://github.com/VSCodeVim/Vim/issues/3791)
- Save File Using leader leader [\#3790](https://github.com/VSCodeVim/Vim/issues/3790)
- space + tab transforme to solo tab [\#3789](https://github.com/VSCodeVim/Vim/issues/3789)
- Unable to replace single quotes surrounding string with double quotes like I can in Vim [\#3657](https://github.com/VSCodeVim/Vim/issues/3657)
- cannot bind "," [\#3565](https://github.com/VSCodeVim/Vim/issues/3565)

**Merged pull requests:**

- fix\(deps\): update dependency lodash to v4.17.14 [\#3884](https://github.com/VSCodeVim/Vim/pull/3884) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency @types/node to v12.6.2 [\#3882](https://github.com/VSCodeVim/Vim/pull/3882) ([renovate[bot]](https://github.com/apps/renovate))
- fix\(deps\): update dependency lodash to v4.17.13 [\#3881](https://github.com/VSCodeVim/Vim/pull/3881) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency typescript to v3.5.3 [\#3878](https://github.com/VSCodeVim/Vim/pull/3878) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency @types/lodash to v4.14.136 [\#3877](https://github.com/VSCodeVim/Vim/pull/3877) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency @types/node to v12.6.1 [\#3876](https://github.com/VSCodeVim/Vim/pull/3876) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency tslint to v5.18.0 [\#3874](https://github.com/VSCodeVim/Vim/pull/3874) ([renovate[bot]](https://github.com/apps/renovate))
- fix: fix build break [\#3873](https://github.com/VSCodeVim/Vim/pull/3873) ([jpoon](https://github.com/jpoon))
- chore: fix URL for input method setting [\#3870](https://github.com/VSCodeVim/Vim/pull/3870) ([AndersDJohnson](https://github.com/AndersDJohnson))
- Assign activeTextEditor to local variable first. [\#3866](https://github.com/VSCodeVim/Vim/pull/3866) ([yaegaki](https://github.com/yaegaki))
- Update dependency @types/node to v12.0.12 [\#3862](https://github.com/VSCodeVim/Vim/pull/3862) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency @types/node to v12.0.11 [\#3861](https://github.com/VSCodeVim/Vim/pull/3861) ([renovate[bot]](https://github.com/apps/renovate))
- fix log message for 'vim.debug.silent' [\#3859](https://github.com/VSCodeVim/Vim/pull/3859) ([stfnwp](https://github.com/stfnwp))
- Update dependency @types/node to v12.0.10 [\#3858](https://github.com/VSCodeVim/Vim/pull/3858) ([renovate-bot](https://github.com/renovate-bot))
- Fix build per microsoft/vscode\#75873 [\#3857](https://github.com/VSCodeVim/Vim/pull/3857) ([octref](https://github.com/octref))
- Update dependency vscode to v1.1.35 [\#3855](https://github.com/VSCodeVim/Vim/pull/3855) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency @types/lodash to v4.14.135 [\#3854](https://github.com/VSCodeVim/Vim/pull/3854) ([renovate[bot]](https://github.com/apps/renovate))
- pull request to fix the issue \#3845 [\#3853](https://github.com/VSCodeVim/Vim/pull/3853) ([zhuzisheng](https://github.com/zhuzisheng))
- upgrade pkgs [\#3843](https://github.com/VSCodeVim/Vim/pull/3843) ([jpoon](https://github.com/jpoon))
- Fix broken links in README.md [\#3842](https://github.com/VSCodeVim/Vim/pull/3842) ([aquova](https://github.com/aquova))
- Update dependency typescript to v3.5.2 [\#3834](https://github.com/VSCodeVim/Vim/pull/3834) ([renovate[bot]](https://github.com/apps/renovate))
- Fix WORD wrapped in pipes [\#3829](https://github.com/VSCodeVim/Vim/pull/3829) ([scebotari66](https://github.com/scebotari66))
- Update dependency prettier to v1.18.2 [\#3819](https://github.com/VSCodeVim/Vim/pull/3819) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency prettier to v1.18.0 [\#3818](https://github.com/VSCodeVim/Vim/pull/3818) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency @types/lodash to v4.14.134 [\#3817](https://github.com/VSCodeVim/Vim/pull/3817) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency @types/lodash to v4.14.133 [\#3802](https://github.com/VSCodeVim/Vim/pull/3802) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency tslint to v5.17.0 [\#3801](https://github.com/VSCodeVim/Vim/pull/3801) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency @types/mocha to v5.2.7 [\#3800](https://github.com/VSCodeVim/Vim/pull/3800) ([renovate[bot]](https://github.com/apps/renovate))
- Consolidate documentation for visual modes [\#3799](https://github.com/VSCodeVim/Vim/pull/3799) ([max-sixty](https://github.com/max-sixty))
- Update dependency typescript to v3.5.1 [\#3798](https://github.com/VSCodeVim/Vim/pull/3798) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency @types/sinon to v7.0.12 [\#3795](https://github.com/VSCodeVim/Vim/pull/3795) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency @types/lodash to v4.14.132 [\#3792](https://github.com/VSCodeVim/Vim/pull/3792) ([renovate[bot]](https://github.com/apps/renovate))

## [v1.8.1](https://github.com/vscodevim/vim/tree/v1.8.1) (2019-05-22)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.8.0...v1.8.1)

**Fixed Bugs:**

- Vim extension UI "blocks" on remote development save [\#3777](https://github.com/VSCodeVim/Vim/issues/3777)
- Cancelling a search should not undo :noh [\#3748](https://github.com/VSCodeVim/Vim/issues/3748)
- \<C-c\> and \<C-\[\> don't cancel search [\#3668](https://github.com/VSCodeVim/Vim/issues/3668)
- \<C-u\>/\<C-b\> don't move cursor if the first line is visible [\#3648](https://github.com/VSCodeVim/Vim/issues/3648)
- vim.statusBarColors.normal reports type error [\#3607](https://github.com/VSCodeVim/Vim/issues/3607)

**Closed issues:**

- Copy inside of words after typing ci" [\#3758](https://github.com/VSCodeVim/Vim/issues/3758)

**Merged pull requests:**

- Update dependency @types/lodash to v4.14.130 [\#3784](https://github.com/VSCodeVim/Vim/pull/3784) ([renovate[bot]](https://github.com/apps/renovate))
- Update ROADMAP.ZH.md [\#3782](https://github.com/VSCodeVim/Vim/pull/3782) ([sxlwar](https://github.com/sxlwar))
- Make the write command non-blocking on remote files [\#3778](https://github.com/VSCodeVim/Vim/pull/3778) ([suo](https://github.com/suo))
- Fix MoveHalfPageUp \(\<C-u\>\) when first line is visible. [\#3776](https://github.com/VSCodeVim/Vim/pull/3776) ([faldah](https://github.com/faldah))
- Update dependency @types/lodash to v4.14.129 [\#3771](https://github.com/VSCodeVim/Vim/pull/3771) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency @types/lodash to v4.14.127 [\#3770](https://github.com/VSCodeVim/Vim/pull/3770) ([renovate[bot]](https://github.com/apps/renovate))
- Fix statusBarColors linting in vscode user settings. [\#3767](https://github.com/VSCodeVim/Vim/pull/3767) ([faldah](https://github.com/faldah))
- Update dependency prettier to v1.17.1 [\#3765](https://github.com/VSCodeVim/Vim/pull/3765) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency @types/lodash to v4.14.126 [\#3755](https://github.com/VSCodeVim/Vim/pull/3755) ([renovate[bot]](https://github.com/apps/renovate))
- Make sure :noh disables hlsearch until the next search is done [\#3749](https://github.com/VSCodeVim/Vim/pull/3749) ([J-Fields](https://github.com/J-Fields))

## [v1.8.0](https://github.com/vscodevim/vim/tree/v1.8.0) (2019-05-10)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.7.1...v1.8.0)

**Enhancements:**

- :reg should show multiple registers if given multiple arguments [\#3610](https://github.com/VSCodeVim/Vim/issues/3610)
- :reg should not show the \_ \(black hole\) register [\#3606](https://github.com/VSCodeVim/Vim/issues/3606)
- Implement the % \(file name\) and : \(last executed command\) registers [\#3605](https://github.com/VSCodeVim/Vim/issues/3605)
- The . \(last inserted text\) register should be read-only [\#3604](https://github.com/VSCodeVim/Vim/issues/3604)

**Fixed Bugs:**

- Backspace in command line mode should return to normal mode if the command is empty [\#3729](https://github.com/VSCodeVim/Vim/issues/3729)

**Closed issues:**

- Tab to spaces setting in vscode not applying when extension is enabled [\#3732](https://github.com/VSCodeVim/Vim/issues/3732)
- %d/string/d" does not work [\#3709](https://github.com/VSCodeVim/Vim/issues/3709)
- Extension issue [\#3615](https://github.com/VSCodeVim/Vim/issues/3615)
- Support the / register [\#3542](https://github.com/VSCodeVim/Vim/issues/3542)

**Merged pull requests:**

- Show search results in the overview ruler [\#3750](https://github.com/VSCodeVim/Vim/pull/3750) ([J-Fields](https://github.com/J-Fields))
- Update dependency @types/lodash to v4.14.125 [\#3747](https://github.com/VSCodeVim/Vim/pull/3747) ([renovate[bot]](https://github.com/apps/renovate))
- \<C-\[\> and \<C-c\> should terminate search mode [\#3746](https://github.com/VSCodeVim/Vim/pull/3746) ([hkleynhans](https://github.com/hkleynhans))
- Update dependency vscode to v1.1.34 [\#3739](https://github.com/VSCodeVim/Vim/pull/3739) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency gulp to v4.0.2 [\#3738](https://github.com/VSCodeVim/Vim/pull/3738) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency @types/lodash to v4.14.124 [\#3737](https://github.com/VSCodeVim/Vim/pull/3737) ([renovate[bot]](https://github.com/apps/renovate))
- Fix replace character \(`r`\) behavior with newline [\#3735](https://github.com/VSCodeVim/Vim/pull/3735) ([J-Fields](https://github.com/J-Fields))
- Show `match {x} of {y}` in the status bar when searching [\#3734](https://github.com/VSCodeVim/Vim/pull/3734) ([J-Fields](https://github.com/J-Fields))
- Keymapping bindings inconsistently cased \#3012 [\#3731](https://github.com/VSCodeVim/Vim/pull/3731) ([ObliviousJamie](https://github.com/ObliviousJamie))
- Return to normal mode after hitting \<BS\> on empty command line [\#3730](https://github.com/VSCodeVim/Vim/pull/3730) ([J-Fields](https://github.com/J-Fields))
- Various improvements to registers [\#3728](https://github.com/VSCodeVim/Vim/pull/3728) ([J-Fields](https://github.com/J-Fields))
- Add tab completion on vim command line [\#3639](https://github.com/VSCodeVim/Vim/pull/3639) ([keith-ferney](https://github.com/keith-ferney))

## [v1.7.1](https://github.com/vscodevim/vim/tree/v1.7.1) (2019-05-05)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.7.0...v1.7.1)

**Enhancements:**

- Set extensionKind in package.json to support Remote Development [\#3720](https://github.com/VSCodeVim/Vim/issues/3720)
- gf doesn't work with filepath:linenumber format [\#3710](https://github.com/VSCodeVim/Vim/issues/3710)
- Hive ctrl+G show which file is editing been supported? [\#3700](https://github.com/VSCodeVim/Vim/issues/3700)

**Fixed Bugs:**

- Replace \(:%s\) confirm text is wrong [\#3715](https://github.com/VSCodeVim/Vim/issues/3715)

**Merged pull requests:**

- Update dependency untildify to v4 [\#3725](https://github.com/VSCodeVim/Vim/pull/3725) ([renovate[bot]](https://github.com/apps/renovate))
- Add searches from \* and \# to the search history [\#3724](https://github.com/VSCodeVim/Vim/pull/3724) ([J-Fields](https://github.com/J-Fields))
- Implement Ctrl+G and :file [\#3723](https://github.com/VSCodeVim/Vim/pull/3723) ([J-Fields](https://github.com/J-Fields))
- Correct replacement confirmation text [\#3722](https://github.com/VSCodeVim/Vim/pull/3722) ([J-Fields](https://github.com/J-Fields))
- Set "extensionKind": "ui" to support remote development [\#3721](https://github.com/VSCodeVim/Vim/pull/3721) ([mjbvz](https://github.com/mjbvz))

## [v1.7.0](https://github.com/vscodevim/vim/tree/v1.7.0) (2019-04-30)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.4.0...v1.7.0)

**Fixed Bugs:**

- vim.debug.suppress invalid [\#3703](https://github.com/VSCodeVim/Vim/issues/3703)
- cw, dw, vw doesn't work with non-ascii char earlier in line [\#3680](https://github.com/VSCodeVim/Vim/issues/3680)
- Word seperate doesn't works well [\#3665](https://github.com/VSCodeVim/Vim/issues/3665)
- catastrophic performance [\#3654](https://github.com/VSCodeVim/Vim/issues/3654)

**Closed issues:**

- Ctrl keys can not be remapped in insert mode [\#3697](https://github.com/VSCodeVim/Vim/issues/3697)
- Surround: Implement whitespace configuration [\#3681](https://github.com/VSCodeVim/Vim/issues/3681)
- :\[line number\]d causes type error [\#3678](https://github.com/VSCodeVim/Vim/issues/3678)
- How to fit VIM search on IDE footer with long git branch name? [\#3652](https://github.com/VSCodeVim/Vim/issues/3652)
- cannot open or close directories with L key in file navigation [\#3576](https://github.com/VSCodeVim/Vim/issues/3576)
- VsCodeVim makes workbench.tree.indent not effective [\#3561](https://github.com/VSCodeVim/Vim/issues/3561)
- Ex command 'copy' throws "failed to handle key=.undefined" error [\#3505](https://github.com/VSCodeVim/Vim/issues/3505)
- All mappings in Visual mode do not work when you just enter Visual mod by pressing v [\#3503](https://github.com/VSCodeVim/Vim/issues/3503)

**Merged pull requests:**

- Fix reverse selecting in normal mode. [\#3712](https://github.com/VSCodeVim/Vim/pull/3712) ([kroton](https://github.com/kroton))
- chore\(deps\): update dependency typescript to v3.4.5 [\#3701](https://github.com/VSCodeVim/Vim/pull/3701) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency gulp to v4.0.1 [\#3698](https://github.com/VSCodeVim/Vim/pull/3698) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency typescript to v3.4.4 [\#3690](https://github.com/VSCodeVim/Vim/pull/3690) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency mocha to v6.1.4 [\#3689](https://github.com/VSCodeVim/Vim/pull/3689) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency sinon to v7.3.2 [\#3686](https://github.com/VSCodeVim/Vim/pull/3686) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency tslint to v5.16.0 [\#3683](https://github.com/VSCodeVim/Vim/pull/3683) ([renovate[bot]](https://github.com/apps/renovate))
- docs: update slackin link [\#3679](https://github.com/VSCodeVim/Vim/pull/3679) ([khoitd1997](https://github.com/khoitd1997))
- Update dependency typescript to v3.4.3 [\#3677](https://github.com/VSCodeVim/Vim/pull/3677) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency prettier to v1.17.0 [\#3676](https://github.com/VSCodeVim/Vim/pull/3676) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency mocha to v6.1.3 [\#3675](https://github.com/VSCodeVim/Vim/pull/3675) ([renovate[bot]](https://github.com/apps/renovate))
- Add note about unsupported motions [\#3670](https://github.com/VSCodeVim/Vim/pull/3670) ([karlhorky](https://github.com/karlhorky))
- Fix word separation [\#3667](https://github.com/VSCodeVim/Vim/pull/3667) ([ajalab](https://github.com/ajalab))
- Update dependency typescript to v3.4.2 [\#3664](https://github.com/VSCodeVim/Vim/pull/3664) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency mocha to v6.1.2 [\#3663](https://github.com/VSCodeVim/Vim/pull/3663) ([renovate[bot]](https://github.com/apps/renovate))
- Fixes \#2754. Ctrl+d/u pull cursor along when screen moves past cursor [\#3658](https://github.com/VSCodeVim/Vim/pull/3658) ([mayhewluke](https://github.com/mayhewluke))
- Implement \<C-w\> s [\#3563](https://github.com/VSCodeVim/Vim/pull/3563) ([aminroosta](https://github.com/aminroosta))

## [v1.4.0](https://github.com/vscodevim/vim/tree/v1.4.0) (2019-04-08)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.3.0...v1.4.0)

**Fixed Bugs:**

- Performance degradation of word motions in v1.3.0 [\#3660](https://github.com/VSCodeVim/Vim/issues/3660)

**Closed issues:**

- Adding vim style 'Go to Symbol in Workspace' shortcut [\#3624](https://github.com/VSCodeVim/Vim/issues/3624)

**Merged pull requests:**

- Improve performance of word motions [\#3662](https://github.com/VSCodeVim/Vim/pull/3662) ([ajalab](https://github.com/ajalab))
- Update dependency tslint to v5.15.0 [\#3647](https://github.com/VSCodeVim/Vim/pull/3647) ([renovate[bot]](https://github.com/apps/renovate))
- Update dependency @types/mocha to v5.2.6 [\#3646](https://github.com/VSCodeVim/Vim/pull/3646) ([renovate[bot]](https://github.com/apps/renovate))
- Document display line movement best practices [\#3623](https://github.com/VSCodeVim/Vim/pull/3623) ([karlhorky](https://github.com/karlhorky))
- Only use regex lookbehind where supported [\#3525](https://github.com/VSCodeVim/Vim/pull/3525) ([JKillian](https://github.com/JKillian))

## [v1.3.0](https://github.com/vscodevim/vim/tree/v1.3.0) (2019-04-02)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.2.0...v1.3.0)

**Enhancements:**

- Better non-ASCII character support in word motions [\#3612](https://github.com/VSCodeVim/Vim/issues/3612)

**Fixed Bugs:**

- Preview file from explorer is not tracked as jump [\#3507](https://github.com/VSCodeVim/Vim/issues/3507)
- ‘W’ and 'w' shortcut keys do not support Chinese characters! [\#3439](https://github.com/VSCodeVim/Vim/issues/3439)

**Closed issues:**

- emmet with vscode vim [\#3644](https://github.com/VSCodeVim/Vim/issues/3644)
- How do I insert a linebreak where the cursor is without entering into insert mode in VSCodeVim? [\#3636](https://github.com/VSCodeVim/Vim/issues/3636)
- Hitting backspace with an empty search should return to normal mode [\#3619](https://github.com/VSCodeVim/Vim/issues/3619)
- Search state should not change until a new search command is completed [\#3616](https://github.com/VSCodeVim/Vim/issues/3616)
- Jumping to a mark that is off-screen should center the view around the mark [\#3609](https://github.com/VSCodeVim/Vim/issues/3609)
- The original vim's redo command \(Ctrl+Shift+R\) doesn't work [\#3608](https://github.com/VSCodeVim/Vim/issues/3608)
- vim-surround does not work with multiple cursors [\#3600](https://github.com/VSCodeVim/Vim/issues/3600)
- digraphs cannot be inputted in different order [\#3599](https://github.com/VSCodeVim/Vim/issues/3599)
- gU/gu does not work in visual mode [\#3491](https://github.com/VSCodeVim/Vim/issues/3491)
- Error when executing 'View Latex PDF'-command from latex-workshop-plugin [\#3484](https://github.com/VSCodeVim/Vim/issues/3484)

**Merged pull requests:**

- chore\(deps\): update dependency vscode to v1.1.33 [\#3643](https://github.com/VSCodeVim/Vim/pull/3643) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency typescript to v3.4.1 [\#3642](https://github.com/VSCodeVim/Vim/pull/3642) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency @types/sinon to v7.0.11 [\#3641](https://github.com/VSCodeVim/Vim/pull/3641) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency @types/diff to v4.0.2 [\#3640](https://github.com/VSCodeVim/Vim/pull/3640) ([renovate[bot]](https://github.com/apps/renovate))
- Digraphs: Allow input in reverse order \(fixes \#3599\) [\#3635](https://github.com/VSCodeVim/Vim/pull/3635) ([jbaiter](https://github.com/jbaiter))
- Assign lastClosedModeHandler when onDidCloseTextDocument. [\#3630](https://github.com/VSCodeVim/Vim/pull/3630) ([yaegaki](https://github.com/yaegaki))
- When backspace is hit on an empty search, cancel the search [\#3626](https://github.com/VSCodeVim/Vim/pull/3626) ([J-Fields](https://github.com/J-Fields))
- Mark several features that have been implemented as complete in ROADMAP.md [\#3620](https://github.com/VSCodeVim/Vim/pull/3620) ([J-Fields](https://github.com/J-Fields))
- When a search is cancelled, revert to previous search state [\#3617](https://github.com/VSCodeVim/Vim/pull/3617) ([J-Fields](https://github.com/J-Fields))
- Support word motions for non-ASCII characters [\#3614](https://github.com/VSCodeVim/Vim/pull/3614) ([ajalab](https://github.com/ajalab))
- Support for gU and gu in visual mode [\#3603](https://github.com/VSCodeVim/Vim/pull/3603) ([J-Fields](https://github.com/J-Fields))
- Chinese translation of ROADMAP.MD [\#3597](https://github.com/VSCodeVim/Vim/pull/3597) ([sxlwar](https://github.com/sxlwar))
- fix\(deps\): update dependency neovim to v4.5.0 [\#3555](https://github.com/VSCodeVim/Vim/pull/3555) ([renovate[bot]](https://github.com/apps/renovate))

## [v1.2.0](https://github.com/vscodevim/vim/tree/v1.2.0) (2019-03-17)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.1.0...v1.2.0)

**Enhancements:**

- The small delete register "- doesn't work [\#3492](https://github.com/VSCodeVim/Vim/issues/3492)

**Closed issues:**

- Extension causes high cpu load [\#3587](https://github.com/VSCodeVim/Vim/issues/3587)
- Custom keybind breaks search [\#3558](https://github.com/VSCodeVim/Vim/issues/3558)
- vim-auto-save [\#3550](https://github.com/VSCodeVim/Vim/issues/3550)
- Extension causes high cpu load [\#3546](https://github.com/VSCodeVim/Vim/issues/3546)
- Extension causes high cpu load [\#3533](https://github.com/VSCodeVim/Vim/issues/3533)
- The extension don't work with Java Extension Pack [\#3526](https://github.com/VSCodeVim/Vim/issues/3526)
- command 'toggleVim' not found. [\#3524](https://github.com/VSCodeVim/Vim/issues/3524)
- Error when upgraded to 1.1.0 [\#3521](https://github.com/VSCodeVim/Vim/issues/3521)
- TaskQueue: Error running task. Invalid regular expression: [\#3519](https://github.com/VSCodeVim/Vim/issues/3519)
- Chinese i18n support? [\#3497](https://github.com/VSCodeVim/Vim/issues/3497)

**Merged pull requests:**

- Add yank highlighting \(REBASED\) [\#3593](https://github.com/VSCodeVim/Vim/pull/3593) ([epeli](https://github.com/epeli))
- chore\(deps\): update dependency tslint to v5.14.0 [\#3586](https://github.com/VSCodeVim/Vim/pull/3586) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency gulp-typescript to v5.0.1 [\#3585](https://github.com/VSCodeVim/Vim/pull/3585) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency @types/sinon to v7.0.10 [\#3583](https://github.com/VSCodeVim/Vim/pull/3583) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency @types/lodash to v4.14.123 [\#3582](https://github.com/VSCodeVim/Vim/pull/3582) ([renovate[bot]](https://github.com/apps/renovate))
- Fix TOC [\#3574](https://github.com/VSCodeVim/Vim/pull/3574) ([mtsmfm](https://github.com/mtsmfm))
- chore\(deps\): update dependency @types/sinon to v7.0.9 [\#3568](https://github.com/VSCodeVim/Vim/pull/3568) ([renovate[bot]](https://github.com/apps/renovate))
- Bump minimum VSCode version to 1.31.0 [\#3567](https://github.com/VSCodeVim/Vim/pull/3567) ([JKillian](https://github.com/JKillian))
- docs: remove outdated notes on splits from roadmap [\#3564](https://github.com/VSCodeVim/Vim/pull/3564) ([JKillian](https://github.com/JKillian))
- chore\(deps\): update dependency @types/lodash to v4.14.122 [\#3557](https://github.com/VSCodeVim/Vim/pull/3557) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency sinon to v7.2.7 [\#3554](https://github.com/VSCodeVim/Vim/pull/3554) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency sinon to v7.2.6 [\#3552](https://github.com/VSCodeVim/Vim/pull/3552) ([renovate[bot]](https://github.com/apps/renovate))
- Add small deletions to small delete register [\#3544](https://github.com/VSCodeVim/Vim/pull/3544) ([rickythefox](https://github.com/rickythefox))
- chore\(deps\): update dependency tslint to v5.13.1 [\#3541](https://github.com/VSCodeVim/Vim/pull/3541) ([renovate[bot]](https://github.com/apps/renovate))
- Mod:change sneak sneakUseIgnorecaseAndSmartcase default value explana… [\#3540](https://github.com/VSCodeVim/Vim/pull/3540) ([duguanyue](https://github.com/duguanyue))
- Fix links in README [\#3534](https://github.com/VSCodeVim/Vim/pull/3534) ([yorinasub17](https://github.com/yorinasub17))
- chore\(deps\): update dependency mocha to v6.0.2 [\#3529](https://github.com/VSCodeVim/Vim/pull/3529) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency @types/sinon to v7.0.8 [\#3528](https://github.com/VSCodeVim/Vim/pull/3528) ([renovate[bot]](https://github.com/apps/renovate))

## [v1.1.0](https://github.com/vscodevim/vim/tree/v1.1.0) (2019-02-24)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.0.8...v1.1.0)

**Fixed Bugs:**

- vim.searchHighlightColor does not work [\#3489](https://github.com/VSCodeVim/Vim/issues/3489)
- Error when jumping to undefined mark [\#3468](https://github.com/VSCodeVim/Vim/issues/3468)

**Closed issues:**

- \[Feature request\]: Add the ability to copy the current query into clipboard. [\#3493](https://github.com/VSCodeVim/Vim/issues/3493)
- Not working on vscode 1.31.0 [\#3473](https://github.com/VSCodeVim/Vim/issues/3473)
- Extension causes high cpu load [\#3471](https://github.com/VSCodeVim/Vim/issues/3471)
- Error when using the `\> motion [\#3452](https://github.com/VSCodeVim/Vim/issues/3452)
- Show mark label like VIM in visual studio [\#3406](https://github.com/VSCodeVim/Vim/issues/3406)

**Merged pull requests:**

- Fixes vim.searchHighlightColor [\#3517](https://github.com/VSCodeVim/Vim/pull/3517) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency tslint to v5.13.0 [\#3516](https://github.com/VSCodeVim/Vim/pull/3516) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency vscode to v1.1.30 [\#3513](https://github.com/VSCodeVim/Vim/pull/3513) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency typescript to v3.3.3333 [\#3512](https://github.com/VSCodeVim/Vim/pull/3512) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency mocha to v6.0.1 [\#3511](https://github.com/VSCodeVim/Vim/pull/3511) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency gulp-tslint to v8.1.4 [\#3510](https://github.com/VSCodeVim/Vim/pull/3510) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency mocha to v6 [\#3499](https://github.com/VSCodeVim/Vim/pull/3499) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency gulp-sourcemaps to v2.6.5 [\#3498](https://github.com/VSCodeVim/Vim/pull/3498) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency @types/node to v10.12.27 [\#3496](https://github.com/VSCodeVim/Vim/pull/3496) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency @types/lodash to v4.14.121 [\#3487](https://github.com/VSCodeVim/Vim/pull/3487) ([renovate[bot]](https://github.com/apps/renovate))
- Add CamelCaseMotion plugin [\#3483](https://github.com/VSCodeVim/Vim/pull/3483) ([JKillian](https://github.com/JKillian))
- chore\(deps\): update dependency @types/node to v9.6.42 [\#3478](https://github.com/VSCodeVim/Vim/pull/3478) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency vscode to v1.1.29 [\#3476](https://github.com/VSCodeVim/Vim/pull/3476) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency typescript to v3.3.3 [\#3475](https://github.com/VSCodeVim/Vim/pull/3475) ([renovate[bot]](https://github.com/apps/renovate))
- Set \< and \> marks when yanking in visual mode. [\#3472](https://github.com/VSCodeVim/Vim/pull/3472) ([rickythefox](https://github.com/rickythefox))
- Fixes \#3468 [\#3469](https://github.com/VSCodeVim/Vim/pull/3469) ([hnefatl](https://github.com/hnefatl))
- chore\(deps\): update dependency prettier to v1.16.4 [\#3465](https://github.com/VSCodeVim/Vim/pull/3465) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency gulp-git to v2.9.0 [\#3464](https://github.com/VSCodeVim/Vim/pull/3464) ([renovate[bot]](https://github.com/apps/renovate))
- Digraph support [\#3407](https://github.com/VSCodeVim/Vim/pull/3407) ([jbaiter](https://github.com/jbaiter))

## [v1.0.8](https://github.com/vscodevim/vim/tree/v1.0.8) (2019-02-07)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.0.7...v1.0.8)

**Fixed Bugs:**

- Cursor jumps after building with CMake [\#3462](https://github.com/VSCodeVim/Vim/issues/3462)
- Illegal Value for Line using any input mode while WallabyJs || Quokka is running [\#3459](https://github.com/VSCodeVim/Vim/issues/3459)
- Cursor jumps up to the beginning of a file after saving. [\#3444](https://github.com/VSCodeVim/Vim/issues/3444)

**Merged pull requests:**

- fix: cursor jumps when selection changes to output window [\#3463](https://github.com/VSCodeVim/Vim/pull/3463) ([jpoon](https://github.com/jpoon))
- feat: configuration validators [\#3451](https://github.com/VSCodeVim/Vim/pull/3451) ([jpoon](https://github.com/jpoon))
- fix: de-dupe cursors [\#3449](https://github.com/VSCodeVim/Vim/pull/3449) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency @types/diff to v4.0.1 [\#3448](https://github.com/VSCodeVim/Vim/pull/3448) ([renovate[bot]](https://github.com/apps/renovate))
- v1.0.7 [\#3447](https://github.com/VSCodeVim/Vim/pull/3447) ([jpoon](https://github.com/jpoon))
- refactor: no need for so many different ways to create a position object [\#3446](https://github.com/VSCodeVim/Vim/pull/3446) ([jpoon](https://github.com/jpoon))

## [v1.0.7](https://github.com/vscodevim/vim/tree/v1.0.7) (2019-02-02)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.0.6...v1.0.7)

**Fixed Bugs:**

- Illegal value for line error using command-mode range deletion [\#3441](https://github.com/VSCodeVim/Vim/issues/3441)
- Extension crash or hangs when failing to call nvim [\#3433](https://github.com/VSCodeVim/Vim/issues/3433)

**Merged pull requests:**

- \[Bugfix\] - sentences backward [\#3445](https://github.com/VSCodeVim/Vim/pull/3445) ([esetnik](https://github.com/esetnik))
- refactor: rename cursorPositionJustBeforeAnythingHappened to cursorsInitialState [\#3443](https://github.com/VSCodeVim/Vim/pull/3443) ([jpoon](https://github.com/jpoon))
- fix: ensure cursor is in bounds. closes \#3441 [\#3442](https://github.com/VSCodeVim/Vim/pull/3442) ([jpoon](https://github.com/jpoon))
- fix: validate that remappings are string arrays [\#3440](https://github.com/VSCodeVim/Vim/pull/3440) ([jpoon](https://github.com/jpoon))
- v1.0.6 [\#3438](https://github.com/VSCodeVim/Vim/pull/3438) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency typescript to v3.3.1 [\#3436](https://github.com/VSCodeVim/Vim/pull/3436) ([renovate[bot]](https://github.com/apps/renovate))
- Adopt latest list navigation support [\#3432](https://github.com/VSCodeVim/Vim/pull/3432) ([joaomoreno](https://github.com/joaomoreno))

## [v1.0.6](https://github.com/vscodevim/vim/tree/v1.0.6) (2019-02-01)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.0.5...v1.0.6)

**Fixed Bugs:**

- Bad interaction between 1.0.5 and jscode-java-pack [\#3431](https://github.com/VSCodeVim/Vim/issues/3431)
- Release 1.0.4 doesn't contain listed changes [\#3429](https://github.com/VSCodeVim/Vim/issues/3429)

**Merged pull requests:**

- fix: check neovim configurations and timeout on nvim attach [\#3437](https://github.com/VSCodeVim/Vim/pull/3437) ([jpoon](https://github.com/jpoon))
- fix: revert back to previous non-async code when syncing cursor [\#3435](https://github.com/VSCodeVim/Vim/pull/3435) ([jpoon](https://github.com/jpoon))
- feat: output commit hash. closes \#3429 [\#3430](https://github.com/VSCodeVim/Vim/pull/3430) ([jpoon](https://github.com/jpoon))

## [v1.0.5](https://github.com/vscodevim/vim/tree/v1.0.5) (2019-01-31)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.0.4...v1.0.5)

**Merged pull requests:**

- chore\(deps\): update dependency prettier to v1.16.3 [\#3428](https://github.com/VSCodeVim/Vim/pull/3428) ([renovate[bot]](https://github.com/apps/renovate))
- v1.0.4 [\#3427](https://github.com/VSCodeVim/Vim/pull/3427) ([jpoon](https://github.com/jpoon))

## [v1.0.4](https://github.com/vscodevim/vim/tree/v1.0.4) (2019-01-31)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.0.3...v1.0.4)

**Fixed Bugs:**

- "Delete surrounding quotes" doesn't work in certain cases [\#3415](https://github.com/VSCodeVim/Vim/issues/3415)
- 'gd' is working correctly, but an error occurs. [\#3387](https://github.com/VSCodeVim/Vim/issues/3387)

**Closed issues:**

- Extension causes high cpu load [\#3400](https://github.com/VSCodeVim/Vim/issues/3400)

**Merged pull requests:**

- fix ds" with nested quotes and add some tests - fixes \#3415 [\#3426](https://github.com/VSCodeVim/Vim/pull/3426) ([esetnik](https://github.com/esetnik))
- chore\(deps\): update dependency @types/diff to v4 [\#3425](https://github.com/VSCodeVim/Vim/pull/3425) ([renovate[bot]](https://github.com/apps/renovate))
- fix: single-key remappings were being ignored [\#3424](https://github.com/VSCodeVim/Vim/pull/3424) ([jpoon](https://github.com/jpoon))
- fix\(deps\): update dependency winston to v3.2.1 [\#3423](https://github.com/VSCodeVim/Vim/pull/3423) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency prettier to v1.16.2 [\#3422](https://github.com/VSCodeVim/Vim/pull/3422) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency @types/sinon to v7.0.5 [\#3421](https://github.com/VSCodeVim/Vim/pull/3421) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency @types/diff to v3.5.3 [\#3420](https://github.com/VSCodeVim/Vim/pull/3420) ([renovate[bot]](https://github.com/apps/renovate))
- fix: validate configurations once, instead of every key press [\#3418](https://github.com/VSCodeVim/Vim/pull/3418) ([jpoon](https://github.com/jpoon))
- Run `closeMarkersNavigation` on ESC. Fix \#3367 [\#3416](https://github.com/VSCodeVim/Vim/pull/3416) ([octref](https://github.com/octref))
- chore\(deps\): update dependency vscode to v1.1.28 [\#3412](https://github.com/VSCodeVim/Vim/pull/3412) ([renovate-bot](https://github.com/renovate-bot))
- refactor: make globalstate singleton class [\#3411](https://github.com/VSCodeVim/Vim/pull/3411) ([jpoon](https://github.com/jpoon))
- Misc async fixes - new revision [\#3410](https://github.com/VSCodeVim/Vim/pull/3410) ([xconverge](https://github.com/xconverge))
- fix: closes \#3157 [\#3409](https://github.com/VSCodeVim/Vim/pull/3409) ([jpoon](https://github.com/jpoon))
- fix \#3157: register single onDidChangeTextDocument handler and delegate to appropriate mode handler [\#3408](https://github.com/VSCodeVim/Vim/pull/3408) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency prettier to v1.16.1 [\#3405](https://github.com/VSCodeVim/Vim/pull/3405) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency vscode to v1.1.27 [\#3403](https://github.com/VSCodeVim/Vim/pull/3403) ([renovate-bot](https://github.com/renovate-bot))
- fix address 'gf' bug. `replace file://` method [\#3402](https://github.com/VSCodeVim/Vim/pull/3402) ([pikulev](https://github.com/pikulev))
- bump version [\#3399](https://github.com/VSCodeVim/Vim/pull/3399) ([jpoon](https://github.com/jpoon))

## [v1.0.3](https://github.com/vscodevim/vim/tree/v1.0.3) (2019-01-20)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.0.2...v1.0.3)

**Merged pull requests:**

- fix rangeerror. action buttons on log messages. [\#3398](https://github.com/VSCodeVim/Vim/pull/3398) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency prettier to v1.16.0 [\#3397](https://github.com/VSCodeVim/Vim/pull/3397) ([renovate-bot](https://github.com/renovate-bot))
- fix: gf over a 'file://...' path and \#3310 issue \(v2\) [\#3396](https://github.com/VSCodeVim/Vim/pull/3396) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency sinon to v7.2.3 [\#3394](https://github.com/VSCodeVim/Vim/pull/3394) ([renovate-bot](https://github.com/renovate-bot))
- fix: 3350 [\#3393](https://github.com/VSCodeVim/Vim/pull/3393) ([jpoon](https://github.com/jpoon))
- docs: change slackin host [\#3392](https://github.com/VSCodeVim/Vim/pull/3392) ([jpoon](https://github.com/jpoon))
- Update dependency @types/lodash to v4.14.120 [\#3385](https://github.com/VSCodeVim/Vim/pull/3385) ([renovate-bot](https://github.com/renovate-bot))
- Update dependency typescript to v3.2.4 [\#3384](https://github.com/VSCodeVim/Vim/pull/3384) ([renovate-bot](https://github.com/renovate-bot))
- Update dependency @types/sinon to v7.0.4 [\#3383](https://github.com/VSCodeVim/Vim/pull/3383) ([renovate-bot](https://github.com/renovate-bot))
- Fixes \#3378 [\#3381](https://github.com/VSCodeVim/Vim/pull/3381) ([xconverge](https://github.com/xconverge))
- fixes \#3374 [\#3380](https://github.com/VSCodeVim/Vim/pull/3380) ([xconverge](https://github.com/xconverge))

## [v1.0.2](https://github.com/vscodevim/vim/tree/v1.0.2) (2019-01-16)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.0.1...v1.0.2)

## [v1.0.1](https://github.com/vscodevim/vim/tree/v1.0.1) (2019-01-06)

[Full Changelog](https://github.com/vscodevim/vim/compare/v1.0.0...v1.0.1)

## [v1.0.0](https://github.com/vscodevim/vim/tree/v1.0.0) (2019-01-05)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.17.3...v1.0.0)

The first commit to this project was a little over 3 years ago, and what a journey it's been. To celebrate the new year, we are pushing out v1.0.0 of VSCodeVim! In addition to this project reaching such an amazing milestone, but in my personal life, I'll soon be celebrating the birth of my first-born. With that in mind, over the last few weeks I've tried to close out as many issues as I could before all my spare time is filled with diapers and bottles. Thanks to amazing team of maintainers, contributors, and users that have brought us to where we are today and where we'll go tomorrow.

**Breaking Change:**

- `vim.debug.loggingLevel` has been removed. In it's place we now have `vim.debug.loggingLevelForConsole`. For full details, see the [settings section of our README](https://github.com/VSCodeVim/Vim#vscodevim-settings).

**Enhancements:**

- feat: change debug configurations to loggingLevelForConsole, loggingLevelForAlert [\#3325](https://github.com/VSCodeVim/Vim/pull/3325) ([jpoon](https://github.com/jpoon))

**Fixed Bugs:**

- Status Bar Color did not changed with the mode [\#3316](https://github.com/VSCodeVim/Vim/issues/3316)
- Error when remapping to commands with name starting with "extension." [\#3307](https://github.com/VSCodeVim/Vim/issues/3307)

**Closed issues:**

- gf: 'try to find it with the same extension'-code doesn't work [\#3309](https://github.com/VSCodeVim/Vim/issues/3309)
- Extension causes high cpu load [\#3289](https://github.com/VSCodeVim/Vim/issues/3289)
- The Vim plugin can not edit except i/a/s [\#3270](https://github.com/VSCodeVim/Vim/issues/3270)
- Keyboard stops working with VSCode when indenting multiline \[MacOS Mojave\] [\#3206](https://github.com/VSCodeVim/Vim/issues/3206)
- ctrl o shortcut not work sometimes [\#3074](https://github.com/VSCodeVim/Vim/issues/3074)

**Merged pull requests:**

- fix: closes \#3316 [\#3321](https://github.com/VSCodeVim/Vim/pull/3321) ([jpoon](https://github.com/jpoon))
- fix: Actually fix \#3295. [\#3320](https://github.com/VSCodeVim/Vim/pull/3320) ([jpoon](https://github.com/jpoon))
- refactor: disableExtension configuration should follow pattern of rest of configs [\#3318](https://github.com/VSCodeVim/Vim/pull/3318) ([jpoon](https://github.com/jpoon))
- feat: show vim errors in vscode informational window [\#3315](https://github.com/VSCodeVim/Vim/pull/3315) ([jpoon](https://github.com/jpoon))
- fix: log warning if remapped command does not exist. closes \#3307 [\#3314](https://github.com/VSCodeVim/Vim/pull/3314) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency @types/sinon to v7.0.3 [\#3313](https://github.com/VSCodeVim/Vim/pull/3313) ([renovate-bot](https://github.com/renovate-bot))
- v0.17.3 [\#3306](https://github.com/VSCodeVim/Vim/pull/3306) ([jpoon](https://github.com/jpoon))

## [v0.17.3](https://github.com/vscodevim/vim/tree/v0.17.3) (2018-12-30)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.17.2...v0.17.3)

**Enhancements:**

- :on is not an editor command [\#3286](https://github.com/VSCodeVim/Vim/issues/3286)
- editor.wordSeparators setting is ignored [\#3166](https://github.com/VSCodeVim/Vim/issues/3166)
- save \(:w or :wq\) with SSHFS and LiveShare guest don't work properly [\#2956](https://github.com/VSCodeVim/Vim/issues/2956)

**Fixed Bugs:**

- \<c-o\> jumps back to wrong location after 'gd' [\#3277](https://github.com/VSCodeVim/Vim/issues/3277)

**Closed issues:**

- Either slash or colon not working [\#3291](https://github.com/VSCodeVim/Vim/issues/3291)
- s and S Key Commands Not Working [\#3274](https://github.com/VSCodeVim/Vim/issues/3274)
- Extension Host is unresponsive [\#3056](https://github.com/VSCodeVim/Vim/issues/3056)
- Vim mode randomly not functional - show warning [\#2725](https://github.com/VSCodeVim/Vim/issues/2725)
- Is hanging. [\#2629](https://github.com/VSCodeVim/Vim/issues/2629)

**Merged pull requests:**

- fix: sync editor.wordSeparators and vim.iskeyword. closes \#3166 [\#3305](https://github.com/VSCodeVim/Vim/pull/3305) ([jpoon](https://github.com/jpoon))
- feat: add on as alias for only [\#3303](https://github.com/VSCodeVim/Vim/pull/3303) ([jpoon](https://github.com/jpoon))
- fix: \#3277 [\#3302](https://github.com/VSCodeVim/Vim/pull/3302) ([jpoon](https://github.com/jpoon))
- fix saving remote file error [\#3281](https://github.com/VSCodeVim/Vim/pull/3281) ([zhuzisheng](https://github.com/zhuzisheng))

## [v0.17.2](https://github.com/vscodevim/vim/tree/v0.17.2) (2018-12-28)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.17.1...v0.17.2)

**Fixed Bugs:**

- v0.17.1 prints `\<tab\>` string for every tab keystroke [\#3298](https://github.com/VSCodeVim/Vim/issues/3298)

**Merged pull requests:**

- fix: v0.17.1 regression [\#3299](https://github.com/VSCodeVim/Vim/pull/3299) ([jpoon](https://github.com/jpoon))
- v0.17.0-\>v0.17.1 [\#3297](https://github.com/VSCodeVim/Vim/pull/3297) ([jpoon](https://github.com/jpoon))

## [v0.17.1](https://github.com/vscodevim/vim/tree/v0.17.1) (2018-12-28)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.17.0...v0.17.1)

**Fixed Bugs:**

- Keybindings reset on invalid command [\#3295](https://github.com/VSCodeVim/Vim/issues/3295)

**Closed issues:**

- For easy motion plugin, allow user to remap leader key. [\#3244](https://github.com/VSCodeVim/Vim/issues/3244)
- after opening user settings, all Vim keybindings are disabled [\#3029](https://github.com/VSCodeVim/Vim/issues/3029)

**Merged pull requests:**

- fix: ignore remappings with non-existent commands. fixes \#3295 [\#3296](https://github.com/VSCodeVim/Vim/pull/3296) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update node.js to v8.15 [\#3294](https://github.com/VSCodeVim/Vim/pull/3294) ([renovate-bot](https://github.com/renovate-bot))
- fix: slightly improve perf by caching vscode context [\#3293](https://github.com/VSCodeVim/Vim/pull/3293) ([jpoon](https://github.com/jpoon))
- fix: disable nvim shada [\#3288](https://github.com/VSCodeVim/Vim/pull/3288) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency @types/sinon to v7.0.2 [\#3279](https://github.com/VSCodeVim/Vim/pull/3279) ([renovate-bot](https://github.com/renovate-bot))
- refactor: status bar [\#3276](https://github.com/VSCodeVim/Vim/pull/3276) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency @types/node to v9.6.41 [\#3275](https://github.com/VSCodeVim/Vim/pull/3275) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency tslint to v5.12.0 [\#3272](https://github.com/VSCodeVim/Vim/pull/3272) ([renovate-bot](https://github.com/renovate-bot))
- Release [\#3271](https://github.com/VSCodeVim/Vim/pull/3271) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency typescript to v3.2.2 [\#3234](https://github.com/VSCodeVim/Vim/pull/3234) ([renovate-bot](https://github.com/renovate-bot))

## [v0.17.0](https://github.com/vscodevim/vim/tree/v0.17.0) (2018-12-17)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.16.14...v0.17.0)

**Fixed Bugs:**

- Running :reg when clipboard is empty causes an error [\#2898](https://github.com/VSCodeVim/Vim/issues/2898)

**Merged pull requests:**

- Change to use native vscode clipboard [\#3261](https://github.com/VSCodeVim/Vim/pull/3261) ([xconverge](https://github.com/xconverge))
- chore\(deps\): update dependency @types/sinon to v7 [\#3259](https://github.com/VSCodeVim/Vim/pull/3259) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency sinon to v7.2.1 [\#3258](https://github.com/VSCodeVim/Vim/pull/3258) ([renovate-bot](https://github.com/renovate-bot))
- v0.16.13 -\> v0.16.14 [\#3257](https://github.com/VSCodeVim/Vim/pull/3257) ([jpoon](https://github.com/jpoon))

## [v0.16.14](https://github.com/vscodevim/vim/tree/v0.16.14) (2018-12-11)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.16.13...v0.16.14)

**Enhancements:**

- Add support for new grid layout with splits [\#2696](https://github.com/VSCodeVim/Vim/issues/2696)

**Fixed Bugs:**

- It seems % command is not treated like a motion [\#3138](https://github.com/VSCodeVim/Vim/issues/3138)

**Closed issues:**

- vim.normalModeKeyBindingsNonRecursive do not work [\#3247](https://github.com/VSCodeVim/Vim/issues/3247)
- Status bar in zen mode [\#3245](https://github.com/VSCodeVim/Vim/issues/3245)
- When closing a window with `:q` VS Code now selects the tab "before" the one you were previously on [\#2984](https://github.com/VSCodeVim/Vim/issues/2984)

**Merged pull requests:**

- chore\(deps\): update dependency vscode to v1.1.26 [\#3256](https://github.com/VSCodeVim/Vim/pull/3256) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency sinon to v7.2.0 [\#3255](https://github.com/VSCodeVim/Vim/pull/3255) ([renovate-bot](https://github.com/renovate-bot))
- Format operator fixes and tests [\#3254](https://github.com/VSCodeVim/Vim/pull/3254) ([watsoncj](https://github.com/watsoncj))
- Added common example for key remapping for £ [\#3250](https://github.com/VSCodeVim/Vim/pull/3250) ([ycmjason](https://github.com/ycmjason))
- chore\(deps\): update dependency @types/lodash to v4.14.119 [\#3246](https://github.com/VSCodeVim/Vim/pull/3246) ([renovate-bot](https://github.com/renovate-bot))
- Re-implement `` and '' with jumpTracker [\#3242](https://github.com/VSCodeVim/Vim/pull/3242) ([dsschnau](https://github.com/dsschnau))
- chore\(deps\): update dependency gulp-typescript to v5 [\#3240](https://github.com/VSCodeVim/Vim/pull/3240) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency prettier to v1.15.3 [\#3236](https://github.com/VSCodeVim/Vim/pull/3236) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency @types/node to v9.6.40 [\#3235](https://github.com/VSCodeVim/Vim/pull/3235) ([renovate-bot](https://github.com/renovate-bot))
- fix typo [\#3230](https://github.com/VSCodeVim/Vim/pull/3230) ([fourcels](https://github.com/fourcels))
- chore\(deps\): update node.js to v8.14 [\#3228](https://github.com/VSCodeVim/Vim/pull/3228) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency vscode to v1.1.24 [\#3224](https://github.com/VSCodeVim/Vim/pull/3224) ([renovate-bot](https://github.com/renovate-bot))
- Fix \#2984: wrong tab selected after :quit [\#3170](https://github.com/VSCodeVim/Vim/pull/3170) ([ohjames](https://github.com/ohjames))

## [v0.16.13](https://github.com/vscodevim/vim/tree/v0.16.13) (2018-11-27)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.16.12...v0.16.13)

**Fixed Bugs:**

- Finding with `?` renders `/` in the status bar instead of `?` [\#3211](https://github.com/VSCodeVim/Vim/issues/3211)
- Test docker - debconf enforces interactive during build [\#3168](https://github.com/VSCodeVim/Vim/issues/3168)

**Closed issues:**

- Problem with insert mode after highlighting in visual mode [\#3174](https://github.com/VSCodeVim/Vim/issues/3174)
- Recursive mapping V key [\#3173](https://github.com/VSCodeVim/Vim/issues/3173)
- Code Action not working when using Vim mappings [\#3160](https://github.com/VSCodeVim/Vim/issues/3160)

**Merged pull requests:**

- v0.16.13 [\#3223](https://github.com/VSCodeVim/Vim/pull/3223) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update node.js to v8.13 [\#3222](https://github.com/VSCodeVim/Vim/pull/3222) ([renovate-bot](https://github.com/renovate-bot))
- display '?' or '/' in status bar in search mode [\#3218](https://github.com/VSCodeVim/Vim/pull/3218) ([dsschnau](https://github.com/dsschnau))
- fix: upgrade sinon 5.0.5-\>5.0.7. prettier 1.14.3-\>1.15.2 [\#3217](https://github.com/VSCodeVim/Vim/pull/3217) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency @types/node to v9.6.39 [\#3215](https://github.com/VSCodeVim/Vim/pull/3215) ([renovate-bot](https://github.com/renovate-bot))
- Fix \#1287: CJK characters\(korean\) overlap each other in insert mode [\#3214](https://github.com/VSCodeVim/Vim/pull/3214) ([Injae-Lee](https://github.com/Injae-Lee))
- chore\(deps\): update dependency @types/node to v9.6.37 [\#3204](https://github.com/VSCodeVim/Vim/pull/3204) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency @types/lodash to v4.14.118 [\#3196](https://github.com/VSCodeVim/Vim/pull/3196) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update node.js to v8.12 [\#3194](https://github.com/VSCodeVim/Vim/pull/3194) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency @types/diff to v3.5.2 [\#3193](https://github.com/VSCodeVim/Vim/pull/3193) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency typescript to v3.1.6 [\#3188](https://github.com/VSCodeVim/Vim/pull/3188) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency @types/node to v9.6.36 [\#3187](https://github.com/VSCodeVim/Vim/pull/3187) ([renovate-bot](https://github.com/renovate-bot))
- docs: update roadmap for split and new [\#3184](https://github.com/VSCodeVim/Vim/pull/3184) ([jpoon](https://github.com/jpoon))
- fix: automerge renovate minor/patch [\#3183](https://github.com/VSCodeVim/Vim/pull/3183) ([jpoon](https://github.com/jpoon))
- Update dependency typescript to v3.1.5 [\#3182](https://github.com/VSCodeVim/Vim/pull/3182) ([renovate-bot](https://github.com/renovate-bot))
- Update dependency typescript to v3.1.4 [\#3175](https://github.com/VSCodeVim/Vim/pull/3175) ([renovate-bot](https://github.com/renovate-bot))
- Issue \#3168 - Ubuntu tests [\#3169](https://github.com/VSCodeVim/Vim/pull/3169) ([pschoffer](https://github.com/pschoffer))
- v0.16.12 [\#3165](https://github.com/VSCodeVim/Vim/pull/3165) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency sinon to v7.1.1 [\#3162](https://github.com/VSCodeVim/Vim/pull/3162) ([renovate-bot](https://github.com/renovate-bot))
- Convert synchronous funcs to async [\#3123](https://github.com/VSCodeVim/Vim/pull/3123) ([kylecarbs](https://github.com/kylecarbs))

## [v0.16.12](https://github.com/vscodevim/vim/tree/v0.16.12) (2018-10-26)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.16.11...v0.16.12)

**Fixed Bugs:**

- Gulp test with Docker fails to launch [\#3152](https://github.com/VSCodeVim/Vim/issues/3152)
- The link to \*Multi-Cursor\* mode in \_\_Table of content\_\_ doesn't work \(in repo\) [\#3149](https://github.com/VSCodeVim/Vim/issues/3149)
- Multi-Cursor + insertModeKeyBinding jk -\> \<Esc\> [\#2752](https://github.com/VSCodeVim/Vim/issues/2752)

**Merged pull requests:**

- Add more Docker documentation [\#3156](https://github.com/VSCodeVim/Vim/pull/3156) ([westim](https://github.com/westim))
- Fix 3152: Upgrade Docker prerequisite libgtk from 2.0 to 3.0 [\#3153](https://github.com/VSCodeVim/Vim/pull/3153) ([westim](https://github.com/westim))
- Fix \#3149: broken table of contents links [\#3151](https://github.com/VSCodeVim/Vim/pull/3151) ([westim](https://github.com/westim))
- Fix for \#2752 [\#3131](https://github.com/VSCodeVim/Vim/pull/3131) ([donald93](https://github.com/donald93))

## [v0.16.11](https://github.com/vscodevim/vim/tree/v0.16.11) (2018-10-19)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.16.10...v0.16.11)

**Closed issues:**

- Version 0.16.10 stuck in insert mode [\#3143](https://github.com/VSCodeVim/Vim/issues/3143)
- fold code block bug [\#3140](https://github.com/VSCodeVim/Vim/issues/3140)
- Escape key stopped being registered so can't exit insert mode [\#3139](https://github.com/VSCodeVim/Vim/issues/3139)

**Merged pull requests:**

- Prevent error on loading search history if no active editor on startup [\#3146](https://github.com/VSCodeVim/Vim/pull/3146) ([shawnaxsom](https://github.com/shawnaxsom))
- v0.16.10 [\#3137](https://github.com/VSCodeVim/Vim/pull/3137) ([jpoon](https://github.com/jpoon))

## [v0.16.10](https://github.com/vscodevim/vim/tree/v0.16.10) (2018-10-14)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.16.9...v0.16.10)

**Enhancements:**

- Previous searches are not saved across sessions [\#3098](https://github.com/VSCodeVim/Vim/issues/3098)
- substitution statefulness [\#3067](https://github.com/VSCodeVim/Vim/issues/3067)
- feat: implement 'changeWordIncludesWhitespace' option [\#2964](https://github.com/VSCodeVim/Vim/pull/2964) ([darfink](https://github.com/darfink))

**Fixed Bugs:**

- Wrong cursor position after using same file in two panels [\#2688](https://github.com/VSCodeVim/Vim/issues/2688)
- Search and replace doesn't work with current line \(.\) and relative lines [\#2384](https://github.com/VSCodeVim/Vim/issues/2384)

**Closed issues:**

- Broken on Insiders build [\#3119](https://github.com/VSCodeVim/Vim/issues/3119)
- Cannot bind \<C-h\> [\#3072](https://github.com/VSCodeVim/Vim/issues/3072)
- CTRL-\[ does not quit the command-line editing mode [\#3019](https://github.com/VSCodeVim/Vim/issues/3019)

**Merged pull requests:**

- chore\(deps\): update dependency sinon to v7 [\#3135](https://github.com/VSCodeVim/Vim/pull/3135) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency typescript to v3.1.3 [\#3130](https://github.com/VSCodeVim/Vim/pull/3130) ([renovate-bot](https://github.com/renovate-bot))
- Update dependency typescript to v3.1.2 [\#3122](https://github.com/VSCodeVim/Vim/pull/3122) ([renovate-bot](https://github.com/renovate-bot))
- Update dependency @types/node to v9.6.35 [\#3121](https://github.com/VSCodeVim/Vim/pull/3121) ([renovate-bot](https://github.com/renovate-bot))
- Update dependency @types/lodash to v4.14.117 [\#3120](https://github.com/VSCodeVim/Vim/pull/3120) ([renovate-bot](https://github.com/renovate-bot))
- Update dependency @types/sinon to v5.0.5 [\#3118](https://github.com/VSCodeVim/Vim/pull/3118) ([renovate-bot](https://github.com/renovate-bot))
- Save search history to a file like commandline history [\#3116](https://github.com/VSCodeVim/Vim/pull/3116) ([xconverge](https://github.com/xconverge))
- fix \(simpler\) - cursor whenever changing editors - closes \#2688 [\#3103](https://github.com/VSCodeVim/Vim/pull/3103) ([captaincaius](https://github.com/captaincaius))
- feature: relative, plus/minus ranges. closes \#2384 [\#3071](https://github.com/VSCodeVim/Vim/pull/3071) ([captaincaius](https://github.com/captaincaius))
- Adding state to substitution command [\#3068](https://github.com/VSCodeVim/Vim/pull/3068) ([captaincaius](https://github.com/captaincaius))

## [v0.16.9](https://github.com/vscodevim/vim/tree/v0.16.9) (2018-10-08)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.16.8...v0.16.9)

**Fixed Bugs:**

- Repeating command \(`.`\) after doing vim-easymotion find character command doesn't work. [\#3111](https://github.com/VSCodeVim/Vim/issues/3111)
- Incrementing / Decrementing numbers doesn't work when it's after a minus sign and a word [\#3057](https://github.com/VSCodeVim/Vim/issues/3057)
- Unexpected behavior with easymotion and `.` as repeat command [\#2310](https://github.com/VSCodeVim/Vim/issues/2310)

**Merged pull requests:**

- support "edit" command [\#3114](https://github.com/VSCodeVim/Vim/pull/3114) ([m59peacemaker](https://github.com/m59peacemaker))
- Minor C-a C-x fix [\#3113](https://github.com/VSCodeVim/Vim/pull/3113) ([xconverge](https://github.com/xconverge))
- Allow dot to repeat after doing any EasyMotion move [\#3112](https://github.com/VSCodeVim/Vim/pull/3112) ([xconverge](https://github.com/xconverge))

## [v0.16.8](https://github.com/vscodevim/vim/tree/v0.16.8) (2018-10-06)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.16.7...v0.16.8)

**Closed issues:**

- \<C -c\> stopped working this morning [\#3110](https://github.com/VSCodeVim/Vim/issues/3110)
- version 0.16.6 cause \<tab\> key insert string for unknown reason [\#3096](https://github.com/VSCodeVim/Vim/issues/3096)
- yank in visual mode doesn't update register 0 [\#3065](https://github.com/VSCodeVim/Vim/issues/3065)
- Paste the yanked text with "0p does no work [\#2554](https://github.com/VSCodeVim/Vim/issues/2554)
- Surround: Keep HTML attributes when changing tags [\#1938](https://github.com/VSCodeVim/Vim/issues/1938)

**Merged pull requests:**

- Fix issues with keybindings when changing to an editor in different mode [\#3108](https://github.com/VSCodeVim/Vim/pull/3108) ([shawnaxsom](https://github.com/shawnaxsom))
- README cleanup [\#3107](https://github.com/VSCodeVim/Vim/pull/3107) ([xconverge](https://github.com/xconverge))
- Update readme based on new feature for surround with attributes [\#3106](https://github.com/VSCodeVim/Vim/pull/3106) ([xconverge](https://github.com/xconverge))
- fixes \#1938 Allow to retain attributes when using surround [\#3105](https://github.com/VSCodeVim/Vim/pull/3105) ([xconverge](https://github.com/xconverge))
- Multiline yank writes to 0 register; fixes \#1214 [\#3087](https://github.com/VSCodeVim/Vim/pull/3087) ([JKillian](https://github.com/JKillian))

## [v0.16.7](https://github.com/vscodevim/vim/tree/v0.16.7) (2018-10-06)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.16.6...v0.16.7)

**Merged pull requests:**

- Update dependency @types/sinon to v5.0.4 [\#3104](https://github.com/VSCodeVim/Vim/pull/3104) ([renovate-bot](https://github.com/renovate-bot))
- Cleanup gt count command [\#3097](https://github.com/VSCodeVim/Vim/pull/3097) ([xconverge](https://github.com/xconverge))
- Update dependency @types/sinon to v5.0.3 [\#3093](https://github.com/VSCodeVim/Vim/pull/3093) ([renovate-bot](https://github.com/renovate-bot))
- Update dependency @types/node to v9.6.34 [\#3092](https://github.com/VSCodeVim/Vim/pull/3092) ([renovate-bot](https://github.com/renovate-bot))
- Update dependency sinon to v6.3.5 [\#3091](https://github.com/VSCodeVim/Vim/pull/3091) ([renovate-bot](https://github.com/renovate-bot))
- Remappings not applying with operators that enter insert mode [\#3090](https://github.com/VSCodeVim/Vim/pull/3090) ([shawnaxsom](https://github.com/shawnaxsom))
- v0.16.6 [\#3085](https://github.com/VSCodeVim/Vim/pull/3085) ([jpoon](https://github.com/jpoon))
- Add support for grid layout [\#2697](https://github.com/VSCodeVim/Vim/pull/2697) ([rodcloutier](https://github.com/rodcloutier))

## [v0.16.6](https://github.com/vscodevim/vim/tree/v0.16.6) (2018-10-02)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.16.5...v0.16.6)

**Fixed Bugs:**

- Confirm-Replace works incorrectly with global substitute for certain types of replace patterns [\#2950](https://github.com/VSCodeVim/Vim/issues/2950)
- Remapping `d` to always delete to black-hole [\#2672](https://github.com/VSCodeVim/Vim/issues/2672)

**Closed issues:**

- Visual Block Mode when not using Ctrl keys [\#3042](https://github.com/VSCodeVim/Vim/issues/3042)
- Investigate reducing startup activation time [\#2947](https://github.com/VSCodeVim/Vim/issues/2947)

**Merged pull requests:**

- Feature/fix black hole operator mappings [\#3081](https://github.com/VSCodeVim/Vim/pull/3081) ([shawnaxsom](https://github.com/shawnaxsom))
- Feature/insert mode optimizations [\#3078](https://github.com/VSCodeVim/Vim/pull/3078) ([shawnaxsom](https://github.com/shawnaxsom))
- Update dependency typescript to v3.1.1 [\#3077](https://github.com/VSCodeVim/Vim/pull/3077) ([renovate-bot](https://github.com/renovate-bot))
- Update dependency @types/node to v9.6.32 [\#3066](https://github.com/VSCodeVim/Vim/pull/3066) ([renovate-bot](https://github.com/renovate-bot))
- Fix substitute with gc flag [\#3055](https://github.com/VSCodeVim/Vim/pull/3055) ([tomotg](https://github.com/tomotg))

## [v0.16.5](https://github.com/vscodevim/vim/tree/v0.16.5) (2018-09-21)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.16.4...v0.16.5)

**Fixed Bugs:**

- keybinding \<c-f\> overwrite vscode's default behavior [\#3050](https://github.com/VSCodeVim/Vim/issues/3050)
- New Jump Tracker doesn't always handle that isn't left open in a tab [\#3039](https://github.com/VSCodeVim/Vim/issues/3039)
- Exiting CommandMode should mimic Vim behavior [\#3035](https://github.com/VSCodeVim/Vim/issues/3035)

**Closed issues:**

- C-o, C-i strange jumping behavior. [\#3047](https://github.com/VSCodeVim/Vim/issues/3047)
- Support vscode's color copy [\#3038](https://github.com/VSCodeVim/Vim/issues/3038)
- Possible for `:new` to a open a new editor in the current group without splitting? [\#2911](https://github.com/VSCodeVim/Vim/issues/2911)
- Support for ' ' \(Jump to previous cursor position\) [\#2031](https://github.com/VSCodeVim/Vim/issues/2031)

**Merged pull requests:**

- Update dependency prettier to v1.14.3 [\#3060](https://github.com/VSCodeVim/Vim/pull/3060) ([renovate-bot](https://github.com/renovate-bot))
- fix `\<C-f\>` in 「Insert」mode [\#3051](https://github.com/VSCodeVim/Vim/pull/3051) ([myhere](https://github.com/myhere))
- Support for line completion \(\<C-x\>\<C-l\>\) [\#3048](https://github.com/VSCodeVim/Vim/pull/3048) ([shawnaxsom](https://github.com/shawnaxsom))
- Update dependency lodash to v4.17.11 [\#3045](https://github.com/VSCodeVim/Vim/pull/3045) ([renovate-bot](https://github.com/renovate-bot))
- Fixed Jump Tracker jumps when jumping from a file that auto closes [\#3041](https://github.com/VSCodeVim/Vim/pull/3041) ([shawnaxsom](https://github.com/shawnaxsom))
- Fix: Missing bindings to exit CommandMode. closes \#3035 [\#3036](https://github.com/VSCodeVim/Vim/pull/3036) ([mxlian](https://github.com/mxlian))

## [v0.16.4](https://github.com/vscodevim/vim/tree/v0.16.4) (2018-09-10)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.16.3...v0.16.4)

**Enhancements:**

- \[FEATURE REQUEST\]visual line mode support A or I [\#2167](https://github.com/VSCodeVim/Vim/issues/2167)

**Closed issues:**

- Moving out of viewport centers the viewport when it shouldn't [\#2998](https://github.com/VSCodeVim/Vim/issues/2998)
- docs: all-contributors [\#2645](https://github.com/VSCodeVim/Vim/issues/2645)
- Make small movement command not registered to Ctrl+o [\#1933](https://github.com/VSCodeVim/Vim/issues/1933)

**Merged pull requests:**

- Feature/improved jump list [\#3028](https://github.com/VSCodeVim/Vim/pull/3028) ([shawnaxsom](https://github.com/shawnaxsom))
- I or A in visual/visual line mode creates multiple cursors \#2167 [\#2993](https://github.com/VSCodeVim/Vim/pull/2993) ([shawnaxsom](https://github.com/shawnaxsom))

## [v0.16.3](https://github.com/vscodevim/vim/tree/v0.16.3) (2018-09-05)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.16.2...v0.16.3)

**Enhancements:**

- Add activationEvent 'onCommand:type' to avoid missing keystrokes [\#3016](https://github.com/VSCodeVim/Vim/issues/3016)
- va{a{ doesn't work [\#2506](https://github.com/VSCodeVim/Vim/issues/2506)

**Closed issues:**

- Expand selection with inner tag selection command [\#2907](https://github.com/VSCodeVim/Vim/issues/2907)

**Merged pull requests:**

- fix: re-enable relativelinenumbers. closes \#3020 [\#3025](https://github.com/VSCodeVim/Vim/pull/3025) ([jpoon](https://github.com/jpoon))
- fix: add activationevent onCommand type. closes \#3016 [\#3023](https://github.com/VSCodeVim/Vim/pull/3023) ([jpoon](https://github.com/jpoon))
- Update dependency winston to v3.1.0 [\#3021](https://github.com/VSCodeVim/Vim/pull/3021) ([renovate-bot](https://github.com/renovate-bot))
- Update dependency diff-match-patch to v1.0.4 [\#3018](https://github.com/VSCodeVim/Vim/pull/3018) ([renovate-bot](https://github.com/renovate-bot))
- Update dependency @types/node to v9.6.31 [\#3011](https://github.com/VSCodeVim/Vim/pull/3011) ([renovate-bot](https://github.com/renovate-bot))
- Fix multiple issues with expand selection commands and pair/block movement [\#2921](https://github.com/VSCodeVim/Vim/pull/2921) ([xmbhasin](https://github.com/xmbhasin))

## [v0.16.2](https://github.com/vscodevim/vim/tree/v0.16.2) (2018-08-30)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.16.1...v0.16.2)

**Closed issues:**

- Intermediate cursor shape to show that a command is being entered [\#2999](https://github.com/VSCodeVim/Vim/issues/2999)

**Merged pull requests:**

- Revert "Center cursor vertically on movement out of viewport" [\#3009](https://github.com/VSCodeVim/Vim/pull/3009) ([hhu94](https://github.com/hhu94))
- Update dependency typescript to v3.0.3 [\#3008](https://github.com/VSCodeVim/Vim/pull/3008) ([renovate-bot](https://github.com/renovate-bot))
- Update vim.searchHighlightColor in README.md [\#3007](https://github.com/VSCodeVim/Vim/pull/3007) ([ytang](https://github.com/ytang))
- v0.16.1 [\#2997](https://github.com/VSCodeVim/Vim/pull/2997) ([jpoon](https://github.com/jpoon))

## [v0.16.1](https://github.com/vscodevim/vim/tree/v0.16.1) (2018-08-27)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.16.0...v0.16.1)

**Fixed Bugs:**

- `:vsp file\_name` cannot open file_name, although this file does exist [\#2983](https://github.com/VSCodeVim/Vim/issues/2983)
- `gf` \(go to file under cursor\) produces the "Vim: The file ... does not exist." error, even though file clearly exists [\#2966](https://github.com/VSCodeVim/Vim/issues/2966)
- Open File with :e deletes file content [\#2963](https://github.com/VSCodeVim/Vim/issues/2963)

**Closed issues:**

- "before": \["\<C-x\>", "C-s\>"\] not work. [\#2949](https://github.com/VSCodeVim/Vim/issues/2949)
- VSCodeVim airline affecting color scheme [\#2948](https://github.com/VSCodeVim/Vim/issues/2948)
- \[Feature Request\] : ReplaceWithRegister [\#2937](https://github.com/VSCodeVim/Vim/issues/2937)
- % should match on strings & chars [\#2935](https://github.com/VSCodeVim/Vim/issues/2935)
- Throw away the mouse [\#2922](https://github.com/VSCodeVim/Vim/issues/2922)
- Wried cursor behavior with INSERT MULTI CURSOR mode [\#2910](https://github.com/VSCodeVim/Vim/issues/2910)

**Merged pull requests:**

- Lazy Load Neovim [\#2992](https://github.com/VSCodeVim/Vim/pull/2992) ([jpoon](https://github.com/jpoon))
- Update dependency @types/node to v9.6.30 [\#2987](https://github.com/VSCodeVim/Vim/pull/2987) ([renovate-bot](https://github.com/renovate-bot))
- Fix type in ROADMAP.md [\#2980](https://github.com/VSCodeVim/Vim/pull/2980) ([nickebbitt](https://github.com/nickebbitt))
- Fix emulated plugins link in README [\#2977](https://github.com/VSCodeVim/Vim/pull/2977) ([jjt](https://github.com/jjt))
- Fix `gf` showing error for files which exist [\#2969](https://github.com/VSCodeVim/Vim/pull/2969) ([arussellk](https://github.com/arussellk))
- Fix Typo in ROADMAP [\#2967](https://github.com/VSCodeVim/Vim/pull/2967) ([AdrieanKhisbe](https://github.com/AdrieanKhisbe))
- Center cursor vertically on movement out of viewport [\#2962](https://github.com/VSCodeVim/Vim/pull/2962) ([hhu94](https://github.com/hhu94))
- chore\(deps\): update dependency vscode to v1.1.21 [\#2958](https://github.com/VSCodeVim/Vim/pull/2958) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency @types/node to v9.6.28 [\#2952](https://github.com/VSCodeVim/Vim/pull/2952) ([renovate-bot](https://github.com/renovate-bot))

## [v0.16.0](https://github.com/vscodevim/vim/tree/v0.16.0) (2018-08-09)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.15.7...v0.16.0)

**Enhancements:**

- Reenable change that minimized the calls to setContext [\#2900](https://github.com/VSCodeVim/Vim/pull/2900) ([xconverge](https://github.com/xconverge))

**Fixed Bugs:**

- Cannot create files with extensions using :e\[dit\] {file} [\#2923](https://github.com/VSCodeVim/Vim/issues/2923)
- :tablast broken with vscode 1.25.0 [\#2813](https://github.com/VSCodeVim/Vim/issues/2813)
- 2gt not goes to the right tab [\#2789](https://github.com/VSCodeVim/Vim/issues/2789)

**Closed issues:**

- "commandlineinprogress": "underline" causes issues [\#2896](https://github.com/VSCodeVim/Vim/issues/2896)
- Quote macro sometimes doubling in Python [\#2662](https://github.com/VSCodeVim/Vim/issues/2662)
- easy motion mapping key problem [\#1894](https://github.com/VSCodeVim/Vim/issues/1894)

**Merged pull requests:**

- bump version [\#2946](https://github.com/VSCodeVim/Vim/pull/2946) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency prettier to v1.14.2 [\#2943](https://github.com/VSCodeVim/Vim/pull/2943) ([renovate-bot](https://github.com/renovate-bot))
- docs: move configs to tables for readability [\#2941](https://github.com/VSCodeVim/Vim/pull/2941) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency @types/node to v9.6.26 [\#2940](https://github.com/VSCodeVim/Vim/pull/2940) ([renovate-bot](https://github.com/renovate-bot))
- docs: clean-up readme [\#2931](https://github.com/VSCodeVim/Vim/pull/2931) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency @types/lodash to v4.14.116 [\#2930](https://github.com/VSCodeVim/Vim/pull/2930) ([renovate-bot](https://github.com/renovate-bot))
- fix: files with extensions not being auto-created. closes \#2923. [\#2928](https://github.com/VSCodeVim/Vim/pull/2928) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency @types/node to v9.6.25 [\#2927](https://github.com/VSCodeVim/Vim/pull/2927) ([renovate-bot](https://github.com/renovate-bot))
- Fix :tablast breaking in vscode 1.25 \#2813 [\#2926](https://github.com/VSCodeVim/Vim/pull/2926) ([Roshanjossey](https://github.com/Roshanjossey))
- chore\(deps\): update dependency typescript to v3 [\#2920](https://github.com/VSCodeVim/Vim/pull/2920) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency gulp-git to v2.8.0 [\#2919](https://github.com/VSCodeVim/Vim/pull/2919) ([renovate-bot](https://github.com/renovate-bot))
- Fix Emulated Plugins TOC link in README [\#2918](https://github.com/VSCodeVim/Vim/pull/2918) ([jjt](https://github.com/jjt))
- fix: use full path for configs [\#2915](https://github.com/VSCodeVim/Vim/pull/2915) ([jpoon](https://github.com/jpoon))
- fix: enable prettier for md [\#2909](https://github.com/VSCodeVim/Vim/pull/2909) ([jpoon](https://github.com/jpoon))
- Update dependency prettier to v1.14.0 [\#2908](https://github.com/VSCodeVim/Vim/pull/2908) ([renovate-bot](https://github.com/renovate-bot))
- Update dependency @types/node to v9.6.24 [\#2906](https://github.com/VSCodeVim/Vim/pull/2906) ([renovate-bot](https://github.com/renovate-bot))
- Update dependency @types/lodash to v4.14.115 [\#2905](https://github.com/VSCodeVim/Vim/pull/2905) ([renovate-bot](https://github.com/renovate-bot))
- Add --grep flag to gulp test [\#2904](https://github.com/VSCodeVim/Vim/pull/2904) ([xmbhasin](https://github.com/xmbhasin))
- Update dependency @types/lodash to v4.14.114 [\#2901](https://github.com/VSCodeVim/Vim/pull/2901) ([renovate-bot](https://github.com/renovate-bot))
- Fix gt tab navigation with count prefix [\#2899](https://github.com/VSCodeVim/Vim/pull/2899) ([xconverge](https://github.com/xconverge))
- Updating README FAQ [\#2894](https://github.com/VSCodeVim/Vim/pull/2894) ([augustnmonteiro](https://github.com/augustnmonteiro))
- refactor baseaction [\#2892](https://github.com/VSCodeVim/Vim/pull/2892) ([jpoon](https://github.com/jpoon))
- Revert "fix: use ferrarimarco's image instead of my fork to generate changelog" [\#2891](https://github.com/VSCodeVim/Vim/pull/2891) ([jpoon](https://github.com/jpoon))
- Integrate SmartIM to VSCodeVim [\#2643](https://github.com/VSCodeVim/Vim/pull/2643) ([daipeihust](https://github.com/daipeihust))

## [v0.15.7](https://github.com/vscodevim/vim/tree/v0.15.7) (2018-07-25)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.15.6...v0.15.7)

**Enhancements:**

- Please use vscode's config folder for .cmdline_history [\#2799](https://github.com/VSCodeVim/Vim/issues/2799)
- Improve neovim command execution status reporting in status bar [\#2878](https://github.com/VSCodeVim/Vim/pull/2878) ([xconverge](https://github.com/xconverge))

**Fixed Bugs:**

- 'r' in insert mode not entered when typed quickly [\#2888](https://github.com/VSCodeVim/Vim/issues/2888)
- Vim extension stops working [\#2873](https://github.com/VSCodeVim/Vim/issues/2873)

**Closed issues:**

- hjkl keys as arrow keys in intellisense contextual menu do not work [\#2885](https://github.com/VSCodeVim/Vim/issues/2885)

**Merged pull requests:**

- Fix issue with incorrectly finding and triggering certain remappings [\#2890](https://github.com/VSCodeVim/Vim/pull/2890) ([xconverge](https://github.com/xconverge))
- Move commandline history to XDG_CACHE_HOME or %APPDATA% [\#2889](https://github.com/VSCodeVim/Vim/pull/2889) ([xconverge](https://github.com/xconverge))
- fix: use ferrarimarco's image instead of my fork to generate changelog [\#2884](https://github.com/VSCodeVim/Vim/pull/2884) ([jpoon](https://github.com/jpoon))
- fix: use map to search for relevant actions. \#2021 [\#2883](https://github.com/VSCodeVim/Vim/pull/2883) ([jpoon](https://github.com/jpoon))
- fix: handle non-string remapped key. closes \#2873 [\#2881](https://github.com/VSCodeVim/Vim/pull/2881) ([jpoon](https://github.com/jpoon))

## [v0.15.6](https://github.com/vscodevim/vim/tree/v0.15.6) (2018-07-24)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.15.5...v0.15.6)

**Merged pull requests:**

- Fix regression with setContext in modeHandler [\#2880](https://github.com/VSCodeVim/Vim/pull/2880) ([xconverge](https://github.com/xconverge))

## [v0.15.5](https://github.com/vscodevim/vim/tree/v0.15.5) (2018-07-24)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.15.4...v0.15.5)

**Merged pull requests:**

- Neovim integration show errors when using commandline at correct times [\#2877](https://github.com/VSCodeVim/Vim/pull/2877) ([xconverge](https://github.com/xconverge))
- Improve error reporting with neovim commandline [\#2876](https://github.com/VSCodeVim/Vim/pull/2876) ([xconverge](https://github.com/xconverge))
- chore\(deps\): update dependency @types/lodash to v4.14.113 [\#2875](https://github.com/VSCodeVim/Vim/pull/2875) ([renovate-bot](https://github.com/renovate-bot))

## [v0.15.4](https://github.com/vscodevim/vim/tree/v0.15.4) (2018-07-24)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.15.3...v0.15.4)

**Enhancements:**

- Moving down at a fold that's at the end of the file causes an infinite loop [\#1855](https://github.com/VSCodeVim/Vim/issues/1855)

**Fixed Bugs:**

- Long key chords does not trigger configured action. [\#2735](https://github.com/VSCodeVim/Vim/issues/2735)
- Cursor jumps erratically before moving vertically [\#2163](https://github.com/VSCodeVim/Vim/issues/2163)

**Closed issues:**

- ^f stopped working after 1.25.1 update [\#2865](https://github.com/VSCodeVim/Vim/issues/2865)
- Switching escape and capslock [\#2859](https://github.com/VSCodeVim/Vim/issues/2859)

**Merged pull requests:**

- fix: add missing wrapkeys to test configuration [\#2871](https://github.com/VSCodeVim/Vim/pull/2871) ([jpoon](https://github.com/jpoon))
- Improve foldfix performance and potentially fix some bugs\(\#1855 \#2163\) [\#2867](https://github.com/VSCodeVim/Vim/pull/2867) ([xmbhasin](https://github.com/xmbhasin))
- Roadmap doc fix for visual mode case switching [\#2866](https://github.com/VSCodeVim/Vim/pull/2866) ([pjlangley](https://github.com/pjlangley))
- Add whichwrap [\#2864](https://github.com/VSCodeVim/Vim/pull/2864) ([davidmfoley](https://github.com/davidmfoley))
- docs: add section on debugging remappings [\#2862](https://github.com/VSCodeVim/Vim/pull/2862) ([jpoon](https://github.com/jpoon))
- Cache mode so that calls to setContext is minimized [\#2861](https://github.com/VSCodeVim/Vim/pull/2861) ([xconverge](https://github.com/xconverge))
- Workaround surround bug [\#2830](https://github.com/VSCodeVim/Vim/pull/2830) ([reujab](https://github.com/reujab))
- Add unit test for long user configured chords. [\#2736](https://github.com/VSCodeVim/Vim/pull/2736) ([regiontog](https://github.com/regiontog))

## [v0.15.3](https://github.com/vscodevim/vim/tree/v0.15.3) (2018-07-20)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.15.2...v0.15.3)

**Fixed Bugs:**

- :\$ requires additional enter to go to end of buffer [\#2858](https://github.com/VSCodeVim/Vim/issues/2858)

**Merged pull requests:**

- Fixes \$ and % commands [\#2860](https://github.com/VSCodeVim/Vim/pull/2860) ([xconverge](https://github.com/xconverge))
- fixed buggy interactive substitute replacements [\#2857](https://github.com/VSCodeVim/Vim/pull/2857) ([kevintighe](https://github.com/kevintighe))

## [v0.15.2](https://github.com/vscodevim/vim/tree/v0.15.2) (2018-07-19)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.15.1...v0.15.2)

**Fixed Bugs:**

- Change surround tag with tag including a dot [\#2850](https://github.com/VSCodeVim/Vim/issues/2850)
- Delete using \('d' + 'number' + '+/-'\) \(e.g. d5+\) doesn't work like expected. [\#2846](https://github.com/VSCodeVim/Vim/issues/2846)

**Merged pull requests:**

- fixes \#2850 [\#2856](https://github.com/VSCodeVim/Vim/pull/2856) ([xconverge](https://github.com/xconverge))
- fix: don't run test when launching through vscode [\#2854](https://github.com/VSCodeVim/Vim/pull/2854) ([jpoon](https://github.com/jpoon))
- v0.15.1 [\#2853](https://github.com/VSCodeVim/Vim/pull/2853) ([jpoon](https://github.com/jpoon))
- Interactive Substitute [\#2851](https://github.com/VSCodeVim/Vim/pull/2851) ([kevintighe](https://github.com/kevintighe))

## [v0.15.1](https://github.com/vscodevim/vim/tree/v0.15.1) (2018-07-17)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.15.0...v0.15.1)

**Enhancements:**

- Option case-insensitive for vim-sneak [\#2829](https://github.com/VSCodeVim/Vim/issues/2829)
- "x" operation far too cpu-hungry [\#1581](https://github.com/VSCodeVim/Vim/issues/1581)

**Fixed Bugs:**

- ctrl+v no longer pastes in insert mode [\#2646](https://github.com/VSCodeVim/Vim/issues/2646)

**Merged pull requests:**

- fix: upgrade winston to 3.0 [\#2852](https://github.com/VSCodeVim/Vim/pull/2852) ([jpoon](https://github.com/jpoon))
- update tslint and fix radix linting [\#2849](https://github.com/VSCodeVim/Vim/pull/2849) ([xconverge](https://github.com/xconverge))
- Update dependency @types/mocha to v5.2.5 [\#2847](https://github.com/VSCodeVim/Vim/pull/2847) ([renovate-bot](https://github.com/renovate-bot))
- gulp release [\#2841](https://github.com/VSCodeVim/Vim/pull/2841) ([jpoon](https://github.com/jpoon))
- Update dependency @types/lodash to v4.14.112 [\#2839](https://github.com/VSCodeVim/Vim/pull/2839) ([renovate-bot](https://github.com/renovate-bot))
- Add config option for sneak to use smartcase and ignorecase [\#2837](https://github.com/VSCodeVim/Vim/pull/2837) ([xconverge](https://github.com/xconverge))

## [v0.15.0](https://github.com/vscodevim/vim/tree/v0.15.0) (2018-07-12)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.14.2...v0.15.0)

**Enhancements:**

- TypeError shown on invalid search command. [\#2823](https://github.com/VSCodeVim/Vim/issues/2823)
- Allow registering keybindings commands using strings [\#2806](https://github.com/VSCodeVim/Vim/issues/2806)

**Fixed Bugs:**

- Keybindings not triggering [\#2833](https://github.com/VSCodeVim/Vim/issues/2833)
- Macro doesn't memoryize `delete` key. [\#2702](https://github.com/VSCodeVim/Vim/issues/2702)
- VimError's does not show up on the status bar [\#2525](https://github.com/VSCodeVim/Vim/issues/2525)

**Merged pull requests:**

- Add "cursor" to commandline entry [\#2836](https://github.com/VSCodeVim/Vim/pull/2836) ([xconverge](https://github.com/xconverge))
- Update issue templates [\#2825](https://github.com/VSCodeVim/Vim/pull/2825) ([jpoon](https://github.com/jpoon))
- Cache the mode for updating status bar colors [\#2822](https://github.com/VSCodeVim/Vim/pull/2822) ([xconverge](https://github.com/xconverge))
- chore\(deps\): update dependency @types/lodash to v4.14.111 [\#2821](https://github.com/VSCodeVim/Vim/pull/2821) ([renovate-bot](https://github.com/renovate-bot))
- Fix quickpick commandline [\#2816](https://github.com/VSCodeVim/Vim/pull/2816) ([xconverge](https://github.com/xconverge))
- Added ability to register commands using simple strings \(fixes \#2806\) [\#2807](https://github.com/VSCodeVim/Vim/pull/2807) ([6A](https://github.com/6A))

## [v0.14.2](https://github.com/vscodevim/vim/tree/v0.14.2) (2018-07-06)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.14.1...v0.14.2)

**Enhancements:**

- \<C-u\> doesn't behave as expected in insert mode [\#2804](https://github.com/VSCodeVim/Vim/issues/2804)
- \(feature\) Add an option to bring commandline back to old place [\#2773](https://github.com/VSCodeVim/Vim/issues/2773)

**Fixed Bugs:**

- 2gt not goes to the right tab [\#2789](https://github.com/VSCodeVim/Vim/issues/2789)
- Repeating a VISUAL LINE indentation is inconsistent with native vim behaviour [\#2606](https://github.com/VSCodeVim/Vim/issues/2606)
- ngt/ngT for tab switching is broken [\#2580](https://github.com/VSCodeVim/Vim/issues/2580)

**Closed issues:**

- editor.cursorStyle not being respected [\#2809](https://github.com/VSCodeVim/Vim/issues/2809)

**Merged pull requests:**

- Make gt work correctly like gT [\#2812](https://github.com/VSCodeVim/Vim/pull/2812) ([xconverge](https://github.com/xconverge))
- chore\(deps\): update dependency @types/node to v9.6.23 [\#2811](https://github.com/VSCodeVim/Vim/pull/2811) ([renovate-bot](https://github.com/renovate-bot))
- feat: Update \<C-u\> insert mode behavior [\#2805](https://github.com/VSCodeVim/Vim/pull/2805) ([mrwest808](https://github.com/mrwest808))
- bump version [\#2797](https://github.com/VSCodeVim/Vim/pull/2797) ([jpoon](https://github.com/jpoon))
- fixes \#2606 [\#2790](https://github.com/VSCodeVim/Vim/pull/2790) ([xconverge](https://github.com/xconverge))
- Allow for quickpick commandline usage [\#2781](https://github.com/VSCodeVim/Vim/pull/2781) ([xconverge](https://github.com/xconverge))

## [v0.14.1](https://github.com/vscodevim/vim/tree/v0.14.1) (2018-06-30)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.14.0...v0.14.1)

**Fixed Bugs:**

- Remapping \> to editor.fold [\#2774](https://github.com/VSCodeVim/Vim/issues/2774)
- Bug: Remapping Numbers \(0-9\) [\#2759](https://github.com/VSCodeVim/Vim/issues/2759)
- At a certain point VSCodeVim "forgets" all remappings for every new tab opened [\#2271](https://github.com/VSCodeVim/Vim/issues/2271)

**Closed issues:**

- 0.14.0 doesn't work on Fedora 28, but 0.13.1 works. [\#2780](https://github.com/VSCodeVim/Vim/issues/2780)
- \[neovim\] Inconsistent behaviour when clicking files in the file tree [\#2770](https://github.com/VSCodeVim/Vim/issues/2770)

**Merged pull requests:**

- doc: emojify readme [\#2796](https://github.com/VSCodeVim/Vim/pull/2796) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency @types/mocha to v5.2.4 [\#2795](https://github.com/VSCodeVim/Vim/pull/2795) ([renovate-bot](https://github.com/renovate-bot))
- fix: enable remapping of numbers [\#2793](https://github.com/VSCodeVim/Vim/pull/2793) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency prettier to v1.13.7 [\#2786](https://github.com/VSCodeVim/Vim/pull/2786) ([renovate-bot](https://github.com/renovate-bot))
- refactor: simplify normalizekey\(\) by using existing map [\#2782](https://github.com/VSCodeVim/Vim/pull/2782) ([jpoon](https://github.com/jpoon))
- fix: fixes bug where null arguments to vscode executecommand would fail [\#2776](https://github.com/VSCodeVim/Vim/pull/2776) ([jpoon](https://github.com/jpoon))

## [v0.14.0](https://github.com/vscodevim/vim/tree/v0.14.0) (2018-06-26)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.13.1...v0.14.0)

**Fixed Bugs:**

- Surround aliases not working as targets [\#2769](https://github.com/VSCodeVim/Vim/issues/2769)
- Ctrl+D stuck on top of the window on visual mode [\#2766](https://github.com/VSCodeVim/Vim/issues/2766)
- Cut two characters but only paste one. [\#2760](https://github.com/VSCodeVim/Vim/issues/2760)
- Paste with CTRL+V while in edit mode does not work [\#2706](https://github.com/VSCodeVim/Vim/issues/2706)
- Can't bind leader key shortcuts to some vscode methods [\#2674](https://github.com/VSCodeVim/Vim/issues/2674)
- Searching forward / backward ignores count [\#2664](https://github.com/VSCodeVim/Vim/issues/2664)

**Closed issues:**

- Yanking/deleting multiline into default register then pasting over other multiline text copies that overwritten multiline text, instead of retaining original yanked text. [\#2717](https://github.com/VSCodeVim/Vim/issues/2717)
- "S" \(capital s\) does not behave properly when on prefixing whitespace [\#2240](https://github.com/VSCodeVim/Vim/issues/2240)
- Bug: Can't navigate in autocompletion with "Ctrl+j" and "Ctrl+k". [\#1980](https://github.com/VSCodeVim/Vim/issues/1980)
- Backwards delete using "X" doesn't allow count prefixes [\#1780](https://github.com/VSCodeVim/Vim/issues/1780)

**Merged pull requests:**

- fixes \#2769 [\#2772](https://github.com/VSCodeVim/Vim/pull/2772) ([xconverge](https://github.com/xconverge))
- Fix \#2766. [\#2771](https://github.com/VSCodeVim/Vim/pull/2771) ([rebornix](https://github.com/rebornix))
- Update dependency prettier to v1.13.6 [\#2768](https://github.com/VSCodeVim/Vim/pull/2768) ([renovate-bot](https://github.com/renovate-bot))
- fixes \#2766 [\#2767](https://github.com/VSCodeVim/Vim/pull/2767) ([xconverge](https://github.com/xconverge))
- fixes \#1980 [\#2765](https://github.com/VSCodeVim/Vim/pull/2765) ([xconverge](https://github.com/xconverge))
- Fixes \#1780 [\#2764](https://github.com/VSCodeVim/Vim/pull/2764) ([xconverge](https://github.com/xconverge))
- fixes \#2664 and removes unused variable [\#2763](https://github.com/VSCodeVim/Vim/pull/2763) ([xconverge](https://github.com/xconverge))
- fixes \#2706 [\#2762](https://github.com/VSCodeVim/Vim/pull/2762) ([xconverge](https://github.com/xconverge))
- fixes \#2760 [\#2761](https://github.com/VSCodeVim/Vim/pull/2761) ([xconverge](https://github.com/xconverge))
- Move commandline to status bar to allow history navigation [\#2758](https://github.com/VSCodeVim/Vim/pull/2758) ([xconverge](https://github.com/xconverge))
- chore\(deps\): update dependency @types/mocha to v5.2.3 [\#2757](https://github.com/VSCodeVim/Vim/pull/2757) ([renovate-bot](https://github.com/renovate-bot))
- v0.13.1 [\#2753](https://github.com/VSCodeVim/Vim/pull/2753) ([jpoon](https://github.com/jpoon))

## [v0.13.1](https://github.com/vscodevim/vim/tree/v0.13.1) (2018-06-19)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.13.0...v0.13.1)

**Closed issues:**

- Remapping ESC in insert mode with CR or Space does work via settings [\#2584](https://github.com/VSCodeVim/Vim/issues/2584)

**Merged pull requests:**

- fix: closes \#1472. insertModeKeyBindings apply to insert and replace modes [\#2749](https://github.com/VSCodeVim/Vim/pull/2749) ([jpoon](https://github.com/jpoon))
- fix: closes \#2390. enables remapping using '\<enter\>' [\#2748](https://github.com/VSCodeVim/Vim/pull/2748) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency @types/lodash to v4.14.110 [\#2745](https://github.com/VSCodeVim/Vim/pull/2745) ([renovate-bot](https://github.com/renovate-bot))
- Update visualModeKeyBindingsNonRecursive example [\#2744](https://github.com/VSCodeVim/Vim/pull/2744) ([chibicode](https://github.com/chibicode))
- Fix \#1348. ctrl+D/U correct position [\#2723](https://github.com/VSCodeVim/Vim/pull/2723) ([rebornix](https://github.com/rebornix))

## [v0.13.0](https://github.com/vscodevim/vim/tree/v0.13.0) (2018-06-18)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.12.0...v0.13.0)

**Breaking changes:**

- Add normalModeKeyBindings and visualModeKeyBindings, remove otherModesKeyBindings [\#2726](https://github.com/VSCodeVim/Vim/pull/2726) ([chibicode](https://github.com/chibicode))

**Enhancements:**

- Allow remappings from mocked configurations during testing. [\#2732](https://github.com/VSCodeVim/Vim/issues/2732)
- use vscode task api [\#2731](https://github.com/VSCodeVim/Vim/issues/2731)
- Add visualModeKeyBindings, in addition to otherModesKeyBindings [\#2705](https://github.com/VSCodeVim/Vim/issues/2705)
- \[FEATURE REQUEST\] "q:" command [\#2617](https://github.com/VSCodeVim/Vim/issues/2617)
- How to make a keybinding only work in visual mode? [\#1805](https://github.com/VSCodeVim/Vim/issues/1805)
- Allow simplified keybinding syntax in settings.json [\#1667](https://github.com/VSCodeVim/Vim/issues/1667)

**Fixed Bugs:**

- gf creates files when the given file does not exist [\#2683](https://github.com/VSCodeVim/Vim/issues/2683)
- Change/Delete/Yank combined with next unmatched bracket/parenthesis not behaving correctly [\#2670](https://github.com/VSCodeVim/Vim/issues/2670)
- \[Bug report\]: 'c' key in multi-cursor mode removes additional cursors [\#2668](https://github.com/VSCodeVim/Vim/issues/2668)

**Closed issues:**

- Keybindings with Alt modifier. [\#2713](https://github.com/VSCodeVim/Vim/issues/2713)
- Commands cc and S do not respect indent level if executed before the first character [\#2497](https://github.com/VSCodeVim/Vim/issues/2497)
- Toggling Vim Mode using keybindings is broken [\#2381](https://github.com/VSCodeVim/Vim/issues/2381)
- Searching finds nothing when pasting from cmd [\#2362](https://github.com/VSCodeVim/Vim/issues/2362)
- Evil mode [\#2328](https://github.com/VSCodeVim/Vim/issues/2328)
- different key bindings for normal and visual mode [\#2205](https://github.com/VSCodeVim/Vim/issues/2205)
- need support for alt+x key mapping [\#2061](https://github.com/VSCodeVim/Vim/issues/2061)
- Keybindings with space don't seem to work [\#2039](https://github.com/VSCodeVim/Vim/issues/2039)
- \[Not Sure\] Copy using Windows Clipboard looses CR/LF [\#2022](https://github.com/VSCodeVim/Vim/issues/2022)
- "TypeError: Cannot read property 'isEqual' of undefined" while debugging an extension with vim enabled [\#2019](https://github.com/VSCodeVim/Vim/issues/2019)
- :m command doesn't work [\#2010](https://github.com/VSCodeVim/Vim/issues/2010)
- pane switching is broken in newest vscode-insiders [\#1973](https://github.com/VSCodeVim/Vim/issues/1973)
- \[Bug\] Copy text destroys special characters [\#1825](https://github.com/VSCodeVim/Vim/issues/1825)

**Merged pull requests:**

- fix: handle when commandLineHistory is empty [\#2741](https://github.com/VSCodeVim/Vim/pull/2741) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency @types/node to v9.6.22 [\#2739](https://github.com/VSCodeVim/Vim/pull/2739) ([renovate-bot](https://github.com/renovate-bot))
- fix: use explicit configuration for logginglevel [\#2738](https://github.com/VSCodeVim/Vim/pull/2738) ([jpoon](https://github.com/jpoon))
- fix: remove duplicate UT [\#2734](https://github.com/VSCodeVim/Vim/pull/2734) ([jpoon](https://github.com/jpoon))
- Don't ignore mocked configurations' remaps during testing. [\#2733](https://github.com/VSCodeVim/Vim/pull/2733) ([regiontog](https://github.com/regiontog))
- chore\(deps\): update dependency typescript to v2.9.2 [\#2730](https://github.com/VSCodeVim/Vim/pull/2730) ([renovate-bot](https://github.com/renovate-bot))
- Fix autoindent on cc/S \#2497 [\#2729](https://github.com/VSCodeVim/Vim/pull/2729) ([dqsully](https://github.com/dqsully))
- chore\(deps\): update dependency @types/mocha to v5.2.2 [\#2724](https://github.com/VSCodeVim/Vim/pull/2724) ([renovate-bot](https://github.com/renovate-bot))
- fix: revert our workaround cursor toggle as this has been fixed in vscode [\#2720](https://github.com/VSCodeVim/Vim/pull/2720) ([jpoon](https://github.com/jpoon))
- feat: use winston for logging [\#2719](https://github.com/VSCodeVim/Vim/pull/2719) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency prettier to v1.13.5 [\#2718](https://github.com/VSCodeVim/Vim/pull/2718) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency @types/node to v9.6.21 [\#2715](https://github.com/VSCodeVim/Vim/pull/2715) ([renovate-bot](https://github.com/renovate-bot))
- Update prettier dependency [\#2712](https://github.com/VSCodeVim/Vim/pull/2712) ([xconverge](https://github.com/xconverge))
- chore\(deps\): update dependency @types/mocha to v5.2.1 [\#2704](https://github.com/VSCodeVim/Vim/pull/2704) ([renovate-bot](https://github.com/renovate-bot))
- fix gf to be like issue \#2683 [\#2701](https://github.com/VSCodeVim/Vim/pull/2701) ([SuyogSoti](https://github.com/SuyogSoti))
- chore\(deps\): update dependency typescript to v2.9.1 [\#2698](https://github.com/VSCodeVim/Vim/pull/2698) ([renovate-bot](https://github.com/renovate-bot))
- Fix vim-commentary description in README [\#2694](https://github.com/VSCodeVim/Vim/pull/2694) ([Ran4](https://github.com/Ran4))
- chore\(deps\): update dependency @types/node to v9.6.20 [\#2691](https://github.com/VSCodeVim/Vim/pull/2691) ([renovate-bot](https://github.com/renovate-bot))
- fix: fix 'no-use-before-declare' requires type information lint warning [\#2679](https://github.com/VSCodeVim/Vim/pull/2679) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency gulp-git to v2.7.0 [\#2678](https://github.com/VSCodeVim/Vim/pull/2678) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency vscode to v1.1.18 [\#2676](https://github.com/VSCodeVim/Vim/pull/2676) ([renovate-bot](https://github.com/renovate-bot))
- Fixed difference in behavior for \]\) and \]} when combined with certain operators [\#2671](https://github.com/VSCodeVim/Vim/pull/2671) ([willcassella](https://github.com/willcassella))
- fix\(deps\): update dependency untildify to v3.0.3 [\#2669](https://github.com/VSCodeVim/Vim/pull/2669) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency mocha to v5.2.0 [\#2666](https://github.com/VSCodeVim/Vim/pull/2666) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency @types/node to v9.6.16 [\#2644](https://github.com/VSCodeVim/Vim/pull/2644) ([renovate-bot](https://github.com/renovate-bot))

## [v0.12.0](https://github.com/vscodevim/vim/tree/v0.12.0) (2018-05-16)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.11.6...v0.12.0)

- Fix development problems on win [\#2651](https://github.com/VSCodeVim/Vim/pull/2651) ([KamikazeZirou](https://github.com/KamikazeZirou))
- Fixes \#2632 [\#2641](https://github.com/VSCodeVim/Vim/pull/2641) ([xconverge](https://github.com/xconverge))
- Revert "\[Fix\] Restore 'when' conditions in \<C-v\>, \<C-j\>, \<C-k\>" [\#2640](https://github.com/VSCodeVim/Vim/pull/2640) ([jpoon](https://github.com/jpoon))
- fix\(deps\): update dependency diff-match-patch to v1.0.1 [\#2631](https://github.com/VSCodeVim/Vim/pull/2631) ([renovate-bot](https://github.com/renovate-bot))
- Update dependency @types/node to v9.6.14 [\#2630](https://github.com/VSCodeVim/Vim/pull/2630) ([renovate-bot](https://github.com/renovate-bot))
- \[Fix\] Restore 'when' conditions in \<C-v\>, \<C-j\>, \<C-k\> [\#2628](https://github.com/VSCodeVim/Vim/pull/2628) ([tyru](https://github.com/tyru))
- Link to Linux setup [\#2627](https://github.com/VSCodeVim/Vim/pull/2627) ([gggauravgandhi](https://github.com/gggauravgandhi))
- fix: immediately exit travis on build error [\#2626](https://github.com/VSCodeVim/Vim/pull/2626) ([jpoon](https://github.com/jpoon))
- fix: immediately exit if there is an error on ts [\#2625](https://github.com/VSCodeVim/Vim/pull/2625) ([jpoon](https://github.com/jpoon))
- feat: log to outputChannel [\#2623](https://github.com/VSCodeVim/Vim/pull/2623) ([jpoon](https://github.com/jpoon))
- Implement "q:" command [\#2618](https://github.com/VSCodeVim/Vim/pull/2618) ([KamikazeZirou](https://github.com/KamikazeZirou))

## [v0.11.6](https://github.com/vscodevim/vim/tree/v0.11.6) (2018-05-07)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.11.5...v0.11.6)

- chore\(deps\): update dependency @types/node to v9.6.12 [\#2615](https://github.com/VSCodeVim/Vim/pull/2615) ([renovate-bot](https://github.com/renovate-bot))
- \[Fix\] \* command highlights extra content [\#2611](https://github.com/VSCodeVim/Vim/pull/2611) ([tyru](https://github.com/tyru))
- \[Fix\] p in visual line appends unnecessary newline [\#2609](https://github.com/VSCodeVim/Vim/pull/2609) ([tyru](https://github.com/tyru))
- chore\(deps\): update dependency tslint to v5.10.0 [\#2605](https://github.com/VSCodeVim/Vim/pull/2605) ([renovate-bot](https://github.com/renovate-bot))
- Add o command in visual block mode [\#2604](https://github.com/VSCodeVim/Vim/pull/2604) ([tyru](https://github.com/tyru))
- \[Fix\] p in visual-mode should update register content [\#2602](https://github.com/VSCodeVim/Vim/pull/2602) ([tyru](https://github.com/tyru))
- \[Fix\] p won't work in linewise visual-mode at the end of document [\#2601](https://github.com/VSCodeVim/Vim/pull/2601) ([tyru](https://github.com/tyru))
- Add missing window keys \(\<C-w\>\<C-\[hjklovq\]\>\) [\#2600](https://github.com/VSCodeVim/Vim/pull/2600) ([tyru](https://github.com/tyru))
- fix: fail on ts transpile errors by setting noEmitOnErrors [\#2599](https://github.com/VSCodeVim/Vim/pull/2599) ([jpoon](https://github.com/jpoon))
- add easymotion-lineforward and easymotion-linebackward [\#2596](https://github.com/VSCodeVim/Vim/pull/2596) ([hy950831](https://github.com/hy950831))
- Fix description in 🔢 % command [\#2595](https://github.com/VSCodeVim/Vim/pull/2595) ([Ding-Fan](https://github.com/Ding-Fan))
- \[Fix\] \<C-h\> should work as same as \<BS\> in search mode [\#2593](https://github.com/VSCodeVim/Vim/pull/2593) ([tyru](https://github.com/tyru))
- \[Fix\] aW doesn't work at the end of lines [\#2591](https://github.com/VSCodeVim/Vim/pull/2591) ([tyru](https://github.com/tyru))
- Implement gn,gN command [\#2589](https://github.com/VSCodeVim/Vim/pull/2589) ([tyru](https://github.com/tyru))
- \[Fix\] p in visual-mode should save last selection [\#2588](https://github.com/VSCodeVim/Vim/pull/2588) ([tyru](https://github.com/tyru))
- \[Fix\] Transition between v,V,\<C-v\> is different with original Vim behavior [\#2581](https://github.com/VSCodeVim/Vim/pull/2581) ([tyru](https://github.com/tyru))
- \[Fix\] Don't add beginning newline of linewise put in visual-mode [\#2579](https://github.com/VSCodeVim/Vim/pull/2579) ([tyru](https://github.com/tyru))
- fix: Manually dispose ModeHandler when no longer needed [\#2577](https://github.com/VSCodeVim/Vim/pull/2577) ([BinaryKhaos](https://github.com/BinaryKhaos))
- chore\(deps\): update dependency vscode to v1.1.16 [\#2575](https://github.com/VSCodeVim/Vim/pull/2575) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency @types/node to v9.6.7 [\#2573](https://github.com/VSCodeVim/Vim/pull/2573) ([renovate-bot](https://github.com/renovate-bot))
- Fixes \#2569. Fix vi{ for nested braces. [\#2572](https://github.com/VSCodeVim/Vim/pull/2572) ([Shadaraman](https://github.com/Shadaraman))
- Fixed neovim spawning in invalid directories [\#2570](https://github.com/VSCodeVim/Vim/pull/2570) ([Chillee](https://github.com/Chillee))
- chore\(deps\): update dependency @types/lodash to v4.14.108 [\#2565](https://github.com/VSCodeVim/Vim/pull/2565) ([renovate-bot](https://github.com/renovate-bot))
- Hopefully fixing the rest of our undo issues [\#2559](https://github.com/VSCodeVim/Vim/pull/2559) ([Chillee](https://github.com/Chillee))

## [v0.11.5](https://github.com/vscodevim/vim/tree/v0.11.5) (2018-04-23)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.11.4...v0.11.5)

- chore\(deps\): update dependency gulp-bump to v3.1.1 [\#2556](https://github.com/VSCodeVim/Vim/pull/2556) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency typescript to v2.8.3 [\#2553](https://github.com/VSCodeVim/Vim/pull/2553) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency @types/node to v9.6.6 [\#2551](https://github.com/VSCodeVim/Vim/pull/2551) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency @types/mocha to v5.2.0 [\#2550](https://github.com/VSCodeVim/Vim/pull/2550) ([renovate-bot](https://github.com/renovate-bot))
- Fixed undo issue given in \#2545 [\#2547](https://github.com/VSCodeVim/Vim/pull/2547) ([Chillee](https://github.com/Chillee))
- chore\(deps\): update dependency mocha to v5.1.1 [\#2546](https://github.com/VSCodeVim/Vim/pull/2546) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency prettier to v1.12.1 [\#2543](https://github.com/VSCodeVim/Vim/pull/2543) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency @types/lodash to v4.14.107 [\#2540](https://github.com/VSCodeVim/Vim/pull/2540) ([renovate-bot](https://github.com/renovate-bot))

## [v0.11.4](https://github.com/vscodevim/vim/tree/v0.11.4) (2018-04-14)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.11.3...v0.11.4)

- fix: don't call prettier when no files updated [\#2539](https://github.com/VSCodeVim/Vim/pull/2539) ([jpoon](https://github.com/jpoon))
- chore\(dep\): upgrade gulp-bump, gulp-git, gulp-typescript, prettier, typescript, vscode [\#2538](https://github.com/VSCodeVim/Vim/pull/2538) ([jpoon](https://github.com/jpoon))
- chore\(deps\): update dependency @types/node to v9.6.5 [\#2535](https://github.com/VSCodeVim/Vim/pull/2535) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency mocha to v5.1.0 [\#2534](https://github.com/VSCodeVim/Vim/pull/2534) ([renovate-bot](https://github.com/renovate-bot))
- docs: update readme to indicate restart of vscode needed [\#2530](https://github.com/VSCodeVim/Vim/pull/2530) ([jdhines](https://github.com/jdhines))
- chore\(deps\): update dependency @types/node to v9.6.4 [\#2528](https://github.com/VSCodeVim/Vim/pull/2528) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency @types/diff to v3.5.1 [\#2527](https://github.com/VSCodeVim/Vim/pull/2527) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency @types/diff to v3.5.0 [\#2523](https://github.com/VSCodeVim/Vim/pull/2523) ([renovate-bot](https://github.com/renovate-bot))
- bug: Neovim not spawned in appropriate directory \(fixes \#2482\) [\#2522](https://github.com/VSCodeVim/Vim/pull/2522) ([Chillee](https://github.com/Chillee))
- bug: fixes behaviour of search when using \* and \# \(fixes \#2517\) [\#2518](https://github.com/VSCodeVim/Vim/pull/2518) ([clamb](https://github.com/clamb))
- chore\(deps\): update dependency @types/node to v9.6.2 [\#2509](https://github.com/VSCodeVim/Vim/pull/2509) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update node docker tag to v8.11 [\#2496](https://github.com/VSCodeVim/Vim/pull/2496) ([renovate-bot](https://github.com/renovate-bot))
- chore\(deps\): update dependency mocha to v5.0.5 [\#2490](https://github.com/VSCodeVim/Vim/pull/2490) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency gulp-tslint to v8.1.3 [\#2489](https://github.com/VSCodeVim/Vim/pull/2489) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency @types/lodash to v4.14.106 [\#2485](https://github.com/VSCodeVim/Vim/pull/2485) ([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): pin dependencies [\#2483](https://github.com/VSCodeVim/Vim/pull/2483) ([renovate[bot]](https://github.com/apps/renovate))
- Configure Renovate [\#2480](https://github.com/VSCodeVim/Vim/pull/2480) ([renovate[bot]](https://github.com/apps/renovate))
- Add jumptoanywhere command for easymotion [\#2454](https://github.com/VSCodeVim/Vim/pull/2454) ([jsonMartin](https://github.com/jsonMartin))

## [v0.11.3](https://github.com/vscodevim/vim/tree/v0.11.3) (2018-03-29)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.11.2...v0.11.3)

- docs: add documentation for installing xsel. fixes \#2071 [\#2476](https://github.com/VSCodeVim/Vim/pull/2476) ([jpoon](https://github.com/jpoon))
- Respect vim.visualstar configuration \(fixes \#2469\) [\#2470](https://github.com/VSCodeVim/Vim/pull/2470) ([ytang](https://github.com/ytang))
- feat: Added \<C-w\>= keybind [\#2453](https://github.com/VSCodeVim/Vim/pull/2453) ([844196](https://github.com/844196))
- neovim.ts: typo in log [\#2451](https://github.com/VSCodeVim/Vim/pull/2451) ([prakashdanish](https://github.com/prakashdanish))
- await openEditorAtIndex1 command [\#2442](https://github.com/VSCodeVim/Vim/pull/2442) ([arussellk](https://github.com/arussellk))

## [v0.11.2](https://github.com/vscodevim/vim/tree/v0.11.2) (2018-03-09)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.11.1...v0.11.2)

- Readds vimState.lastClickWasPastEOL. Fixes \#2404 [\#2433](https://github.com/VSCodeVim/Vim/pull/2433) ([Chillee](https://github.com/Chillee))
- fix: selection in search in visual mode \#2406 [\#2418](https://github.com/VSCodeVim/Vim/pull/2418) ([shortheron](https://github.com/shortheron))

## [v0.11.1](https://github.com/vscodevim/vim/tree/v0.11.1) (2018-03-08)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.11.0...v0.11.1)

- Set the timeout to 0 for waitforcursorupdatestopropagate [\#2428](https://github.com/VSCodeVim/Vim/pull/2428) ([Chillee](https://github.com/Chillee))
- fix: use 'fsPath'. closes \#2422 [\#2426](https://github.com/VSCodeVim/Vim/pull/2426) ([jpoon](https://github.com/jpoon))
- fix: don't overwrite file if file exists. fixes \#2408 [\#2409](https://github.com/VSCodeVim/Vim/pull/2409) ([jpoon](https://github.com/jpoon))
- Fix :tabm to use moveActiveEditor command [\#2405](https://github.com/VSCodeVim/Vim/pull/2405) ([arussellk](https://github.com/arussellk))

## [v0.11.0](https://github.com/vscodevim/vim/tree/v0.11.0) (2018-02-26)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.10.13...v0.11.0)

- Fix :tabe {file} only relative to current file \(\#1162\) [\#2400](https://github.com/VSCodeVim/Vim/pull/2400) ([arussellk](https://github.com/arussellk))
- fix: clean-up neovim processes. closes \#2038 [\#2395](https://github.com/VSCodeVim/Vim/pull/2395) ([jpoon](https://github.com/jpoon))
- refactor: no need to set current mode twice [\#2394](https://github.com/VSCodeVim/Vim/pull/2394) ([jpoon](https://github.com/jpoon))
- feat: create file if file does not exist. closes \#2274 [\#2392](https://github.com/VSCodeVim/Vim/pull/2392) ([jpoon](https://github.com/jpoon))
- fix: status bar when configuration.showcmd is set \(fixes \#2365\) [\#2386](https://github.com/VSCodeVim/Vim/pull/2386) ([jpoon](https://github.com/jpoon))
- `jj` cursor position fix for \#1418 [\#2366](https://github.com/VSCodeVim/Vim/pull/2366) ([prog666](https://github.com/prog666))
- fix: actually run prettier [\#2359](https://github.com/VSCodeVim/Vim/pull/2359) ([jpoon](https://github.com/jpoon))
- feat: implements usage of `insert` to toggle between modes \(as per \#1787\) [\#2356](https://github.com/VSCodeVim/Vim/pull/2356) ([jpoon](https://github.com/jpoon))
- Build Improvements [\#2351](https://github.com/VSCodeVim/Vim/pull/2351) ([jpoon](https://github.com/jpoon))
- Possibility to set statusBar foreground color [\#2350](https://github.com/VSCodeVim/Vim/pull/2350) ([mgor](https://github.com/mgor))
- Fixes \#2346 [\#2347](https://github.com/VSCodeVim/Vim/pull/2347) ([Chillee](https://github.com/Chillee))
- Improve Test Infrastructure [\#2335](https://github.com/VSCodeVim/Vim/pull/2335) ([jpoon](https://github.com/jpoon))
- fix typo in README [\#2327](https://github.com/VSCodeVim/Vim/pull/2327) ([hayley](https://github.com/hayley))
- Sneak plugin [\#2307](https://github.com/VSCodeVim/Vim/pull/2307) ([jpotterm](https://github.com/jpotterm))

## [v0.10.13](https://github.com/vscodevim/vim/tree/v0.10.13) (2018-01-23)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.10.12...v0.10.13)

- fix: bad jason. fix bad release. [\#2324](https://github.com/VSCodeVim/Vim/pull/2324) ([jpoon](https://github.com/jpoon))

## [v0.10.12](https://github.com/vscodevim/vim/tree/v0.10.12) (2018-01-23)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.10.11...v0.10.12)

- fix: closes \#730. setcontext when switching active text editors [\#2320](https://github.com/VSCodeVim/Vim/pull/2320) ([jpoon](https://github.com/jpoon))
- Update README for Mac key repeat [\#2316](https://github.com/VSCodeVim/Vim/pull/2316) ([puradox](https://github.com/puradox))
- Default to vim behaviour for Ctrl+D [\#2314](https://github.com/VSCodeVim/Vim/pull/2314) ([Graham42](https://github.com/Graham42))
- Left shift fix 2299 [\#2300](https://github.com/VSCodeVim/Vim/pull/2300) ([jessewmc](https://github.com/jessewmc))

## [v0.10.11](https://github.com/vscodevim/vim/tree/v0.10.11) (2018-01-18)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.10.10...v0.10.11)

- fix: status bar not updating properly when recording macros. fixes \#2296. [\#2304](https://github.com/VSCodeVim/Vim/pull/2304) ([jpoon](https://github.com/jpoon))

## [v0.10.10](https://github.com/vscodevim/vim/tree/v0.10.10) (2018-01-16)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.10.9...v0.10.10)

- fix: add tests for compareKeyPressSequence [\#2289](https://github.com/VSCodeVim/Vim/pull/2289) ([jpoon](https://github.com/jpoon))
- Fix BaseAction.couldActionApply to work with two-dimensional keys array [\#2288](https://github.com/VSCodeVim/Vim/pull/2288) ([jpotterm](https://github.com/jpotterm))
- refactor: move modehandlermap to own class [\#2285](https://github.com/VSCodeVim/Vim/pull/2285) ([jpoon](https://github.com/jpoon))
- fix: status bar not updating following toggle [\#2283](https://github.com/VSCodeVim/Vim/pull/2283) ([jpoon](https://github.com/jpoon))
- Fix: Warnings when retrieving configurations w/o resource [\#2282](https://github.com/VSCodeVim/Vim/pull/2282) ([jpoon](https://github.com/jpoon))
- fix: \<C-d\> remapping disabled by default. functionality controlled by "handleKeys" [\#2269](https://github.com/VSCodeVim/Vim/pull/2269) ([Arxzin](https://github.com/Arxzin))

## [v0.10.9](https://github.com/vscodevim/vim/tree/v0.10.9) (2018-01-11)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.10.8...v0.10.9)

- feature: "h", "l" keybindings for sidebar [\#2290](https://github.com/VSCodeVim/Vim/pull/2290) ([Nodman](https://github.com/Nodman))
- fix: no need to change cursor if there is no active editor. closes \#2273 [\#2278](https://github.com/VSCodeVim/Vim/pull/2278) ([jpoon](https://github.com/jpoon))
- fix: fixes circular dependency between notation and configuration [\#2277](https://github.com/VSCodeVim/Vim/pull/2277) ([jpoon](https://github.com/jpoon))
- fix: show cmd-line errors in status bar. add new E492 error [\#2272](https://github.com/VSCodeVim/Vim/pull/2272) ([jpoon](https://github.com/jpoon))
- refactor: normalize keys when loading configuration [\#2268](https://github.com/VSCodeVim/Vim/pull/2268) ([jpoon](https://github.com/jpoon))

## [v0.10.8](https://github.com/vscodevim/vim/tree/v0.10.8) (2018-01-05)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.10.7...v0.10.8)

- fix\(2162\): handleKeys was previously only handling negation [\#2267](https://github.com/VSCodeVim/Vim/pull/2267) ([jpoon](https://github.com/jpoon))
- fix\(2264\): go-to-line [\#2266](https://github.com/VSCodeVim/Vim/pull/2266) ([jpoon](https://github.com/jpoon))
- fix\(2261\): change status bar text for search-in-progress to be more l… [\#2263](https://github.com/VSCodeVim/Vim/pull/2263) ([jpoon](https://github.com/jpoon))
- fix\(2261\): fix regression. show search string in status bar [\#2262](https://github.com/VSCodeVim/Vim/pull/2262) ([jpoon](https://github.com/jpoon))

## [v0.10.7](https://github.com/vscodevim/vim/tree/v0.10.7) (2018-01-04)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.10.6...v0.10.7)

- Stop Silently Failing [\#2250](https://github.com/VSCodeVim/Vim/pull/2250) ([jpoon](https://github.com/jpoon))
- Misc Bug Fixes and Refactoring [\#2243](https://github.com/VSCodeVim/Vim/pull/2243) ([jpoon](https://github.com/jpoon))
- fix\(2184\): handle situation when no document is opened [\#2237](https://github.com/VSCodeVim/Vim/pull/2237) ([jpoon](https://github.com/jpoon))

## [v0.10.6](https://github.com/vscodevim/vim/tree/v0.10.6) (2017-12-15)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.10.5...v0.10.6)

- update\(package.json\) [\#2225](https://github.com/VSCodeVim/Vim/pull/2225) ([jpoon](https://github.com/jpoon))
- Add C-\[ to Replace Mode escape [\#2223](https://github.com/VSCodeVim/Vim/pull/2223) ([deybhayden](https://github.com/deybhayden))
- Do not open open file dialog when calling `:e!` [\#2215](https://github.com/VSCodeVim/Vim/pull/2215) ([squgeim](https://github.com/squgeim))
- Update `list.\*` command keybindings [\#2213](https://github.com/VSCodeVim/Vim/pull/2213) ([joaomoreno](https://github.com/joaomoreno))
- moar clean-up [\#2208](https://github.com/VSCodeVim/Vim/pull/2208) ([jpoon](https://github.com/jpoon))
- Fix cursor position of \<C-o\> command in insertmode [\#2206](https://github.com/VSCodeVim/Vim/pull/2206) ([hy950831](https://github.com/hy950831))
- refactor\(modehandler-updateview\): use map and remove unused context [\#2197](https://github.com/VSCodeVim/Vim/pull/2197) ([jpoon](https://github.com/jpoon))
- Integrate TravisBuddy [\#2191](https://github.com/VSCodeVim/Vim/pull/2191) ([bluzi](https://github.com/bluzi))
- Fix \#2168: Surround offset [\#2171](https://github.com/VSCodeVim/Vim/pull/2171) ([westim](https://github.com/westim))
- Fix \#1945 \$ in VisualBlock works on ragged lines [\#2096](https://github.com/VSCodeVim/Vim/pull/2096) ([Strafos](https://github.com/Strafos))

## [v0.10.5](https://github.com/vscodevim/vim/tree/v0.10.5) (2017-11-21)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.10.4...v0.10.5)

- Fixed incorrect styling of 'fake' cursors [\#2161](https://github.com/VSCodeVim/Vim/pull/2161) ([Chillee](https://github.com/Chillee))
- Fix \#2155, Fix \#2133: escape delimiter substitute [\#2159](https://github.com/VSCodeVim/Vim/pull/2159) ([westim](https://github.com/westim))
- Fix \#2148: vertical split command [\#2158](https://github.com/VSCodeVim/Vim/pull/2158) ([westim](https://github.com/westim))
- fix\(1673\): re-enable some tests [\#2152](https://github.com/VSCodeVim/Vim/pull/2152) ([jpoon](https://github.com/jpoon))
- keep workbench color customizations when using status bar color [\#2122](https://github.com/VSCodeVim/Vim/pull/2122) ([rodrigo-garcia-leon](https://github.com/rodrigo-garcia-leon))

## [v0.10.4](https://github.com/vscodevim/vim/tree/v0.10.4) (2017-11-14)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.10.3...v0.10.4)

- fix\(2145\): reverse logic [\#2147](https://github.com/VSCodeVim/Vim/pull/2147) ([jpoon](https://github.com/jpoon))

## [v0.10.3](https://github.com/vscodevim/vim/tree/v0.10.3) (2017-11-13)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.10.2...v0.10.3)

- Fix release [\#2142](https://github.com/VSCodeVim/Vim/pull/2142) ([jpoon](https://github.com/jpoon))
- Code Cleanup [\#2138](https://github.com/VSCodeVim/Vim/pull/2138) ([jpoon](https://github.com/jpoon))
- Fixed typo in README [\#2137](https://github.com/VSCodeVim/Vim/pull/2137) ([Nonoctis](https://github.com/Nonoctis))
- fix\(travis\): use lts/carbon \(v8.9.1\) for travis [\#2129](https://github.com/VSCodeVim/Vim/pull/2129) ([jpoon](https://github.com/jpoon))
- Fix ^, \$, add case sensitivity override in search [\#2123](https://github.com/VSCodeVim/Vim/pull/2123) ([parkovski](https://github.com/parkovski))
- fix vscode launch/tasks [\#2121](https://github.com/VSCodeVim/Vim/pull/2121) ([jpoon](https://github.com/jpoon))
- Fix remapping keys to actions with "mustBeFirstKey", fixes \#2216 [\#2117](https://github.com/VSCodeVim/Vim/pull/2117) ([ohjames](https://github.com/ohjames))
- Fixes \#2113: Start in Disabled mode configuration. [\#2115](https://github.com/VSCodeVim/Vim/pull/2115) ([westim](https://github.com/westim))
- fix\(line-endings\): change all files to lf [\#2111](https://github.com/VSCodeVim/Vim/pull/2111) ([jpoon](https://github.com/jpoon))
- fix\(build\): position does not exist for replacetexttransformation [\#2105](https://github.com/VSCodeVim/Vim/pull/2105) ([jpoon](https://github.com/jpoon))
- Use 'editor.unfold' with direction: 'down' [\#2104](https://github.com/VSCodeVim/Vim/pull/2104) ([aeschli](https://github.com/aeschli))
- Pesky penguin CHANGELOG.md update. [\#2091](https://github.com/VSCodeVim/Vim/pull/2091) ([westim](https://github.com/westim))
- Added unit tests for movement commands. [\#2088](https://github.com/VSCodeVim/Vim/pull/2088) ([westim](https://github.com/westim))
- Fix \#2080 [\#2087](https://github.com/VSCodeVim/Vim/pull/2087) ([Strafos](https://github.com/Strafos))
- Update Contributors [\#2083](https://github.com/VSCodeVim/Vim/pull/2083) ([mcsosa121](https://github.com/mcsosa121))
- Fixes \#1974: U command [\#2081](https://github.com/VSCodeVim/Vim/pull/2081) ([westim](https://github.com/westim))
- Fix \#2063 [\#2079](https://github.com/VSCodeVim/Vim/pull/2079) ([Strafos](https://github.com/Strafos))
- Fix \#1852 surround issue at end of line [\#2077](https://github.com/VSCodeVim/Vim/pull/2077) ([Strafos](https://github.com/Strafos))
- added `showOpenDialog` when typing emtpy e [\#2067](https://github.com/VSCodeVim/Vim/pull/2067) ([DanEEStar](https://github.com/DanEEStar))
- Fix gj/gk in visual block mode [\#2046](https://github.com/VSCodeVim/Vim/pull/2046) ([orn688](https://github.com/orn688))

## [v0.10.2](https://github.com/vscodevim/vim/tree/v0.10.2) (2017-10-14)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.10.1...v0.10.2)

- Update ROADMAP.md [\#2073](https://github.com/VSCodeVim/Vim/pull/2073) ([xconverge](https://github.com/xconverge))
- Change ignoreFocusOut to false for the command line [\#2072](https://github.com/VSCodeVim/Vim/pull/2072) ([gadkadosh](https://github.com/gadkadosh))
- Upgrade packages [\#2070](https://github.com/VSCodeVim/Vim/pull/2070) ([jpoon](https://github.com/jpoon))
- fixes \#1576 and showcmd configuration option [\#2069](https://github.com/VSCodeVim/Vim/pull/2069) ([xconverge](https://github.com/xconverge))
- removed code which is not needed anymore due to \#2062 [\#2065](https://github.com/VSCodeVim/Vim/pull/2065) ([DanEEStar](https://github.com/DanEEStar))
- An option to show the colon at the start of the command line box [\#2064](https://github.com/VSCodeVim/Vim/pull/2064) ([gadkadosh](https://github.com/gadkadosh))
- Bugfix \#1951: text selection in insert mode [\#2062](https://github.com/VSCodeVim/Vim/pull/2062) ([DanEEStar](https://github.com/DanEEStar))
- Dispose modehandler if NO documents match the modehandler document anymore [\#2058](https://github.com/VSCodeVim/Vim/pull/2058) ([xconverge](https://github.com/xconverge))
- Fixes \#2050 Allow custom cursor styles per mode [\#2054](https://github.com/VSCodeVim/Vim/pull/2054) ([xconverge](https://github.com/xconverge))
- Fixes \#1824: g; and g, commands. [\#2040](https://github.com/VSCodeVim/Vim/pull/2040) ([westim](https://github.com/westim))
- Fixes \#1248: support for '., `., and gi commands. [\#2037](https://github.com/VSCodeVim/Vim/pull/2037) ([westim](https://github.com/westim))
- Fix for issue \#1860, visual multicursor movement. [\#2036](https://github.com/VSCodeVim/Vim/pull/2036) ([westim](https://github.com/westim))
- Fix a typo [\#2028](https://github.com/VSCodeVim/Vim/pull/2028) ([joonro](https://github.com/joonro))

## [v0.10.1](https://github.com/vscodevim/vim/tree/v0.10.1) (2017-09-16)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.10.0...v0.10.1)

- Fixing travis issues [\#2024](https://github.com/VSCodeVim/Vim/pull/2024) ([Chillee](https://github.com/Chillee))
- Correct behavior of mouseSelectionGoesIntoVisualMode [\#2020](https://github.com/VSCodeVim/Vim/pull/2020) ([nguymin4](https://github.com/nguymin4))
- Easymotion improvements [\#2017](https://github.com/VSCodeVim/Vim/pull/2017) ([MaxfieldWalker](https://github.com/MaxfieldWalker))
- fix \#2009 [\#2012](https://github.com/VSCodeVim/Vim/pull/2012) ([MaxfieldWalker](https://github.com/MaxfieldWalker))
- Fix deref of undefined race on startup. [\#2002](https://github.com/VSCodeVim/Vim/pull/2002) ([brandonbloom](https://github.com/brandonbloom))
- Use Go To Def & history absent a tag stack. [\#2001](https://github.com/VSCodeVim/Vim/pull/2001) ([brandonbloom](https://github.com/brandonbloom))
- Fix\#1981 [\#1997](https://github.com/VSCodeVim/Vim/pull/1997) ([MaxfieldWalker](https://github.com/MaxfieldWalker))
- Improvements to paragraph text objects. [\#1996](https://github.com/VSCodeVim/Vim/pull/1996) ([brandonbloom](https://github.com/brandonbloom))
- Implement '' and ``. [\#1993](https://github.com/VSCodeVim/Vim/pull/1993) ([brandonbloom](https://github.com/brandonbloom))

## [v0.10.0](https://github.com/vscodevim/vim/tree/v0.10.0) (2017-08-30)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.9.0...v0.10.0)

- Make prettier work on Windows [\#1987](https://github.com/VSCodeVim/Vim/pull/1987) ([MaxfieldWalker](https://github.com/MaxfieldWalker))
- Remove flaky tests [\#1982](https://github.com/VSCodeVim/Vim/pull/1982) ([Chillee](https://github.com/Chillee))
- Fixed iW on beginning of word \(\#1935\) [\#1977](https://github.com/VSCodeVim/Vim/pull/1977) ([Ghust1995](https://github.com/Ghust1995))
- Easymotion new features [\#1967](https://github.com/VSCodeVim/Vim/pull/1967) ([MaxfieldWalker](https://github.com/MaxfieldWalker))
- Trying to fix the travis issues with neovim [\#1958](https://github.com/VSCodeVim/Vim/pull/1958) ([Chillee](https://github.com/Chillee))
- Fixes \#1941: Action repetition with Ctrl-\[ [\#1953](https://github.com/VSCodeVim/Vim/pull/1953) ([tagniam](https://github.com/tagniam))
- Fixes \#1950: counter for \$ [\#1952](https://github.com/VSCodeVim/Vim/pull/1952) ([tagniam](https://github.com/tagniam))
- Makes all tests pass on Windows [\#1939](https://github.com/VSCodeVim/Vim/pull/1939) ([philipmat](https://github.com/philipmat))
- Update tests due to VSCode PR 28238 [\#1926](https://github.com/VSCodeVim/Vim/pull/1926) ([philipmat](https://github.com/philipmat))
- fix `z O` unfoldRecursively [\#1924](https://github.com/VSCodeVim/Vim/pull/1924) ([VincentBel](https://github.com/VincentBel))
- Renamed test to reflect purpose [\#1913](https://github.com/VSCodeVim/Vim/pull/1913) ([philipmat](https://github.com/philipmat))
- Ctrl-C should copy to clipboard in visual mode - fix for \#1896 [\#1912](https://github.com/VSCodeVim/Vim/pull/1912) ([philipmat](https://github.com/philipmat))
- Substitute global flag \(like Vim's `gdefault`\) [\#1909](https://github.com/VSCodeVim/Vim/pull/1909) ([philipmat](https://github.com/philipmat))
- Fixes \#1871: Adds configuration option to go into visual mode upon clicking in insert mode [\#1898](https://github.com/VSCodeVim/Vim/pull/1898) ([Chillee](https://github.com/Chillee))
- Fixes \#1886: indent repeat doesn't work in visual mode [\#1890](https://github.com/VSCodeVim/Vim/pull/1890) ([Chillee](https://github.com/Chillee))
- Formattted everything with prettier [\#1879](https://github.com/VSCodeVim/Vim/pull/1879) ([Chillee](https://github.com/Chillee))

## [v0.9.0](https://github.com/vscodevim/vim/tree/v0.9.0) (2017-06-24)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.8.7...v0.9.0)

- fixes \#1861 [\#1868](https://github.com/VSCodeVim/Vim/pull/1868) ([xconverge](https://github.com/xconverge))
- Fix off by one error in visual mode [\#1862](https://github.com/VSCodeVim/Vim/pull/1862) ([Chillee](https://github.com/Chillee))

## [v0.8.7](https://github.com/vscodevim/vim/tree/v0.8.7) (2017-06-23)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.8.6...v0.8.7)

- Added :only command and corresponding shortcuts [\#1882](https://github.com/VSCodeVim/Vim/pull/1882) ([LeonB](https://github.com/LeonB))
- Select in visual mode when scrolling [\#1859](https://github.com/VSCodeVim/Vim/pull/1859) ([Chillee](https://github.com/Chillee))
- Fixes \#1857: P not creating an undo stop [\#1858](https://github.com/VSCodeVim/Vim/pull/1858) ([Chillee](https://github.com/Chillee))
- Fixes \#979: Adds q! to close without saving [\#1854](https://github.com/VSCodeVim/Vim/pull/1854) ([Chillee](https://github.com/Chillee))
- Update README.md \(minor\) [\#1851](https://github.com/VSCodeVim/Vim/pull/1851) ([BlueDrink9](https://github.com/BlueDrink9))
- fixes \#1843 A and I preceded by count [\#1846](https://github.com/VSCodeVim/Vim/pull/1846) ([xconverge](https://github.com/xconverge))
- WIP Fixes \#754: Adds j,k,o,\<Enter\>, gg, G, ctrl+d, and ctrl+u commands for navigating inside the file explorer [\#1718](https://github.com/VSCodeVim/Vim/pull/1718) ([Chillee](https://github.com/Chillee))

## [v0.8.6](https://github.com/vscodevim/vim/tree/v0.8.6) (2017-06-15)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.8.5...v0.8.6)

- Removed solid block cursor [\#1842](https://github.com/VSCodeVim/Vim/pull/1842) ([Chillee](https://github.com/Chillee))
- Fix yiw cursor pos [\#1837](https://github.com/VSCodeVim/Vim/pull/1837) ([xconverge](https://github.com/xconverge))
- Fixes \#1794: Undo not undoing all changes [\#1833](https://github.com/VSCodeVim/Vim/pull/1833) ([Chillee](https://github.com/Chillee))
- Fixes \#1827: Autocomplete fails when any lines are wrapped/folded [\#1832](https://github.com/VSCodeVim/Vim/pull/1832) ([Chillee](https://github.com/Chillee))
- Fixes \#1826: Jump to line with neovim disabled doesn't work [\#1831](https://github.com/VSCodeVim/Vim/pull/1831) ([Chillee](https://github.com/Chillee))

## [v0.8.5](https://github.com/vscodevim/vim/tree/v0.8.5) (2017-06-11)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.8.4...v0.8.5)

- Fixes \#1814: Undo history getting deleted when file changes [\#1820](https://github.com/VSCodeVim/Vim/pull/1820) ([Chillee](https://github.com/Chillee))
- Fixes \#1200: :e doesn't expand tildes [\#1819](https://github.com/VSCodeVim/Vim/pull/1819) ([Chillee](https://github.com/Chillee))
- Fixes \#1786: Adds relative line ranges [\#1810](https://github.com/VSCodeVim/Vim/pull/1810) ([Chillee](https://github.com/Chillee))
- Fixed \#1803: zc automatically reopens folds if the fold is performed in the middle. [\#1809](https://github.com/VSCodeVim/Vim/pull/1809) ([Chillee](https://github.com/Chillee))
- Vertical split shortcut keys [\#1795](https://github.com/VSCodeVim/Vim/pull/1795) ([beefsack](https://github.com/beefsack))

## [v0.8.4](https://github.com/vscodevim/vim/tree/v0.8.4) (2017-05-29)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.8.3...v0.8.4)

- Fixes \#1743: Fixed pasting over visual mode with named register overwriting the named register [\#1777](https://github.com/VSCodeVim/Vim/pull/1777) ([Chillee](https://github.com/Chillee))
- Fixes \#1760: Deindenting not working properly with neovim ex-commands [\#1770](https://github.com/VSCodeVim/Vim/pull/1770) ([Chillee](https://github.com/Chillee))
- Fixes \#1768: Backspace deletes more than one tab when tabs are mandated by language specific settings [\#1769](https://github.com/VSCodeVim/Vim/pull/1769) ([Chillee](https://github.com/Chillee))
- More v8 patches [\#1766](https://github.com/VSCodeVim/Vim/pull/1766) ([Chillee](https://github.com/Chillee))
- fixed \#1027 maybe? [\#1740](https://github.com/VSCodeVim/Vim/pull/1740) ([Chillee](https://github.com/Chillee))

## [v0.8.3](https://github.com/vscodevim/vim/tree/v0.8.3) (2017-05-26)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.8.2...v0.8.3)

## [v0.8.2](https://github.com/vscodevim/vim/tree/v0.8.2) (2017-05-26)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.8.1...v0.8.2)

- Fixes \#1750: gq doesn't work for JSDoc type comments [\#1759](https://github.com/VSCodeVim/Vim/pull/1759) ([Chillee](https://github.com/Chillee))
- Some patches for v0.8.0 [\#1757](https://github.com/VSCodeVim/Vim/pull/1757) ([Chillee](https://github.com/Chillee))

## [v0.8.1](https://github.com/vscodevim/vim/tree/v0.8.1) (2017-05-26)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.8.0...v0.8.1)

- Fixes \#1752: Tab Completion [\#1753](https://github.com/VSCodeVim/Vim/pull/1753) ([Chillee](https://github.com/Chillee))

## [v0.8.0](https://github.com/vscodevim/vim/tree/v0.8.0) (2017-05-25)

[Full Changelog](https://github.com/vscodevim/vim/compare/v0.7.1...v0.8.0)

- Fixes \#1749: \<D-d\> in insert mode doesn't work when the word isn't by itself [\#1748](https://github.com/VSCodeVim/Vim/pull/1748) ([Chillee](https://github.com/Chillee))
- Added automatic changelog generator [\#1747](https://github.com/VSCodeVim/Vim/pull/1747) ([Chillee](https://github.com/Chillee))
- Actually readded \<c-j\> and \<c-k\> [\#1730](https://github.com/VSCodeVim/Vim/pull/1730) ([Chillee](https://github.com/Chillee))
- Revert "Unfixes \#1720" [\#1729](https://github.com/VSCodeVim/Vim/pull/1729) ([Chillee](https://github.com/Chillee))
- Unfixes \#1720 [\#1728](https://github.com/VSCodeVim/Vim/pull/1728) ([Chillee](https://github.com/Chillee))
- Embedding Neovim for Ex commands [\#1725](https://github.com/VSCodeVim/Vim/pull/1725) ([Chillee](https://github.com/Chillee))
- Fixes \#1720: Removed unused \<c- \> bindings from package.json [\#1722](https://github.com/VSCodeVim/Vim/pull/1722) ([Chillee](https://github.com/Chillee))
- Fixes \#1376: \<C-a\> doesn't work correctly when a word has more than 1 number [\#1721](https://github.com/VSCodeVim/Vim/pull/1721) ([Chillee](https://github.com/Chillee))
- Fixes \#1715: Adds multicursor paste [\#1717](https://github.com/VSCodeVim/Vim/pull/1717) ([Chillee](https://github.com/Chillee))
- Fixes \#1534, \#1518, \#1716, \#1618, \#1450: Refactored repeating motions [\#1712](https://github.com/VSCodeVim/Vim/pull/1712) ([Chillee](https://github.com/Chillee))
- Fixes \#1520: search in visual/visualLine/visualBlock mode [\#1710](https://github.com/VSCodeVim/Vim/pull/1710) ([Chillee](https://github.com/Chillee))
- Fixes \#1403: VisualBlock doesn't respect keybindings. [\#1709](https://github.com/VSCodeVim/Vim/pull/1709) ([Chillee](https://github.com/Chillee))
- Fixes \#1655: Extends gf to line numbers [\#1708](https://github.com/VSCodeVim/Vim/pull/1708) ([Chillee](https://github.com/Chillee))
Download .txt
gitextract_6p9ldwqz/

├── .eslintrc.js
├── .github/
│   ├── CONTRIBUTING.md
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── copilot-instructions.md
│   └── workflows/
│       ├── build.yml
│       ├── pull_request.yml
│       └── release.yml
├── .gitignore
├── .husky/
│   ├── .gitignore
│   └── pre-commit
├── .prettierignore
├── .prettierrc
├── .vscode/
│   ├── extensions.json
│   ├── launch.json
│   ├── settings.json
│   └── tasks.json
├── .vscodeignore
├── .yarnrc
├── CHANGELOG.OLD.md
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── SECURITY.md
├── build/
│   └── Dockerfile
├── extension.ts
├── extensionBase.ts
├── extensionWeb.ts
├── gulpfile.js
├── language-configuration.json
├── package.json
├── renovate.json
├── src/
│   ├── actions/
│   │   ├── base.ts
│   │   ├── baseMotion.ts
│   │   ├── commands/
│   │   │   ├── actions.ts
│   │   │   ├── commandLine.ts
│   │   │   ├── digraphs.ts
│   │   │   ├── documentChange.ts
│   │   │   ├── file.ts
│   │   │   ├── fold.ts
│   │   │   ├── incrementDecrement.ts
│   │   │   ├── insert.ts
│   │   │   ├── join.ts
│   │   │   ├── macro.ts
│   │   │   ├── navigate.ts
│   │   │   ├── put.ts
│   │   │   ├── replace.ts
│   │   │   ├── scroll.ts
│   │   │   ├── search.ts
│   │   │   ├── undo.ts
│   │   │   ├── visual.ts
│   │   │   └── window.ts
│   │   ├── include-main.ts
│   │   ├── include-plugins.ts
│   │   ├── languages/
│   │   │   └── python/
│   │   │       └── motion.ts
│   │   ├── motion.ts
│   │   ├── operator.ts
│   │   ├── plugins/
│   │   │   ├── camelCaseMotion.ts
│   │   │   ├── easymotion/
│   │   │   │   ├── easymotion.cmd.ts
│   │   │   │   ├── easymotion.ts
│   │   │   │   ├── markerGenerator.ts
│   │   │   │   ├── registerMoveActions.ts
│   │   │   │   └── types.ts
│   │   │   ├── imswitcher.ts
│   │   │   ├── pluginDefaultMappings.ts
│   │   │   ├── replaceWithRegister.ts
│   │   │   ├── sneak.ts
│   │   │   ├── surround.ts
│   │   │   └── targets/
│   │   │       ├── lastNextObjectHelper.ts
│   │   │       ├── lastNextObjects.ts
│   │   │       ├── searchUtils.ts
│   │   │       ├── smartQuotes.ts
│   │   │       ├── smartQuotesMatcher.ts
│   │   │       ├── targets.ts
│   │   │       └── targetsConfig.ts
│   │   ├── types.d.ts
│   │   └── wrapping.ts
│   ├── cmd_line/
│   │   ├── commandLine.ts
│   │   └── commands/
│   │       ├── ascii.ts
│   │       ├── bang.ts
│   │       ├── breakpoints.ts
│   │       ├── bufferDelete.ts
│   │       ├── change.ts
│   │       ├── close.ts
│   │       ├── copy.ts
│   │       ├── delete.ts
│   │       ├── digraph.ts
│   │       ├── echo.ts
│   │       ├── eval.ts
│   │       ├── explore.ts
│   │       ├── file.ts
│   │       ├── fileInfo.ts
│   │       ├── goto.ts
│   │       ├── gotoLine.ts
│   │       ├── grep.ts
│   │       ├── history.ts
│   │       ├── jumps.ts
│   │       ├── leftRightCenter.ts
│   │       ├── let.ts
│   │       ├── marks.ts
│   │       ├── move.ts
│   │       ├── nohl.ts
│   │       ├── normal.ts
│   │       ├── only.ts
│   │       ├── print.ts
│   │       ├── put.ts
│   │       ├── pwd.ts
│   │       ├── quit.ts
│   │       ├── read.ts
│   │       ├── redo.ts
│   │       ├── register.ts
│   │       ├── retab.ts
│   │       ├── set.ts
│   │       ├── sh.ts
│   │       ├── shift.ts
│   │       ├── smile.ts
│   │       ├── sort.ts
│   │       ├── substitute.ts
│   │       ├── tab.ts
│   │       ├── terminal.ts
│   │       ├── undo.ts
│   │       ├── vscode.ts
│   │       ├── wall.ts
│   │       ├── write.ts
│   │       ├── writequit.ts
│   │       ├── writequitall.ts
│   │       └── yank.ts
│   ├── common/
│   │   ├── matching/
│   │   │   ├── matcher.ts
│   │   │   ├── quoteMatcher.ts
│   │   │   └── tagMatcher.ts
│   │   ├── motion/
│   │   │   ├── cursor.ts
│   │   │   └── position.ts
│   │   └── number/
│   │       └── numericString.ts
│   ├── completion/
│   │   └── lineCompletionProvider.ts
│   ├── configuration/
│   │   ├── configuration.ts
│   │   ├── configurationValidator.ts
│   │   ├── decoration.ts
│   │   ├── iconfiguration.ts
│   │   ├── iconfigurationValidator.ts
│   │   ├── langmap.ts
│   │   ├── notation.ts
│   │   ├── remapper.ts
│   │   ├── validators/
│   │   │   ├── inputMethodSwitcherValidator.ts
│   │   │   ├── neovimValidator.ts
│   │   │   ├── remappingValidator.ts
│   │   │   └── vimrcValidator.ts
│   │   ├── vimrc.ts
│   │   └── vimrcKeyRemappingBuilder.ts
│   ├── error.ts
│   ├── globals.ts
│   ├── history/
│   │   ├── historyFile.ts
│   │   └── historyTracker.ts
│   ├── jumps/
│   │   ├── jump.ts
│   │   └── jumpTracker.ts
│   ├── mode/
│   │   ├── internalSelectionsTracker.ts
│   │   ├── mode.ts
│   │   ├── modeData.ts
│   │   ├── modeHandler.ts
│   │   └── modeHandlerMap.ts
│   ├── neovim/
│   │   └── neovim.ts
│   ├── platform/
│   │   ├── browser/
│   │   │   ├── constants.ts
│   │   │   ├── fs.ts
│   │   │   └── history.ts
│   │   └── node/
│   │       ├── constants.ts
│   │       ├── fs.ts
│   │       └── history.ts
│   ├── register/
│   │   └── register.ts
│   ├── state/
│   │   ├── compositionState.ts
│   │   ├── globalState.ts
│   │   ├── recordedState.ts
│   │   ├── remapState.ts
│   │   ├── replaceState.ts
│   │   ├── searchState.ts
│   │   ├── substituteState.ts
│   │   └── vimState.ts
│   ├── statusBar.ts
│   ├── taskQueue.ts
│   ├── textEditor.ts
│   ├── textobject/
│   │   ├── paragraph.ts
│   │   ├── sentence.ts
│   │   ├── textobject.ts
│   │   ├── util.ts
│   │   └── word.ts
│   ├── transformations/
│   │   ├── execute.ts
│   │   ├── transformations.ts
│   │   └── transformer.ts
│   ├── util/
│   │   ├── child_process.ts
│   │   ├── clipboard.ts
│   │   ├── decorationUtils.ts
│   │   ├── externalCommand.ts
│   │   ├── logger.ts
│   │   ├── os.ts
│   │   ├── path.ts
│   │   ├── selections.ts
│   │   ├── specialKeys.ts
│   │   ├── statusBarTextUtils.ts
│   │   ├── util.ts
│   │   └── vscodeContext.ts
│   └── vimscript/
│       ├── exCommand.ts
│       ├── exCommandParser.ts
│       ├── expression/
│       │   ├── build.ts
│       │   ├── displayValue.ts
│       │   ├── evaluate.ts
│       │   ├── parser.ts
│       │   └── types.ts
│       ├── lineRange.ts
│       ├── parserUtils.ts
│       └── pattern.ts
├── syntaxes/
│   └── vimscript.tmLanguage.json
├── test/
│   ├── actions/
│   │   ├── baseAction.test.ts
│   │   ├── insertLine.test.ts
│   │   ├── languages/
│   │   │   └── python/
│   │   │       └── motion.test.ts
│   │   └── markMovement.test.ts
│   ├── cmd_line/
│   │   ├── bang.test.ts
│   │   ├── breakpoints.test.ts
│   │   ├── bufferDelete.test.ts
│   │   ├── change.test.ts
│   │   ├── command.test.ts
│   │   ├── cursorLocation.test.ts
│   │   ├── delete.test.ts
│   │   ├── grep.test.ts
│   │   ├── historyFile.test.ts
│   │   ├── move.test.ts
│   │   ├── normal.test.ts
│   │   ├── only.test.ts
│   │   ├── put.test.ts
│   │   ├── redo.test.ts
│   │   ├── retab.test.ts
│   │   ├── smile.test.ts
│   │   ├── sort.test.ts
│   │   ├── split.test.ts
│   │   ├── substitute.test.ts
│   │   ├── tab.test.ts
│   │   ├── tabCompletion.test.ts
│   │   ├── undo.test.ts
│   │   ├── vsplit.test.ts
│   │   ├── write.test.ts
│   │   ├── writequit.test.ts
│   │   └── yank.test.ts
│   ├── completion/
│   │   └── lineCompletion.test.ts
│   ├── configuration/
│   │   ├── configuration.test.ts
│   │   ├── langmap.test.ts
│   │   ├── notation.test.ts
│   │   ├── remapper.test.ts
│   │   ├── remaps.test.ts
│   │   ├── validators/
│   │   │   ├── neovimValidator.test.ts
│   │   │   └── remappingValidator.test.ts
│   │   ├── vimrc.test.ts
│   │   └── vimrcKeyRemappingBuilder.test.ts
│   ├── extension.test.ts
│   ├── historyTracker.test.ts
│   ├── index.ts
│   ├── jumpTracker.test.ts
│   ├── macro.test.ts
│   ├── marks.test.ts
│   ├── mode/
│   │   ├── modeHandler.test.ts
│   │   ├── modeInsert.test.ts
│   │   ├── modeNormal.test.ts
│   │   ├── modeReplace.test.ts
│   │   ├── modeVisual.test.ts
│   │   ├── modeVisualBlock.test.ts
│   │   ├── modeVisualLine.test.ts
│   │   └── normalModeTests/
│   │       ├── commands.test.ts
│   │       ├── dot.test.ts
│   │       ├── matchingBracket.test.ts
│   │       ├── motionMatchpairs.test.ts
│   │       ├── motions.test.ts
│   │       └── undo.test.ts
│   ├── motion.test.ts
│   ├── motionLineWrapping.test.ts
│   ├── multicursor.test.ts
│   ├── number/
│   │   ├── incrementDecrement.test.ts
│   │   └── numericString.test.ts
│   ├── operator/
│   │   ├── comment.test.ts
│   │   ├── filter.test.ts
│   │   ├── format.test.ts
│   │   ├── put.test.ts
│   │   ├── rot13.test.ts
│   │   ├── shift.test.ts
│   │   └── surrogate.test.ts
│   ├── plugins/
│   │   ├── camelCaseMotion.test.ts
│   │   ├── easymotion.test.ts
│   │   ├── imswitcher.test.ts
│   │   ├── lastNextObject.test.ts
│   │   ├── replaceWithRegister.test.ts
│   │   ├── smartQuotes.test.ts
│   │   ├── sneak.test.ts
│   │   └── surround.test.ts
│   ├── register/
│   │   ├── register.test.ts
│   │   └── repeatableMovement.test.ts
│   ├── runTest.ts
│   ├── search/
│   │   ├── motionIncSearch.test.ts
│   │   ├── search.test.ts
│   │   └── searchTextObject.test.ts
│   ├── sentenceMotion.test.ts
│   ├── state/
│   │   └── vimState.test.ts
│   ├── testConfiguration.ts
│   ├── testSimplifier.ts
│   ├── testUtils.ts
│   ├── util/
│   │   └── path.test.ts
│   └── vimscript/
│       ├── exCommandParse.test.ts
│       ├── expression.test.ts
│       ├── lineRangeParse.test.ts
│       ├── lineRangeResolve.test.ts
│       └── searchOffset.test.ts
├── tsconfig.json
├── webpack.config.js
└── webpack.dev.js
Download .txt
SYMBOL INDEX (2315 symbols across 193 files)

FILE: extension.ts
  function activate (line 33) | async function activate(context: vscode.ExtensionContext) {
  function deactivate (line 61) | async function deactivate() {

FILE: extensionBase.ts
  type ICodeKeybinding (line 25) | interface ICodeKeybinding {
  function getAndUpdateModeHandler (line 30) | async function getAndUpdateModeHandler(
  function loadConfiguration (line 74) | async function loadConfiguration() {
  function activate (line 96) | async function activate(context: vscode.ExtensionContext, handleLocal: b...
  function toggleExtension (line 519) | async function toggleExtension(isDisabled: boolean, compositionState: Co...
  function overrideCommand (line 533) | function overrideCommand(
  function registerCommand (line 559) | function registerCommand(
  function registerEventListener (line 575) | function registerEventListener<T>(
  function forceStopRecursiveRemap (line 599) | async function forceStopRecursiveRemap(mh: ModeHandler): Promise<boolean> {

FILE: extensionWeb.ts
  function activate (line 19) | async function activate(context: vscode.ExtensionContext) {

FILE: gulpfile.js
  function validateArgs (line 15) | function validateArgs(done) {
  function createGitTag (line 35) | function createGitTag() {
  function updateVersion (line 39) | function updateVersion(done) {
  function updatePath (line 51) | function updatePath() {
  function copyPackageJson (line 75) | function copyPackageJson() {

FILE: src/actions/base.ts
  method doesActionApply (line 60) | public doesActionApply(vimState: VimState, keysPressed: string[]): boole...
  method couldActionApply (line 77) | public couldActionApply(vimState: VimState, keysPressed: string[]): bool...
  method CompareKeypressSequence (line 98) | public static CompareKeypressSequence(
  method toString (line 142) | public toString(): string {
  method is2DArray (line 146) | private static is2DArray<T>(x: readonly T[] | readonly T[][]): x is read...
  method runsOnceForEveryCursor (line 166) | public runsOnceForEveryCursor(): boolean {
  method exec (line 181) | public async exec(position: Position, vimState: VimState): Promise<void> {
  method execCount (line 188) | public async execCount(position: Position, vimState: VimState): Promise<...
  type KeypressState (line 237) | enum KeypressState {
  function getRelevantAction (line 257) | function getRelevantAction(
  function RegisterAction (line 281) | function RegisterAction(action: new () => BaseAction): void {

FILE: src/actions/baseMotion.ts
  function isIMovement (line 7) | function isIMovement(o: IMovement | Position): o is IMovement {
  type SelectionType (line 11) | enum SelectionType {
  type IMovement (line 19) | interface IMovement {
  function failedMovement (line 37) | function failedMovement(vimState: VimState): IMovement {
  method constructor (line 58) | constructor(keysPressed?: string[], isRepeat?: boolean) {
  method execAction (line 77) | public async execAction(
  method execActionForOperator (line 91) | protected async execActionForOperator(
  method execActionWithCount (line 105) | public async execActionWithCount(
  method adjustPosition (line 151) | protected adjustPosition(position: Position, result: IMovement, lastIter...

FILE: src/actions/commands/actions.ts
  class DisableExtension (line 28) | @RegisterAction
    method exec (line 45) | public override async exec(position: Position, vimState: VimState): Pr...
  class EnableExtension (line 50) | @RegisterAction
    method exec (line 55) | public override async exec(position: Position, vimState: VimState): Pr...
  class CommandNumber (line 61) | class CommandNumber extends BaseCommand {
    method runsOnceForEveryCursor (line 67) | override runsOnceForEveryCursor() {
    method exec (line 71) | public override async exec(position: Position, vimState: VimState): Pr...
    method doesActionApply (line 100) | public override doesActionApply(vimState: VimState, keysPressed: strin...
    method couldActionApply (line 109) | public override couldActionApply(vimState: VimState, keysPressed: stri...
  class CommandRegister (line 120) | class CommandRegister extends BaseCommand {
    method exec (line 126) | public override async exec(position: Position, vimState: VimState): Pr...
  class CommandEsc (line 138) | @RegisterAction
    method runsOnceForEveryCursor (line 151) | override runsOnceForEveryCursor() {
    method exec (line 157) | public override async exec(position: Position, vimState: VimState): Pr...
  class CommandOverrideCopy (line 195) | @RegisterAction
    method runsOnceForEveryCursor (line 200) | override runsOnceForEveryCursor() {
    method exec (line 204) | public override async exec(position: Position, vimState: VimState): Pr...
  class CommandCmdA (line 249) | @RegisterAction
    method exec (line 254) | public override async exec(position: Position, vimState: VimState): Pr...
  class MarkCommand (line 264) | @RegisterAction
    method exec (line 269) | public override async exec(position: Position, vimState: VimState): Pr...
  class ShowCommandLine (line 276) | @RegisterAction
    method runsOnceForEveryCursor (line 280) | override runsOnceForEveryCursor() {
    method exec (line 284) | public override async exec(position: Position, vimState: VimState): Pr...
  class ShowCommandHistory (line 306) | class ShowCommandHistory extends BaseCommand {
    method runsOnceForEveryCursor (line 310) | override runsOnceForEveryCursor() {
    method exec (line 314) | public override async exec(position: Position, vimState: VimState): Pr...
  class ShowSearchHistory (line 332) | class ShowSearchHistory extends BaseCommand {
    method runsOnceForEveryCursor (line 341) | override runsOnceForEveryCursor() {
    method constructor (line 345) | public constructor(direction = SearchDirection.Forward) {
    method exec (line 350) | public override async exec(position: Position, vimState: VimState): Pr...
  class DotRepeat (line 385) | @RegisterAction
    method execCount (line 391) | public override async execCount(position: Position, vimState: VimState...
  class RepeatSubstitution (line 407) | @RegisterAction
    method exec (line 413) | public override async exec(position: Position, vimState: VimState): Pr...
  class GoToOtherEndOfHighlightedText (line 420) | @RegisterAction
    method exec (line 426) | public override async exec(position: Position, vimState: VimState): Pr...
  class GoToOtherSideOfHighlightedText (line 434) | @RegisterAction
    method exec (line 440) | public override async exec(position: Position, vimState: VimState): Pr...
  class DeleteToLineEnd (line 452) | @RegisterAction
    method exec (line 458) | public override async exec(position: Position, vimState: VimState): Pr...
  class YankLine (line 471) | @RegisterAction
    method exec (line 477) | public override async exec(position: Position, vimState: VimState): Pr...
  class ChangeToLineEnd (line 488) | @RegisterAction
    method exec (line 494) | public override async exec(position: Position, vimState: VimState): Pr...
  class ChangeLine (line 508) | @RegisterAction
    method exec (line 514) | public override async exec(position: Position, vimState: VimState): Pr...
    method doesActionApply (line 523) | public override doesActionApply(vimState: VimState, keysPressed: strin...
    method couldActionApply (line 527) | public override couldActionApply(vimState: VimState, keysPressed: stri...
  class ActionDeleteChar (line 532) | @RegisterAction
    method exec (line 539) | public override async exec(position: Position, vimState: VimState): Pr...
  class ActionDeleteCharWithDeleteKey (line 557) | @RegisterAction
    method execCount (line 565) | public override async execCount(position: Position, vimState: VimState...
  class ActionDeleteLastChar (line 582) | @RegisterAction
    method exec (line 589) | public override async exec(position: Position, vimState: VimState): Pr...
  class VisualBlockDelete (line 604) | @RegisterAction
    method exec (line 610) | public override async exec(position: Position, vimState: VimState): Pr...
  class VisualBlockDeleteToLineEnd (line 635) | @RegisterAction
    method exec (line 641) | public override async exec(position: Position, vimState: VimState): Pr...
  class VisualBlockInsert (line 666) | @RegisterAction
    method runsOnceForEveryCursor (line 670) | override runsOnceForEveryCursor() {
    method exec (line 674) | public override async exec(position: Position, vimState: VimState): Pr...
  class VisualBlockChange (line 691) | @RegisterAction
    method runsOnceForEveryCursor (line 695) | override runsOnceForEveryCursor() {
    method exec (line 699) | public override async exec(position: Position, vimState: VimState): Pr...
  class ActionChangeToEOLInVisualBlockMode (line 730) | @RegisterAction
    method runsOnceForEveryCursor (line 734) | override runsOnceForEveryCursor() {
    method exec (line 738) | public override async exec(position: Position, vimState: VimState): Pr...
  method runsOnceForEveryCursor (line 754) | override runsOnceForEveryCursor() {
  method exec (line 764) | public override async exec(position: Position, vimState: VimState): Prom...
  class VisualLineInsert (line 793) | @RegisterAction
    method getCursorRangeForLine (line 798) | getCursorRangeForLine(line: vscode.TextLine): Cursor {
  class VisualLineAppend (line 803) | @RegisterAction
    method getCursorRangeForLine (line 808) | getCursorRangeForLine(line: vscode.TextLine): Cursor {
  class VisualInsert (line 813) | @RegisterAction
    method getCursorRangeForLine (line 818) | getCursorRangeForLine(
  class VisualAppend (line 831) | @RegisterAction
    method getCursorRangeForLine (line 836) | getCursorRangeForLine(
  class VisualBlockAppend (line 849) | @RegisterAction
    method runsOnceForEveryCursor (line 853) | override runsOnceForEveryCursor() {
    method exec (line 857) | public override async exec(position: Position, vimState: VimState): Pr...
  class VisualLineDeleteChar (line 885) | @RegisterAction
    method exec (line 891) | public override async exec(position: Position, vimState: VimState): Pr...
  class VisualDeleteLine (line 901) | @RegisterAction
    method exec (line 906) | public override async exec(position: Position, vimState: VimState): Pr...
  class VisualChangeLine (line 916) | @RegisterAction
    method exec (line 921) | public override async exec(position: Position, vimState: VimState): Pr...
  class VisualChangeLine_2 (line 931) | @RegisterAction
    method doesActionApply (line 936) | public override doesActionApply(vimState: VimState, keysPressed: strin...
    method exec (line 940) | public override async exec(position: Position, vimState: VimState): Pr...
  class VisualBlockChangeLine (line 945) | @RegisterAction
    method exec (line 950) | public override async exec(position: Position, vimState: VimState): Pr...
  class ChangeChar (line 955) | @RegisterAction
    method exec (line 960) | public override async exec(position: Position, vimState: VimState): Pr...
    method doesActionApply (line 969) | public override doesActionApply(vimState: VimState, keysPressed: strin...
    method couldActionApply (line 977) | public override couldActionApply(vimState: VimState, keysPressed: stri...
  class ToggleCaseAndMoveForward (line 986) | @RegisterAction
    method toggleCase (line 992) | private toggleCase(text: string): string {
    method exec (line 1004) | public override async exec(position: Position, vimState: VimState): Pr...
  class CommandUnicodeName (line 1022) | class CommandUnicodeName extends BaseCommand {
    method runsOnceForEveryCursor (line 1025) | override runsOnceForEveryCursor() {
    method exec (line 1029) | public override async exec(position: Position, vimState: VimState): Pr...
  class ShowHover (line 1040) | @RegisterAction
    method runsOnceForEveryCursor (line 1044) | override runsOnceForEveryCursor() {
    method exec (line 1048) | public override async exec(position: Position, vimState: VimState): Pr...
  class ActionOverrideCmdD (line 1065) | class ActionOverrideCmdD extends BaseCommand {
    method runsOnceForEveryCursor (line 1068) | override runsOnceForEveryCursor() {
    method exec (line 1073) | public override async exec(position: Position, vimState: VimState): Pr...
  class ActionOverrideCmdDInsert (line 1085) | @RegisterAction
    method runsOnceForEveryCursor (line 1089) | override runsOnceForEveryCursor() {
    method exec (line 1094) | public override async exec(position: Position, vimState: VimState): Pr...
  class InsertCursorBelow (line 1120) | @RegisterAction
    method runsOnceForEveryCursor (line 1127) | override runsOnceForEveryCursor() {
    method exec (line 1132) | public override async exec(position: Position, vimState: VimState): Pr...
  class InsertCursorAbove (line 1137) | @RegisterAction
    method runsOnceForEveryCursor (line 1144) | override runsOnceForEveryCursor() {
    method exec (line 1149) | public override async exec(position: Position, vimState: VimState): Pr...
  class ShowFileOutline (line 1154) | @RegisterAction
    method runsOnceForEveryCursor (line 1159) | override runsOnceForEveryCursor() {
    method exec (line 1163) | public override async exec(position: Position, vimState: VimState): Pr...

FILE: src/actions/commands/commandLine.ts
  method runsOnceForEveryCursor (line 21) | override runsOnceForEveryCursor() {
  method exec (line 27) | public override async exec(position: vscode.Position, vimState: VimState...
  class CommandLineTab (line 41) | @RegisterAction
    method cycleCompletion (line 46) | private cycleCompletion(isTabForward: boolean, commandLine: ExCommandL...
    method run (line 65) | protected async run(vimState: VimState, commandLine: CommandLine): Pro...
  class ExCommandLineEnter (line 149) | @RegisterAction
    method run (line 154) | protected override async run(vimState: VimState, commandLine: CommandL...
  class SearchCommandLineEnter (line 165) | @RegisterAction
    method runsOnceForEveryCursor (line 170) | override runsOnceForEveryCursor() {
    method run (line 175) | protected override async run(vimState: VimState, commandLine: CommandL...
  class CommandLineEscape (line 184) | @RegisterAction
    method run (line 188) | protected override async run(vimState: VimState, commandLine: CommandL...
  class CommandLineCtrlF (line 193) | @RegisterAction
    method run (line 197) | protected override async run(vimState: VimState, commandLine: CommandL...
  class CommandLineBackspace (line 202) | @RegisterAction
    method run (line 206) | protected override async run(vimState: VimState, commandLine: CommandL...
  class CommandLineDelete (line 211) | @RegisterAction
    method run (line 215) | protected override async run(vimState: VimState, commandLine: CommandL...
  class CommandlineHome (line 220) | @RegisterAction
    method run (line 224) | protected override async run(vimState: VimState, commandLine: CommandL...
  class CommandLineEnd (line 229) | @RegisterAction
    method run (line 233) | protected override async run(vimState: VimState, commandLine: CommandL...
  class CommandLineDeleteWord (line 238) | @RegisterAction
    method run (line 242) | protected override async run(vimState: VimState, commandLine: CommandL...
  class CommandLineDeleteToBeginning (line 247) | @RegisterAction
    method run (line 251) | protected override async run(vimState: VimState, commandLine: CommandL...
  class CommandLineWordLeft (line 256) | @RegisterAction
    method run (line 260) | protected async run(vimState: VimState, commandLine: CommandLine): Pro...
  class CommandLineWordRight (line 265) | @RegisterAction
    method run (line 269) | protected async run(vimState: VimState, commandLine: CommandLine): Pro...
  class CommandLineHistoryBack (line 274) | @RegisterAction
    method run (line 278) | protected async run(vimState: VimState, commandLine: CommandLine): Pro...
  class CommandLineHistoryForward (line 283) | @RegisterAction
    method run (line 287) | protected async run(vimState: VimState, commandLine: CommandLine): Pro...
  class CommandInsertRegisterContentInCommandLine (line 292) | @RegisterAction
    method run (line 297) | protected async run(vimState: VimState, commandLine: CommandLine): Pro...
  class CommandInsertWord (line 337) | @RegisterAction
    method run (line 341) | protected async run(vimState: VimState, commandLine: CommandLine): Pro...
  class CommandLineLeftRight (line 351) | @RegisterAction
    method getTrimmedStatusBarText (line 355) | private getTrimmedStatusBarText() {
    method run (line 364) | protected async run(vimState: VimState, commandLine: CommandLine): Pro...
  class CommandLinePaste (line 375) | @RegisterAction
    method run (line 379) | protected async run(vimState: VimState, commandLine: CommandLine): Pro...
  class CommandCtrlLInSearchMode (line 390) | @RegisterAction
    method run (line 395) | protected async run(vimState: VimState, commandLine: CommandLine): Pro...
  class CommandAdvanceCurrentMatch (line 409) | @RegisterAction
    method run (line 414) | protected async run(vimState: VimState, commandLine: CommandLine): Pro...
  class CommandLineType (line 428) | @RegisterAction
    method run (line 432) | protected async run(vimState: VimState, commandLine: CommandLine): Pro...

FILE: src/actions/commands/documentChange.ts
  type Change (line 8) | type Change = vscode.TextDocumentContentChangeEvent;
  class DocumentContentChangeAction (line 18) | class DocumentContentChangeAction extends BaseCommand {
    method constructor (line 24) | constructor(cursorStart: Position) {
    method addChanges (line 32) | public addChanges(changes: Change[], cursorPosition: Position) {
    method getTransformation (line 38) | public getTransformation(positionDiff: PositionDiff): Transformation {
    method exec (line 46) | public override async exec(position: Position, vimState: VimState): Pr...
    method compressChanges (line 112) | private compressChanges(): void {

FILE: src/actions/commands/file.ts
  class ShowFileInfo (line 15) | @RegisterAction
    method runsOnceForEveryCursor (line 20) | override runsOnceForEveryCursor() {
    method exec (line 24) | public override async exec(position: Position, vimState: VimState): Pr...
  class GoToAlternateFile (line 29) | @RegisterAction
    method runsOnceForEveryCursor (line 34) | override runsOnceForEveryCursor() {
    method exec (line 38) | public override async exec(position: Position, vimState: VimState): Pr...
  class OpenFile (line 61) | @RegisterAction
    method exec (line 67) | public override async exec(position: Position, vimState: VimState): Pr...

FILE: src/actions/commands/fold.ts
  type FoldDirection (line 9) | type FoldDirection = 'up' | 'down';
  method doesActionApply (line 15) | public override doesActionApply(vimState: VimState, keysPressed: string[...
  method exec (line 22) | public override async exec(position: Position, vimState: VimState): Prom...
  class ToggleFold (line 33) | @RegisterAction
  class CloseFold (line 39) | @RegisterAction
  class CloseAllFolds (line 46) | @RegisterAction
  class OpenFold (line 52) | @RegisterAction
  class OpenAllFolds (line 59) | @RegisterAction
  class CloseAllFoldsRecursively (line 65) | @RegisterAction
  class OpenAllFoldsRecursively (line 72) | @RegisterAction
  class AddFold (line 79) | @RegisterAction
    method run (line 86) | public async run(vimState: VimState, start: Position, end: Position): ...
  class RemoveFold (line 96) | @RegisterAction
    method exec (line 102) | override async exec(position: Position, vimState: VimState): Promise<v...

FILE: src/actions/commands/incrementDecrement.ts
  method exec (line 21) | public override async exec(position: Position, vimState: VimState): Prom...
  method replaceNum (line 101) | private async replaceNum(
  method getSearchRanges (line 126) | private getSearchRanges(vimState: VimState): Cursor[] {
  class IncrementNumber (line 178) | @RegisterAction
  class DecrementNumber (line 185) | @RegisterAction
  class IncrementNumberStaircase (line 192) | @RegisterAction
  class DecrementNumberStaircase (line 199) | @RegisterAction

FILE: src/actions/commands/insert.ts
  class Insert (line 25) | class Insert extends BaseCommand {
    method exec (line 29) | public override async exec(position: Position, vimState: VimState): Pr...
    method doesActionApply (line 33) | public override doesActionApply(vimState: VimState, keysPressed: strin...
  class Append (line 52) | class Append extends BaseCommand {
    method exec (line 56) | public override async exec(position: Position, vimState: VimState): Pr...
    method doesActionApply (line 61) | public override doesActionApply(vimState: VimState, keysPressed: strin...
  class InsertAtLastChange (line 71) | @RegisterAction
    method exec (line 76) | public override async exec(position: Position, vimState: VimState): Pr...
  class InsertAfterFirstWhitespaceOnLine (line 84) | @RegisterAction
    method exec (line 89) | public override async exec(position: Position, vimState: VimState): Pr...
  class InsertAtLineBegin (line 96) | @RegisterAction
    method exec (line 101) | public override async exec(position: Position, vimState: VimState): Pr...
  class InsertAtLineEnd (line 107) | @RegisterAction
    method exec (line 112) | public override async exec(position: Position, vimState: VimState): Pr...
  class InsertAbove (line 118) | @RegisterAction
    method runsOnceForEveryCursor (line 122) | override runsOnceForEveryCursor() {
    method execCount (line 126) | public override async execCount(position: Position, vimState: VimState...
  class InsertBelow (line 170) | @RegisterAction
    method runsOnceForEveryCursor (line 174) | override runsOnceForEveryCursor() {
    method execCount (line 178) | public override async execCount(position: Position, vimState: VimState...
  class ExitInsertMode (line 210) | class ExitInsertMode extends BaseCommand {
    method runsOnceForEveryCursor (line 214) | override runsOnceForEveryCursor() {
    method exec (line 218) | public override async exec(position: Position, vimState: VimState): Pr...
  class InsertPreviousText (line 296) | class InsertPreviousText extends BaseCommand {
    method runsOnceForEveryCursor (line 299) | override runsOnceForEveryCursor() {
    method exec (line 303) | public override async exec(position: Position, vimState: VimState): Pr...
  class InsertPreviousTextAndQuit (line 334) | @RegisterAction
    method exec (line 339) | public override async exec(position: Position, vimState: VimState): Pr...
  method exec (line 349) | public override async exec(position: Position, vimState: VimState): Prom...
  class IncreaseIndent (line 369) | @RegisterAction
  class DecreaseIndent (line 374) | @RegisterAction
  class BackspaceInInsertMode (line 381) | class BackspaceInInsertMode extends BaseCommand {
    method runsOnceForEveryCursor (line 385) | override runsOnceForEveryCursor() {
    method exec (line 389) | public override async exec(position: Position, vimState: VimState): Pr...
  class DeleteInInsertMode (line 394) | @RegisterAction
    method runsOnceForEveryCursor (line 399) | override runsOnceForEveryCursor() {
    method exec (line 403) | public override async exec(position: Position, vimState: VimState): Pr...
  class TypeInInsertMode (line 409) | class TypeInInsertMode extends BaseCommand {
    method exec (line 413) | public override async exec(position: Position, vimState: VimState): Pr...
    method toString (line 449) | public override toString(): string {
  class InsertDigraph (line 454) | @RegisterAction
    method exec (line 460) | public override async exec(position: Position, vimState: VimState): Pr...
    method doesActionApply (line 474) | public override doesActionApply(vimState: VimState, keysPressed: strin...
    method couldActionApply (line 488) | public override couldActionApply(vimState: VimState, keysPressed: stri...
  class InsertRegisterContent (line 508) | @RegisterAction
    method exec (line 514) | public override async exec(position: Position, vimState: VimState): Pr...
  class ExecuteOneNormalCommandInInsertMode (line 545) | @RegisterAction
    method exec (line 550) | public override async exec(position: Position, vimState: VimState): Pr...
  class InsertCharAbove (line 558) | class InsertCharAbove extends BaseCommand {
    method exec (line 562) | public override async exec(position: Position, vimState: VimState): Pr...
  class InsertCharBelow (line 579) | class InsertCharBelow extends BaseCommand {
    method exec (line 583) | public override async exec(position: Position, vimState: VimState): Pr...
  class DeleteWord (line 599) | @RegisterAction
    method exec (line 604) | public override async exec(position: Position, vimState: VimState): Pr...
  class DeleteAllBeforeCursor (line 624) | @RegisterAction
    method exec (line 629) | public override async exec(position: Position, vimState: VimState): Pr...
  class SelectNextSuggestion (line 646) | @RegisterAction
    method runsOnceForEveryCursor (line 650) | override runsOnceForEveryCursor() {
    method exec (line 654) | public override async exec(position: Position, vimState: VimState): Pr...
  class SelectPrevSuggestion (line 659) | @RegisterAction
    method runsOnceForEveryCursor (line 663) | override runsOnceForEveryCursor() {
    method exec (line 667) | public override async exec(position: Position, vimState: VimState): Pr...
  class CtrlVInInsertMode (line 672) | @RegisterAction
    method exec (line 677) | public override async exec(position: Position, vimState: VimState): Pr...
  class ShowLineAutocomplete (line 687) | @RegisterAction
    method runsOnceForEveryCursor (line 691) | override runsOnceForEveryCursor() {
    method exec (line 695) | public override async exec(position: Position, vimState: VimState): Pr...
  class NewLineInsertMode (line 700) | @RegisterAction
    method exec (line 705) | public override async exec(position: Position, vimState: VimState): Pr...
  class ReplaceAtCursorFromInsertMode (line 714) | @RegisterAction
    method exec (line 719) | public override async exec(position: Position, vimState: VimState): Pr...
  class CreateUndoPoint (line 724) | @RegisterAction
    method exec (line 729) | public override async exec(position: Position, vimState: VimState): Pr...
  class ArrowsInInsertMode (line 736) | class ArrowsInInsertMode extends BaseMovement {
    method execAction (line 740) | public override async execAction(position: Position, vimState: VimStat...

FILE: src/actions/commands/join.ts
  class ActionJoin (line 12) | @RegisterAction
    method execJoinLines (line 19) | public async execJoinLines(
    method execCount (line 115) | public override async execCount(position: Position, vimState: VimState...
  class ActionJoinVisualMode (line 145) | @RegisterAction
    method exec (line 150) | public override async exec(position: Position, vimState: VimState): Pr...
  class ActionJoinVisualBlockMode (line 161) | @RegisterAction
    method exec (line 166) | public override async exec(position: Position, vimState: VimState): Pr...
  class ActionJoinNoWhitespace (line 174) | @RegisterAction
    method exec (line 182) | public override async exec(position: Position, vimState: VimState): Pr...
    method execJoin (line 191) | public async execJoin(count: number, position: Position, vimState: Vim...
  class ActionJoinNoWhitespaceVisualMode (line 216) | @RegisterAction
    method exec (line 221) | public override async exec(position: Position, vimState: VimState): Pr...

FILE: src/actions/commands/macro.ts
  class RecordMacro (line 11) | @RegisterAction
    method runsOnceForEveryCursor (line 19) | public override runsOnceForEveryCursor(): boolean {
    method exec (line 23) | public override async exec(position: Position, vimState: VimState): Pr...
  class QuitRecordMacro (line 42) | class QuitRecordMacro extends BaseCommand {
    method runsOnceForEveryCursor (line 46) | public override runsOnceForEveryCursor(): boolean {
    method exec (line 50) | public override async exec(position: Position, vimState: VimState): Pr...
    method doesActionApply (line 68) | public override doesActionApply(vimState: VimState, keysPressed: strin...
    method couldActionApply (line 72) | public override couldActionApply(vimState: VimState, keysPressed: stri...
  class ExecuteLastMacro (line 77) | @RegisterAction
    method runsOnceForEveryCursor (line 85) | public override runsOnceForEveryCursor(): boolean {
    method exec (line 89) | public override async exec(position: Position, vimState: VimState): Pr...
  class ExecuteMacro (line 104) | @RegisterAction
    method runsOnceForEveryCursor (line 111) | public override runsOnceForEveryCursor(): boolean {
    method exec (line 115) | public override async exec(position: Position, vimState: VimState): Pr...

FILE: src/actions/commands/navigate.ts
  class GoToDeclaration (line 11) | @RegisterAction
    method exec (line 20) | public override async exec(position: Position, vimState: VimState): Pr...
  class GoToDefinition (line 31) | @RegisterAction
    method exec (line 37) | public override async exec(position: Position, vimState: VimState): Pr...
  class OpenLink (line 47) | @RegisterAction
    method exec (line 52) | public override async exec(position: Position, vimState: VimState): Pr...
  class GoBackInChangelist (line 57) | @RegisterAction
    method exec (line 63) | public override async exec(position: Position, vimState: VimState): Pr...
  class GoForwardInChangelist (line 74) | @RegisterAction
    method exec (line 80) | public override async exec(position: Position, vimState: VimState): Pr...
  class NavigateBack (line 91) | @RegisterAction
    method runsOnceForEveryCursor (line 96) | override runsOnceForEveryCursor() {
    method exec (line 100) | public override async exec(position: Position, vimState: VimState): Pr...
  class NavigateForward (line 105) | @RegisterAction
    method runsOnceForEveryCursor (line 110) | override runsOnceForEveryCursor() {
    method exec (line 114) | public override async exec(position: Position, vimState: VimState): Pr...

FILE: src/actions/commands/put.ts
  function firstNonBlankChar (line 17) | function firstNonBlankChar(text: string): number {
  type GetCursorPositionParams (line 21) | type GetCursorPositionParams = {
  method exec (line 37) | public override async exec(position: Position, vimState: VimState): Prom...
  method getRegisterText (line 138) | private getRegisterText(mode: Mode, register: IRegisterContent, count: n...
  method adjustIndent (line 167) | private adjustIndent(lineToMatch: string, text: string): string {
  method getTransformations (line 187) | private getTransformations(
  class PutCommand (line 331) | @RegisterAction
    method putBefore (line 335) | protected putBefore(): boolean {
    method getRegisterMode (line 339) | protected getRegisterMode(register: IRegisterContent): RegisterMode {
    method getReplaceRange (line 343) | protected getReplaceRange(mode: Mode, cursor: Cursor, registerMode: Re...
    method adjustLinewiseRegisterText (line 366) | protected adjustLinewiseRegisterText(mode: Mode, text: string): string {
    method shouldAdjustIndent (line 376) | protected shouldAdjustIndent(mode: Mode, registerMode: RegisterMode): ...
    method getCursorPosition (line 380) | protected getCursorPosition({
  class PutBeforeCommand (line 420) | @RegisterAction
    method putBefore (line 427) | protected override putBefore(): boolean {
    method adjustLinewiseRegisterText (line 431) | protected override adjustLinewiseRegisterText(mode: Mode, text: string...
    method getReplaceRange (line 439) | protected override getReplaceRange(
    method getCursorPosition (line 457) | protected override getCursorPosition({
  function PlaceCursorAfterText (line 475) | function PlaceCursorAfterText<TBase extends new (...args: any[]) => PutC...
  class GPutCommand (line 543) | @RegisterAction
  class GPutBeforeCommand (line 549) | @RegisterAction
  function AdjustIndent (line 556) | function AdjustIndent<TBase extends new (...args: any[]) => PutCommand>(...
  class PutWithIndentCommand (line 566) | @RegisterAction
  class PutBeforeWithIndentCommand (line 572) | @RegisterAction
  function ExCommand (line 582) | function ExCommand<TBase extends new (...args: any[]) => PutCommand>(Bas...

FILE: src/actions/commands/replace.ts
  class ReplaceCharacter (line 13) | class ReplaceCharacter extends BaseCommand {
    method exec (line 19) | public override async exec(position: Position, vimState: VimState): Pr...
  class ReplaceCharacterVisual (line 77) | @RegisterAction
    method exec (line 83) | public override async exec(position: Position, vimState: VimState): Pr...
  class ReplaceCharacterVisualBlock (line 154) | @RegisterAction
    method exec (line 160) | public override async exec(position: Position, vimState: VimState): Pr...
  class EnterReplaceMode (line 190) | class EnterReplaceMode extends BaseCommand {
    method runsOnceForEveryCursor (line 194) | public override runsOnceForEveryCursor(): boolean {
    method exec (line 198) | public override async exec(position: Position, vimState: VimState): Pr...
  class ExitReplaceMode (line 203) | @RegisterAction
    method exec (line 208) | public override async exec(position: Position, vimState: VimState): Pr...
  class ReplaceModeToInsertMode (line 238) | @RegisterAction
    method exec (line 243) | public override async exec(position: Position, vimState: VimState): Pr...
  class BackspaceInReplaceMode (line 248) | @RegisterAction
    method exec (line 253) | public override async exec(position: Position, vimState: VimState): Pr...
  class DeleteInReplaceMode (line 288) | @RegisterAction
    method exec (line 293) | public override async exec(position: Position, vimState: VimState): Pr...
  class ReplaceInReplaceMode (line 298) | @RegisterAction
    method exec (line 304) | public override async exec(position: Position, vimState: VimState): Pr...
  class CreateUndoPoint (line 336) | @RegisterAction
    method exec (line 341) | public override async exec(position: Position, vimState: VimState): Pr...
  class ArrowsInReplaceMode (line 347) | @RegisterAction
    method execAction (line 352) | public override async execAction(position: Position, vimState: VimStat...

FILE: src/actions/commands/scroll.ts
  method runsOnceForEveryCursor (line 13) | override runsOnceForEveryCursor(): boolean {
  method exec (line 19) | public override async exec(position: Position, vimState: VimState): Prom...
  class CommandCtrlE (line 56) | @RegisterAction
  class CommandCtrlY (line 64) | @RegisterAction
  method exec (line 88) | public override async exec(position: Position, vimState: VimState): Prom...
  class CommandMoveFullPageUp (line 142) | @RegisterAction
    method getNumLines (line 147) | protected getNumLines(visibleRanges: vscode.Range[]) {
  class CommandMoveFullPageDown (line 152) | @RegisterAction
    method getNumLines (line 157) | protected getNumLines(visibleRanges: vscode.Range[]) {
  class CommandCtrlD (line 162) | @RegisterAction
    method getNumLines (line 168) | protected getNumLines(visibleRanges: vscode.Range[]) {
  class CommandCtrlU (line 173) | @RegisterAction
    method getNumLines (line 179) | protected getNumLines(visibleRanges: vscode.Range[]) {
  class CommandCenterScroll (line 184) | @RegisterAction
    method doesActionApply (line 191) | public override doesActionApply(vimState: VimState, keysPressed: strin...
    method exec (line 198) | public override async exec(position: Position, vimState: VimState): Pr...
  class CommandCenterScrollFirstChar (line 207) | @RegisterAction
    method doesActionApply (line 212) | public override doesActionApply(vimState: VimState, keysPressed: strin...
    method exec (line 219) | public override async exec(position: Position, vimState: VimState): Pr...
  class CommandTopScroll (line 235) | @RegisterAction
    method doesActionApply (line 242) | public override doesActionApply(vimState: VimState, keysPressed: strin...
    method exec (line 249) | public override async exec(position: Position, vimState: VimState): Pr...
  class CommandTopScrollFirstChar (line 260) | @RegisterAction
    method doesActionApply (line 265) | public override doesActionApply(vimState: VimState, keysPressed: strin...
    method exec (line 272) | public override async exec(position: Position, vimState: VimState): Pr...
  class CommandBottomScroll (line 291) | @RegisterAction
    method doesActionApply (line 298) | public override doesActionApply(vimState: VimState, keysPressed: strin...
    method exec (line 305) | public override async exec(position: Position, vimState: VimState): Pr...
  class CommandBottomScrollFirstChar (line 316) | @RegisterAction
    method doesActionApply (line 321) | public override doesActionApply(vimState: VimState, keysPressed: strin...
    method exec (line 328) | public override async exec(position: Position, vimState: VimState): Pr...

FILE: src/actions/commands/search.ts
  function searchCurrentWord (line 24) | async function searchCurrentWord(
  function searchCurrentSelection (line 65) | async function searchCurrentSelection(vimState: VimState, direction: Sea...
  function createSearchStateAndMoveToMatch (line 89) | async function createSearchStateAndMoveToMatch(args: {
  class SearchCurrentWordExactForward (line 140) | @RegisterAction
    method exec (line 148) | public override async exec(position: Position, vimState: VimState): Pr...
  class SearchCurrentWordForward (line 157) | @RegisterAction
    method exec (line 165) | public override async exec(position: Position, vimState: VimState): Pr...
  class SearchCurrentWordExactBackward (line 170) | @RegisterAction
    method exec (line 178) | public override async exec(position: Position, vimState: VimState): Pr...
  class SearchCurrentWordBackward (line 187) | @RegisterAction
    method exec (line 195) | public override async exec(position: Position, vimState: VimState): Pr...
  class SearchForwards (line 200) | @RegisterAction
    method runsOnceForEveryCursor (line 206) | override runsOnceForEveryCursor() {
    method exec (line 210) | public override async exec(position: Position, vimState: VimState): Pr...
  class SearchBackwards (line 215) | @RegisterAction
    method runsOnceForEveryCursor (line 221) | override runsOnceForEveryCursor() {
    method exec (line 225) | public override async exec(position: Position, vimState: VimState): Pr...
  method execAction (line 239) | public async execAction(position: Position, vimState: VimState): Promise...
  method execActionForOperator (line 292) | public override async execActionForOperator(
  class SearchObjectForward (line 300) | @RegisterAction
  class SearchObjectBackward (line 306) | @RegisterAction

FILE: src/actions/commands/undo.ts
  class Undo (line 7) | class Undo extends BaseCommand {
    method runsOnceForEveryCursor (line 12) | override runsOnceForEveryCursor() {
    method exec (line 16) | public override async exec(position: Position, vimState: VimState): Pr...
  class UndoOnLine (line 21) | @RegisterAction
    method runsOnceForEveryCursor (line 25) | override runsOnceForEveryCursor() {
    method exec (line 29) | public override async exec(position: Position, vimState: VimState): Pr...
  class Redo (line 35) | class Redo extends BaseCommand {
    method runsOnceForEveryCursor (line 38) | override runsOnceForEveryCursor() {
    method exec (line 42) | public override async exec(position: Position, vimState: VimState): Pr...

FILE: src/actions/commands/visual.ts
  class EnterVisualMode (line 6) | @RegisterAction
    method exec (line 12) | public override async exec(position: Position, vimState: VimState): Pr...
  class ExitVisualMode (line 20) | @RegisterAction
    method exec (line 25) | public override async exec(position: Position, vimState: VimState): Pr...
  class EnterVisualLineMode (line 30) | @RegisterAction
    method exec (line 35) | public override async exec(position: Position, vimState: VimState): Pr...
  class ExitVisualLineMode (line 43) | @RegisterAction
    method exec (line 48) | public override async exec(position: Position, vimState: VimState): Pr...
  class EnterVisualBlockMode (line 53) | @RegisterAction
    method exec (line 58) | public override async exec(position: Position, vimState: VimState): Pr...
  class ExitVisualBlockMode (line 66) | @RegisterAction
    method exec (line 71) | public override async exec(position: Position, vimState: VimState): Pr...
  class RestoreVisualSelection (line 76) | @RegisterAction
    method exec (line 81) | public override async exec(position: Position, vimState: VimState): Pr...

FILE: src/actions/commands/window.ts
  class Quit (line 10) | @RegisterAction
    method runsOnceForEveryCursor (line 19) | override runsOnceForEveryCursor(): boolean {
    method exec (line 23) | public override async exec(position: Position, vimState: VimState): Pr...
  class WriteQuit (line 28) | @RegisterAction
    method runsOnceForEveryCursor (line 32) | override runsOnceForEveryCursor() {
    method exec (line 36) | public override async exec(position: Position, vimState: VimState): Pr...
  class ForceQuit (line 41) | @RegisterAction
    method runsOnceForEveryCursor (line 45) | override runsOnceForEveryCursor() {
    method exec (line 49) | public override async exec(position: Position, vimState: VimState): Pr...
  class Only (line 54) | @RegisterAction
    method runsOnceForEveryCursor (line 61) | override runsOnceForEveryCursor(): boolean {
    method exec (line 65) | public override async exec(position: Position, vimState: VimState): Pr...
  class MoveToLeftPane (line 70) | @RegisterAction
    method runsOnceForEveryCursor (line 78) | override runsOnceForEveryCursor(): boolean {
    method exec (line 83) | public override async exec(position: Position, vimState: VimState): Pr...
  class MoveToRightPane (line 91) | @RegisterAction
    method runsOnceForEveryCursor (line 99) | override runsOnceForEveryCursor(): boolean {
    method exec (line 104) | public override async exec(position: Position, vimState: VimState): Pr...
  class MoveToLowerPane (line 112) | @RegisterAction
    method runsOnceForEveryCursor (line 120) | override runsOnceForEveryCursor(): boolean {
    method exec (line 125) | public override async exec(position: Position, vimState: VimState): Pr...
  class MoveToUpperPane (line 133) | @RegisterAction
    method runsOnceForEveryCursor (line 141) | override runsOnceForEveryCursor(): boolean {
    method exec (line 146) | public override async exec(position: Position, vimState: VimState): Pr...
  class CycleThroughPanes (line 154) | @RegisterAction
    method runsOnceForEveryCursor (line 161) | override runsOnceForEveryCursor(): boolean {
    method exec (line 166) | public override async exec(position: Position, vimState: VimState): Pr...
  class VerticalSplit (line 174) | @RegisterAction
    method runsOnceForEveryCursor (line 181) | override runsOnceForEveryCursor(): boolean {
    method exec (line 185) | public override async exec(position: Position, vimState: VimState): Pr...
  class OrthogonalSplit (line 193) | @RegisterAction
    method runsOnceForEveryCursor (line 200) | override runsOnceForEveryCursor(): boolean {
    method exec (line 204) | public override async exec(position: Position, vimState: VimState): Pr...
  class EvenPaneWidths (line 212) | @RegisterAction
    method runsOnceForEveryCursor (line 216) | override runsOnceForEveryCursor(): boolean {
    method exec (line 220) | public override async exec(position: Position, vimState: VimState): Pr...
  class IncreasePaneWidth (line 228) | @RegisterAction
    method runsOnceForEveryCursor (line 232) | override runsOnceForEveryCursor(): boolean {
    method exec (line 236) | public override async exec(position: Position, vimState: VimState): Pr...
  class DecreasePaneWidth (line 244) | @RegisterAction
    method runsOnceForEveryCursor (line 248) | override runsOnceForEveryCursor(): boolean {
    method exec (line 252) | public override async exec(position: Position, vimState: VimState): Pr...
  class IncreasePaneHeight (line 260) | @RegisterAction
    method runsOnceForEveryCursor (line 264) | override runsOnceForEveryCursor(): boolean {
    method exec (line 268) | public override async exec(position: Position, vimState: VimState): Pr...
  class DecreasePaneHeight (line 276) | @RegisterAction
    method runsOnceForEveryCursor (line 280) | override runsOnceForEveryCursor(): boolean {
    method exec (line 284) | public override async exec(position: Position, vimState: VimState): Pr...
  class NextTab (line 292) | @RegisterAction
    method runsOnceForEveryCursor (line 297) | override runsOnceForEveryCursor(): boolean {
    method exec (line 301) | public override async exec(position: Position, vimState: VimState): Pr...
  class PreviousTab (line 318) | @RegisterAction
    method runsOnceForEveryCursor (line 323) | override runsOnceForEveryCursor(): boolean {
    method exec (line 327) | public override async exec(position: Position, vimState: VimState): Pr...

FILE: src/actions/languages/python/motion.ts
  type Type (line 6) | type Type = 'function' | 'class';
  type Edge (line 7) | type Edge = 'start' | 'end';
  type Direction (line 8) | type Direction = 'next' | 'prev';
  type LineInfo (line 10) | interface LineInfo {
  type StructureElement (line 16) | interface StructureElement {
  class PythonDocument (line 37) | class PythonDocument {
    method constructor (line 47) | constructor(document: TextDocument) {
    method lines (line 56) | static *lines(document: TextDocument): Generator<string> {
    method _indentation (line 67) | static _indentation(line: string): number | undefined {
    method _parseLine (line 82) | static _parseLine(index: number, text: string): LineInfo | undefined {
    method _parseLines (line 89) | static _parseLines(document: TextDocument): LineInfo[] {
    method _parseStructure (line 96) | static _parseStructure(lines: LineInfo[]): StructureElement[] {
    method find (line 146) | find(type: Type, direction: Direction, edge: Edge, position: Position)...
    method moveClassBoundary (line 181) | static moveClassBoundary(
  method doesActionApply (line 204) | public override doesActionApply(vimState: VimState, keysPressed: string[...
  method execAction (line 210) | public override async execAction(
  class MovePythonNextFunctionStart (line 222) | @RegisterAction
  class MovePythonPrevFunctionStart (line 230) | @RegisterAction
  class MovePythonNextFunctionEnd (line 238) | @RegisterAction
  class MovePythonPrevFunctionEnd (line 246) | @RegisterAction

FILE: src/actions/motion.ts
  function adjustForDesiredColumn (line 31) | function adjustForDesiredColumn(args: {
  method adjustPosition (line 51) | protected override adjustPosition(position: Position, result: IMovement,...
  method execAction (line 65) | public override async execAction(position: Position, vimState: VimState) {
  method execActionWithCount (line 69) | public override async execActionWithCount(
  method execActionForOperator (line 146) | public override async execActionForOperator(
  class MoveUpByScreenLine (line 180) | class MoveUpByScreenLine extends MoveByScreenLine {
    method constructor (line 186) | constructor(multicursorIndex: number) {
  class MoveDownByScreenLine (line 192) | class MoveDownByScreenLine extends MoveByScreenLine {
    method constructor (line 198) | constructor(multicursorIndex: number) {
  method execAction (line 207) | public override async execAction(
  class MoveDownFoldFix (line 273) | class MoveDownFoldFix extends MoveByScreenLineMaintainDesiredColumn {
    method execAction (line 279) | public override async execAction(position: Position, vimState: VimStat...
  class MoveDown (line 307) | class MoveDown extends BaseMovement {
    method execAction (line 311) | public override async execAction(position: Position, vimState: VimStat...
    method execActionForOperator (line 340) | public override async execActionForOperator(
  class MoveUp (line 350) | class MoveUp extends BaseMovement {
    method execAction (line 354) | public override async execAction(position: Position, vimState: VimStat...
    method execActionForOperator (line 383) | public override async execActionForOperator(
  class MoveUpFoldFix (line 392) | @RegisterAction
    method execAction (line 399) | public override async execAction(position: Position, vimState: VimStat...
  class CommandNextSearchMatch (line 424) | @RegisterAction
    method execAction (line 429) | public override async execAction(
  class CommandPreviousSearchMatch (line 473) | @RegisterAction
    method execAction (line 478) | public override async execAction(
  method execAction (line 531) | public override async execAction(
  class MarkMovementBOL (line 572) | class MarkMovementBOL extends BaseMarkMovement {
    method getNewPosition (line 576) | protected override getNewPosition(document: vscode.TextDocument, posit...
  class MarkMovement (line 582) | class MarkMovement extends BaseMarkMovement {
    method getNewPosition (line 590) | protected override getNewPosition(document: vscode.TextDocument, posit...
  class NextMark (line 603) | @RegisterAction
    method execAction (line 608) | public override async execAction(position: Position, vimState: VimStat...
  class PrevMark (line 618) | @RegisterAction
    method execAction (line 623) | public override async execAction(position: Position, vimState: VimStat...
  class NextMarkLinewise (line 633) | @RegisterAction
    method execAction (line 638) | public override async execAction(position: Position, vimState: VimStat...
  class PrevMarkLinewise (line 649) | @RegisterAction
    method execAction (line 654) | public override async execAction(position: Position, vimState: VimStat...
  class MoveLeft (line 666) | class MoveLeft extends BaseMovement {
    method execAction (line 669) | public override async execAction(position: Position, vimState: VimStat...
  class MoveRight (line 703) | class MoveRight extends BaseMovement {
    method execAction (line 706) | public override async execAction(position: Position, vimState: VimStat...
  class MoveDownNonBlank (line 730) | @RegisterAction
    method execActionWithCount (line 734) | public override async execActionWithCount(
  class MoveUpNonBlank (line 747) | @RegisterAction
    method execActionWithCount (line 751) | public override async execActionWithCount(
  class MoveDownUnderscore (line 764) | @RegisterAction
    method execActionWithCount (line 768) | public override async execActionWithCount(
  class MoveToColumn (line 781) | @RegisterAction
    method execActionWithCount (line 785) | public override async execActionWithCount(
  function findHelper (line 800) | function findHelper(
  class MoveFindForward (line 826) | @RegisterAction
    method execActionWithCount (line 830) | public override async execActionWithCount(
  class MoveFindBackward (line 866) | @RegisterAction
    method execActionWithCount (line 870) | public override async execActionWithCount(
  function tilHelper (line 898) | function tilHelper(
  class MoveTilForward (line 909) | @RegisterAction
    method execActionWithCount (line 913) | public override async execActionWithCount(
  class MoveTilBackward (line 942) | @RegisterAction
    method execActionWithCount (line 946) | public override async execActionWithCount(
  class MoveRepeat (line 971) | @RegisterAction
    method execActionWithCount (line 975) | public override async execActionWithCount(
  class MoveRepeatReversed (line 988) | @RegisterAction
    method execActionWithCount (line 992) | public override async execActionWithCount(
  class MoveLineEnd (line 1014) | class MoveLineEnd extends BaseMovement {
    method execActionWithCount (line 1017) | public override async execActionWithCount(
  class MoveLineBegin (line 1026) | @RegisterAction
    method execAction (line 1030) | public override async execAction(position: Position, vimState: VimStat...
    method doesActionApply (line 1034) | public override doesActionApply(vimState: VimState, keysPressed: strin...
    method couldActionApply (line 1038) | public override couldActionApply(vimState: VimState, keysPressed: stri...
  class MoveScreenLineBegin (line 1043) | @RegisterAction
  class MoveScreenNonBlank (line 1049) | @RegisterAction
  class MoveScreenLineEnd (line 1055) | @RegisterAction
  class MoveScreenLineEndNonBlank (line 1061) | @RegisterAction
    method execActionWithCount (line 1066) | public override async execActionWithCount(
  class MoveScreenLineCenter (line 1083) | @RegisterAction
  class MoveUpByDisplayLine (line 1089) | @RegisterAction
  class MoveDownByDisplayLine (line 1101) | @RegisterAction
  class MoveUpByScreenLineVisualLine (line 1118) | @RegisterAction
  class MoveDownByScreenLineVisualLine (line 1130) | @RegisterAction
  class MoveUpByScreenLineVisualBlock (line 1142) | @RegisterAction
    method execAction (line 1151) | public override async execAction(
    method execActionForOperator (line 1165) | public override async execActionForOperator(
  class MoveDownByScreenLineVisualBlock (line 1174) | @RegisterAction
    method execAction (line 1183) | public override async execAction(
    method execActionForOperator (line 1197) | public override async execActionForOperator(
  class MoveScreenToRight (line 1206) | @RegisterAction
    method doesActionApply (line 1214) | public override doesActionApply(vimState: VimState, keysPressed: strin...
  class MoveScreenToLeft (line 1222) | @RegisterAction
    method doesActionApply (line 1230) | public override doesActionApply(vimState: VimState, keysPressed: strin...
  class MoveScreenToRightHalf (line 1238) | @RegisterAction
    method doesActionApply (line 1246) | public override doesActionApply(vimState: VimState, keysPressed: strin...
  class MoveScreenToLeftHalf (line 1254) | @RegisterAction
    method doesActionApply (line 1263) | public override doesActionApply(vimState: VimState, keysPressed: strin...
  class MoveToLineFromViewPortTop (line 1271) | @RegisterAction
    method execActionWithCount (line 1276) | public override async execActionWithCount(
  class MoveToLineFromViewPortBottom (line 1303) | @RegisterAction
    method execActionWithCount (line 1308) | public override async execActionWithCount(
  class MoveToMiddleLineInViewPort (line 1337) | @RegisterAction
  class MoveNonBlank (line 1345) | @RegisterAction
    method execAction (line 1349) | public override async execAction(position: Position, vimState: VimStat...
  class MoveNonBlankFirst (line 1354) | @RegisterAction
    method execActionWithCount (line 1359) | public override async execActionWithCount(
  class MoveNonBlankLast (line 1375) | @RegisterAction
    method execActionWithCount (line 1380) | public override async execActionWithCount(
  class EndOfSpecificLine (line 1406) | @RegisterAction
    method execActionWithCount (line 1410) | public override async execActionWithCount(
  class MoveWordBegin (line 1424) | class MoveWordBegin extends BaseMovement {
    method execAction (line 1427) | public override async execAction(
    method execActionForOperator (line 1463) | public override async execActionForOperator(
  class MoveFullWordBegin (line 1496) | class MoveFullWordBegin extends BaseMovement {
    method execAction (line 1499) | public override async execAction(position: Position, vimState: VimStat...
  class MoveWordEnd (line 1516) | @RegisterAction
    method execAction (line 1520) | public override async execAction(position: Position, vimState: VimStat...
    method execActionForOperator (line 1524) | public override async execActionForOperator(
  class MoveFullWordEnd (line 1534) | @RegisterAction
    method execAction (line 1538) | public override async execAction(position: Position, vimState: VimStat...
    method execActionForOperator (line 1542) | public override async execActionForOperator(
  class MoveLastWordEnd (line 1550) | @RegisterAction
    method execAction (line 1554) | public override async execAction(position: Position, vimState: VimStat...
  class MoveLastFullWordEnd (line 1559) | @RegisterAction
    method execAction (line 1563) | public override async execAction(position: Position, vimState: VimStat...
  class MoveBeginningWord (line 1568) | @RegisterAction
    method execAction (line 1572) | public override async execAction(position: Position, vimState: VimStat...
  class MoveBeginningFullWord (line 1577) | @RegisterAction
    method execAction (line 1581) | public override async execAction(position: Position, vimState: VimStat...
  class MovePreviousSentenceBegin (line 1586) | @RegisterAction
    method execAction (line 1591) | public override async execAction(position: Position, vimState: VimStat...
  class GoToOffset (line 1596) | @RegisterAction
    method execActionWithCount (line 1601) | public override async execActionWithCount(position: Position, vimState...
  class MoveNextSentenceBegin (line 1607) | @RegisterAction
    method execAction (line 1612) | public override async execAction(position: Position, vimState: VimStat...
  class MoveParagraphEnd (line 1617) | @RegisterAction
    method execAction (line 1624) | public override async execAction(position: Position, vimState: VimStat...
  class MoveParagraphBegin (line 1671) | @RegisterAction
    method execAction (line 1676) | public override async execAction(position: Position, vimState: VimStat...
  method execAction (line 1686) | public override async execAction(
  class MoveNextSectionBegin (line 1735) | @RegisterAction
  class MoveNextSectionEnd (line 1742) | @RegisterAction
  class MovePreviousSectionBegin (line 1749) | @RegisterAction
  class MovePreviousSectionEnd (line 1756) | @RegisterAction
  class MoveToMatchingBracket (line 1763) | @RegisterAction
    method execAction (line 1768) | public override async execAction(
    method execActionForOperator (line 1800) | public override async execActionForOperator(
    method execActionWithCount (line 1824) | public override async execActionWithCount(
  method execAction (line 1863) | public override async execAction(
  class MoveInsideParentheses (line 1961) | class MoveInsideParentheses extends MoveInsideCharacter {
  class MoveAroundParentheses (line 1971) | class MoveAroundParentheses extends MoveInsideCharacter {
  method execAction (line 1986) | public override async execAction(
  class MoveInsideCurlyBrace (line 2033) | class MoveInsideCurlyBrace extends MoveCurlyBrace {
  class MoveAroundCurlyBrace (line 2042) | class MoveAroundCurlyBrace extends MoveCurlyBrace {
  class MoveInsideCaret (line 2052) | class MoveInsideCaret extends MoveInsideCharacter {
  class MoveAroundCaret (line 2061) | class MoveAroundCaret extends MoveInsideCharacter {
  class MoveInsideSquareBracket (line 2071) | class MoveInsideSquareBracket extends MoveInsideCharacter {
  class MoveAroundSquareBracket (line 2080) | class MoveAroundSquareBracket extends MoveInsideCharacter {
  method constructor (line 2101) | constructor(adjustForTrailingWhitespace: boolean = true) {
  method execActionWithCount (line 2106) | public override async execActionWithCount(
  method execAction (line 2115) | public override async execAction(position: Position, vimState: VimState)...
  method execActionForOperator (line 2211) | public override async execActionForOperator(
  class MoveInsideSingleQuotes (line 2228) | @RegisterAction
  class MoveAroundSingleQuotes (line 2236) | class MoveAroundSingleQuotes extends MoveQuoteMatch {
  class MoveInsideDoubleQuotes (line 2242) | @RegisterAction
  class MoveAroundDoubleQuotes (line 2250) | class MoveAroundDoubleQuotes extends MoveQuoteMatch {
  class MoveInsideBacktick (line 2256) | @RegisterAction
  class MoveAroundBacktick (line 2264) | class MoveAroundBacktick extends MoveQuoteMatch {
  class MoveToUnclosedRoundBracketBackward (line 2270) | @RegisterAction
    method execAction (line 2274) | public override async execAction(
  class MoveToUnclosedRoundBracketForward (line 2288) | @RegisterAction
    method execAction (line 2292) | public override async execAction(
  class MoveToUnclosedCurlyBracketBackward (line 2315) | @RegisterAction
    method execAction (line 2319) | public override async execAction(
  class MoveToUnclosedCurlyBracketForward (line 2333) | @RegisterAction
    method execAction (line 2337) | public override async execAction(
  method execAction (line 2365) | public override async execAction(position: Position, vimState: VimState)...
  class MoveInsideTag (line 2403) | class MoveInsideTag extends MoveTagMatch {
  class MoveAroundTag (line 2409) | class MoveAroundTag extends MoveTagMatch {

FILE: src/actions/operator.ts
  method constructor (line 19) | constructor(multicursorIndex?: number) {
  method doesActionApply (line 25) | public override doesActionApply(vimState: VimState, keysPressed: string[...
  method couldActionApply (line 42) | public override couldActionApply(vimState: VimState, keysPressed: string...
  method doesRepeatedOperatorApply (line 56) | public doesRepeatedOperatorApply(vimState: VimState, keysPressed: string...
  method runRepeat (line 75) | public async runRepeat(vimState: VimState, position: Position, count: nu...
  method highlightYankedRanges (line 84) | public highlightYankedRanges(vimState: VimState, ranges: vscode.Range[]) {
  class DeleteOperator (line 100) | class DeleteOperator extends BaseOperator {
    method run (line 105) | public async run(vimState: VimState, start: Position, end: Position): ...
  class DeleteOperatorVisual (line 188) | @RegisterAction
    method run (line 193) | public async run(vimState: VimState, start: Position, end: Position): ...
  class YankOperator (line 203) | class YankOperator extends BaseOperator {
    method run (line 209) | public async run(vimState: VimState, start: Position, end: Position): ...
  class FilterOperator (line 261) | @RegisterAction
    method run (line 266) | public async run(vimState: VimState, start: Position, end: Position): ...
  class ShiftYankOperatorVisual (line 294) | @RegisterAction
    method run (line 299) | public async run(vimState: VimState, start: Position, end: Position): ...
  class DeleteOperatorXVisual (line 306) | @RegisterAction
    method run (line 311) | public async run(vimState: VimState, start: Position, end: Position): ...
  class ChangeOperatorSVisual (line 316) | @RegisterAction
    method doesActionApply (line 322) | public override doesActionApply(vimState: VimState, keysPressed: strin...
    method run (line 326) | public async run(vimState: VimState, start: Position, end: Position): ...
  class FormatOperator (line 331) | @RegisterAction
    method run (line 336) | public async run(vimState: VimState, start: Position, end: Position): ...
  method run (line 358) | public async run(vimState: VimState, startPos: Position, endPos: Positio...
  class UpperCaseOperator (line 394) | @RegisterAction
    method transformText (line 398) | public transformText(text: string): string {
  class UpperCaseWithMotion (line 403) | @RegisterAction
  class LowerCaseOperator (line 409) | @RegisterAction
    method transformText (line 413) | public transformText(text: string): string {
  class LowerCaseWithMotion (line 418) | @RegisterAction
  class ToggleCaseOperator (line 424) | @RegisterAction
    method transformText (line 428) | public transformText(text: string): string {
  class ToggleCaseWithMotion (line 441) | @RegisterAction
  class IndentOperator (line 447) | @RegisterAction
    method run (line 452) | public async run(vimState: VimState, start: Position, end: Position): ...
  class IndentOperatorVisualAndVisualLine (line 471) | @RegisterAction
    method run (line 476) | public async run(vimState: VimState, start: Position, end: Position): ...
  class IndentOperatorVisualBlock (line 503) | @RegisterAction
    method run (line 508) | public async run(vimState: VimState, start: Position, end: Position): ...
  class OutdentOperator (line 547) | @RegisterAction
    method run (line 552) | public async run(vimState: VimState, start: Position, end: Position): ...
  class OutdentOperatorVisualAndVisualLine (line 567) | @RegisterAction
    method run (line 572) | public async run(vimState: VimState, start: Position, end: Position): ...
  class OutdentOperatorVisualBlock (line 602) | @RegisterAction
    method run (line 607) | public async run(vimState: VimState, start: Position, end: Position): ...
  class ChangeOperator (line 660) | class ChangeOperator extends BaseOperator {
    method run (line 664) | public async run(vimState: VimState, start: Position, end: Position): ...
  class YankVisualBlockMode (line 710) | @RegisterAction
    method runsOnceForEveryCursor (line 715) | runsOnceForEveryCursor() {
    method run (line 719) | public async run(vimState: VimState, startPos: Position, endPos: Posit...
  class CommentOperator (line 744) | @RegisterAction
    method run (line 749) | public async run(vimState: VimState, start: Position, end: Position): ...
  class ROT13Operator (line 759) | class ROT13Operator extends BaseOperator {
    method run (line 763) | public async run(vimState: VimState, start: Position, end: Position): ...
    method rot13 (line 782) | public static rot13(str: string) {
  class CommentBlockOperator (line 804) | @RegisterAction
    method run (line 809) | public async run(vimState: VimState, start: Position, end: Position): ...
  type CommentTypeSingle (line 823) | interface CommentTypeSingle {
  type CommentTypeMultiLine (line 829) | interface CommentTypeMultiLine {
  type CommentType (line 837) | type CommentType = CommentTypeSingle | CommentTypeMultiLine;
  class ActionVisualReflowParagraph (line 839) | @RegisterAction
    method getIndentation (line 861) | public getIndentation(s: string): string {
    method reflowParagraph (line 876) | public reflowParagraph(s: string): string {
    method run (line 1119) | public async run(vimState: VimState, start: Position, end: Position): ...

FILE: src/actions/plugins/camelCaseMotion.ts
  method doesActionApply (line 12) | public override doesActionApply(vimState: VimState, keysPressed: string[...
  method couldActionApply (line 16) | public override couldActionApply(vimState: VimState, keysPressed: string...
  method doesActionApply (line 22) | public override doesActionApply(vimState: VimState, keysPressed: string[...
  method couldActionApply (line 26) | public override couldActionApply(vimState: VimState, keysPressed: string...
  class MoveCamelCaseWordBegin (line 32) | @RegisterAction
    method execAction (line 36) | public override async execAction(position: Position, vimState: VimStat...
  class MoveCamelCaseWordEnd (line 52) | @RegisterAction
    method execAction (line 56) | public override async execAction(position: Position, vimState: VimStat...
    method execActionForOperator (line 60) | public override async execActionForOperator(
  class MoveBeginningCamelCaseWord (line 71) | @RegisterAction
    method execAction (line 75) | public override async execAction(position: Position, vimState: VimStat...
  class SelectInnerCamelCaseWord (line 81) | @RegisterAction
    method execAction (line 86) | public async execAction(position: Position, vimState: VimState): Promi...

FILE: src/actions/plugins/easymotion/easymotion.cmd.ts
  type EasymotionTrigger (line 19) | interface EasymotionTrigger {
  function buildTriggerKeys (line 24) | function buildTriggerKeys(trigger: EasymotionTrigger) {
  method constructor (line 38) | constructor(baseOptions: EasyMotionMoveOptionsBase) {
  method processMarkers (line 45) | public processMarkers(matches: Match[], cursorPosition: Position, vimSta...
  method searchOptions (line 63) | protected searchOptions(position: Position): SearchOptions {
  method exec (line 74) | public override async exec(position: Position, vimState: VimState): Prom...
  function getMatchesForString (line 102) | function getMatchesForString(
  class SearchByCharCommand (line 139) | class SearchByCharCommand extends BaseEasyMotionCommand implements EasyM...
    method searchCharCount (line 144) | get searchCharCount() {
    method constructor (line 148) | constructor(options: EasyMotionCharMoveOpions) {
    method getMatches (line 153) | public getMatches(position: Position, vimState: VimState): Match[] {
    method shouldFire (line 157) | public shouldFire() {
    method fire (line 162) | public async fire(position: Position, vimState: VimState): Promise<voi...
    method resolveMatchPosition (line 166) | public resolveMatchPosition(match: Match): Position {
  class SearchByNCharCommand (line 179) | class SearchByNCharCommand extends BaseEasyMotionCommand implements Easy...
    method searchCharCount (line 183) | get searchCharCount() {
    method constructor (line 187) | constructor() {
    method resolveMatchPosition (line 191) | public resolveMatchPosition(match: Match): Position {
    method getMatches (line 195) | public getMatches(position: Position, vimState: VimState): Match[] {
    method removeTrailingLineBreak (line 204) | private removeTrailingLineBreak(s: string) {
    method shouldFire (line 208) | public shouldFire() {
    method fire (line 213) | public async fire(position: Position, vimState: VimState): Promise<voi...
  method constructor (line 224) | constructor(action: EasyMotionSearchAction) {
  method exec (line 229) | public override async exec(position: Position, vimState: VimState): Prom...
  method constructor (line 245) | constructor(options: EasyMotionWordMoveOpions = {}) {
  method getMatches (line 250) | public getMatches(position: Position, vimState: VimState): Match[] {
  method resolveMatchPosition (line 254) | public resolveMatchPosition(match: Match): Position {
  method getMatchesForWord (line 264) | private getMatchesForWord(
  method constructor (line 279) | constructor(options: EasyMotionMoveOptionsBase = {}) {
  method resolveMatchPosition (line 284) | public resolveMatchPosition(match: Match): Position {
  method getMatches (line 288) | public getMatches(position: Position, vimState: VimState): Match[] {
  method getMatchesForLineStart (line 292) | private getMatchesForLineStart(
  class EasyMotionCharInputMode (line 314) | @RegisterAction
    method exec (line 319) | public override async exec(position: Position, vimState: VimState): Pr...
  class CommandEscEasyMotionCharInputMode (line 334) | @RegisterAction
    method exec (line 339) | public override async exec(position: Position, vimState: VimState): Pr...
  class MoveEasyMotion (line 344) | @RegisterAction
    method exec (line 350) | public override async exec(position: Position, vimState: VimState): Pr...

FILE: src/actions/plugins/easymotion/easymotion.ts
  class EasyMotion (line 8) | class EasyMotion implements IEasyMotion {
    method getFadeDecorationType (line 26) | private static getFadeDecorationType(): vscode.TextEditorDecorationType {
    method constructor (line 55) | constructor() {
    method getDecorationType (line 64) | public static getDecorationType(
    method clearDecorations (line 83) | public clearDecorations(editor: vscode.TextEditor) {
    method clearMarkers (line 95) | public clearMarkers() {
    method addMarker (line 102) | public addMarker(marker: Marker) {
    method findMarkers (line 109) | public findMarkers(nail: string, onlyVisible: boolean): Marker[] {
    method sortedSearch (line 117) | public sortedSearch(
    method getMarkerColor (line 191) | private getMarkerColor(
    method getEasymotionMarkerBackgroundColor (line 204) | private getEasymotionMarkerBackgroundColor() {
    method getEasymotionMarkerForegroundColorOneChar (line 208) | private getEasymotionMarkerForegroundColorOneChar() {
    method getEasymotionMarkerForegroundColorTwoCharFirst (line 212) | private getEasymotionMarkerForegroundColorTwoCharFirst() {
    method getEasymotionMarkerForegroundColorTwoCharSecond (line 219) | private getEasymotionMarkerForegroundColorTwoCharSecond() {
    method getEasymotionDimColor (line 226) | private getEasymotionDimColor() {
    method updateDecorations (line 230) | public updateDecorations(editor: vscode.TextEditor) {

FILE: src/actions/plugins/easymotion/markerGenerator.ts
  class MarkerGenerator (line 5) | class MarkerGenerator {
    method constructor (line 10) | constructor(matchesCount: number) {
    method generateMarker (line 16) | public generateMarker(index: number, markerPosition: Position): Marker...
    method createPrefixKeyTable (line 40) | private createPrefixKeyTable(): string[] {
    method getKeyTable (line 51) | private getKeyTable(): string[] {

FILE: src/actions/plugins/easymotion/registerMoveActions.ts
  class EasyMotionNCharSearchCommand (line 13) | @RegisterAction
    method constructor (line 17) | constructor() {
  class EasyMotionTwoCharSearchCommand (line 24) | @RegisterAction
    method constructor (line 28) | constructor() {
  class EasyMotionTwoCharFindForwardCommand (line 33) | @RegisterAction
    method constructor (line 37) | constructor() {
  class EasyMotionTwoCharFindBackwardCommand (line 42) | @RegisterAction
    method constructor (line 46) | constructor() {
  class EasyMotionTwoCharTilCharacterForwardCommand (line 51) | @RegisterAction
    method constructor (line 55) | constructor() {
  class EasyMotionTwoCharTilCharacterBidirectionalCommand (line 62) | @RegisterAction
    method constructor (line 66) | constructor() {
  class EasyMotionTwoCharTilBackwardCommand (line 71) | @RegisterAction
    method constructor (line 75) | constructor() {
  class EasyMotionSearchCommand (line 80) | @RegisterAction
    method constructor (line 84) | constructor() {
  class EasyMotionFindForwardCommand (line 89) | @RegisterAction
    method constructor (line 93) | constructor() {
  class EasyMotionFindBackwardCommand (line 98) | @RegisterAction
    method constructor (line 102) | constructor() {
  class EasyMotionTilCharacterForwardCommand (line 107) | @RegisterAction
    method constructor (line 111) | constructor() {
  class EasyMotionTilCharacterBidirectionalCommand (line 118) | @RegisterAction
    method constructor (line 122) | constructor() {
  class EasyMotionTilBackwardCommand (line 127) | @RegisterAction
    method constructor (line 131) | constructor() {
  class EasyMotionStartOfWordForwardsCommand (line 138) | @RegisterAction
    method constructor (line 142) | constructor() {
  class EasyMotionStartOfWordBidirectionalCommand (line 149) | @RegisterAction
  class EasyMotionLineForward (line 154) | @RegisterAction
    method constructor (line 158) | constructor() {
  class EasyMotionLineBackward (line 163) | @RegisterAction
    method constructor (line 167) | constructor() {
  class EasyMotionJumpToAnywhereCommand (line 174) | @RegisterAction
    method constructor (line 178) | constructor() {
  class EasyMotionEndOfWordForwardsCommand (line 183) | @RegisterAction
    method constructor (line 187) | constructor() {
  class EasyMotionEndOfWordBidirectionalCommand (line 194) | @RegisterAction
    method constructor (line 198) | constructor() {
  class EasyMotionBeginningWordCommand (line 203) | @RegisterAction
    method constructor (line 207) | constructor() {
  class EasyMotionEndBackwardCommand (line 212) | @RegisterAction
    method constructor (line 216) | constructor() {
  class EasyMotionStartOfLineForwardsCommand (line 223) | @RegisterAction
    method constructor (line 227) | constructor() {
  class EasyMotionStartOfLineBackwordsCommand (line 232) | @RegisterAction
    method constructor (line 236) | constructor() {
  class EasyMotionStartOfLineBidirectionalCommand (line 243) | @RegisterAction

FILE: src/actions/plugins/easymotion/types.ts
  type LabelPosition (line 6) | type LabelPosition = 'after' | 'before';
  type JumpToAnywhere (line 7) | type JumpToAnywhere = true | false;
  type EasyMotionMoveOptionsBase (line 9) | interface EasyMotionMoveOptionsBase {
  type EasyMotionCharMoveOpions (line 13) | interface EasyMotionCharMoveOpions extends EasyMotionMoveOptionsBase {
  type EasyMotionWordMoveOpions (line 18) | interface EasyMotionWordMoveOpions extends EasyMotionMoveOptionsBase {
  type Marker (line 23) | interface Marker {
  class Match (line 28) | class Match {
    method constructor (line 33) | constructor(position: Position, text: string, index: number) {
    method toRange (line 39) | public toRange(): vscode.Range {
  type SearchOptions (line 44) | interface SearchOptions {
  type EasyMotionSearchAction (line 56) | interface EasyMotionSearchAction {
  type IEasyMotion (line 72) | interface IEasyMotion {

FILE: src/actions/plugins/imswitcher.ts
  function executeShell (line 9) | function executeShell(cmd: string): Promise<string> {
  class InputMethodSwitcher (line 28) | class InputMethodSwitcher {
    method constructor (line 32) | constructor(execute: (cmd: string) => Promise<string> = executeShell) {
    method switchInputMethod (line 36) | public async switchInputMethod(prevMode: Mode, newMode: Mode) {
    method switchToDefaultIM (line 53) | private async switchToDefaultIM() {
    method resumeIM (line 71) | private async resumeIM() {
    method switchToIM (line 77) | private async switchToIM(imKey: string) {
    method isInsertLikeMode (line 89) | private isInsertLikeMode(mode: Mode): boolean {

FILE: src/actions/plugins/pluginDefaultMappings.ts
  class PluginDefaultMappings (line 3) | class PluginDefaultMappings {
    method getPluginDefaultMappings (line 33) | public static getPluginDefaultMappings(mode: string, config: IConfigur...

FILE: src/actions/plugins/replaceWithRegister.ts
  class ReplaceOperator (line 12) | @RegisterAction
    method doesActionApply (line 17) | public override doesActionApply(vimState: VimState, keysPressed: strin...
    method couldActionApply (line 21) | public override couldActionApply(vimState: VimState, keysPressed: stri...
    method run (line 25) | public async run(vimState: VimState, start: Position, end: Position): ...

FILE: src/actions/plugins/sneak.ts
  class SneakForward (line 8) | class SneakForward extends BaseMovement {
    method couldActionApply (line 15) | public override couldActionApply(vimState: VimState, keysPressed: stri...
    method execAction (line 25) | public override async execAction(
  class SneakBackward (line 75) | class SneakBackward extends BaseMovement {
    method couldActionApply (line 82) | public override couldActionApply(vimState: VimState, keysPressed: stri...
    method execAction (line 92) | public override async execAction(

FILE: src/actions/plugins/surround.ts
  type SurroundEdge (line 32) | type SurroundEdge = {
  type TagReplacement (line 42) | type TagReplacement = {
  type SurroundState (line 48) | interface SurroundState {
  method doesActionApply (line 74) | public override doesActionApply(vimState: VimState, keysPressed: string[...
  class YankSurroundOperator (line 79) | @RegisterAction
    method run (line 85) | public async run(vimState: VimState, start: Position, end: Position): ...
    method runRepeat (line 125) | public override async runRepeat(
  class CommandSurroundModeStartVisual (line 142) | @RegisterAction
    method run (line 147) | public async run(vimState: VimState, start: Position, end: Position): ...
  class CommandSurroundModeStartVisualLine (line 154) | @RegisterAction
    method run (line 159) | public async run(vimState: VimState, start: Position, end: Position): ...
  method runsOnceForEveryCursor (line 191) | override runsOnceForEveryCursor() {
  method doesActionApply (line 194) | public override doesActionApply(vimState: VimState, keysPressed: string[...
  class CommandSurroundDeleteSurround (line 204) | @RegisterAction
    method exec (line 209) | public override async exec(position: Position, vimState: VimState): Pr...
  class CommandSurroundDeleteSurroundCnt (line 241) | @RegisterAction
  class CommandSurroundChangeSurround (line 248) | @RegisterAction
    method exec (line 254) | public override async exec(position: Position, vimState: VimState): Pr...
  class CommandSurroundChangeSurroundCnt (line 289) | @RegisterAction
  class CommandSurroundAddSurrounding (line 296) | @RegisterAction
    method runsOnceForEveryCursor (line 302) | override runsOnceForEveryCursor() {
    method doesActionApply (line 305) | public override doesActionApply(vimState: VimState, keysPressed: strin...
    method exec (line 318) | public override async exec(position: Position, vimState: VimState): Pr...
  class CommandSurroundAddSurroundingTag (line 336) | class CommandSurroundAddSurroundingTag extends BaseCommand {
    method runsOnceForEveryCursor (line 342) | override runsOnceForEveryCursor() {
    method exec (line 345) | public override async exec(position: Position, vimState: VimState): Pr...
    method readTag (line 379) | private async readTag(): Promise<string | undefined> {
  class CommandSurroundAddSurroundingFunction (line 388) | class CommandSurroundAddSurroundingFunction extends BaseCommand {
    method runsOnceForEveryCursor (line 394) | override runsOnceForEveryCursor() {
    method exec (line 397) | public override async exec(position: Position, vimState: VimState): Pr...
    method readFunction (line 427) | private async readFunction(): Promise<string | undefined> {
    method formatFunction (line 434) | private formatFunction(fn: string): string {
  class SurroundHelper (line 449) | class SurroundHelper {
    method getReplaceRanges (line 521) | public static async getReplaceRanges(
    method ExecuteSurround (line 620) | public static async ExecuteSurround(vimState: VimState): Promise<void> {
    method trimAttributes (line 681) | private static trimAttributes(wholeTag: string) {

FILE: src/actions/plugins/targets/lastNextObjectHelper.ts
  function LastNextObject (line 15) | function LastNextObject<T extends MoveInsideCharacter>(type: new () => T...
  function LastObject (line 124) | function LastObject<T extends MoveInsideCharacter>(type: new () => T) {
  function NextObject (line 127) | function NextObject<T extends MoveInsideCharacter>(type: new () => T) {

FILE: src/actions/plugins/targets/lastNextObjects.ts
  class MoveInsideNextParentheses (line 14) | @RegisterAction
  class MoveInsideLastParentheses (line 19) | @RegisterAction
  class MoveAroundNextParentheses (line 24) | @RegisterAction
  class MoveAroundLastParentheses (line 29) | @RegisterAction
  class MoveInsideNextCurlyBrace (line 34) | @RegisterAction
  class MoveInsideLastCurlyBrace (line 39) | @RegisterAction
  class MoveAroundNextCurlyBrace (line 44) | @RegisterAction
  class MoveAroundLastCurlyBrace (line 49) | @RegisterAction
  class MoveInsideNextSquareBracket (line 54) | @RegisterAction
  class MoveInsideLastSquareBracket (line 59) | @RegisterAction
  class MoveAroundNextSquareBracket (line 64) | @RegisterAction
  class MoveAroundLastSquareBracket (line 69) | @RegisterAction
  class MoveInsideNextCaret (line 74) | @RegisterAction
  class MoveInsideLastCaret (line 79) | @RegisterAction
  class MoveAroundNextCaret (line 84) | @RegisterAction
  class MoveAroundLastCaret (line 89) | @RegisterAction

FILE: src/actions/plugins/targets/searchUtils.ts
  type SearchFlags (line 3) | interface SearchFlags {
  function searchForward (line 9) | function searchForward(
  function searchBackward (line 36) | function searchBackward(
  function maybeGetLeft (line 63) | function maybeGetLeft(
  function maybeGetRight (line 77) | function maybeGetRight(
  function searchPosition (line 92) | function searchPosition(

FILE: src/actions/plugins/targets/smartQuotes.ts
  class MoveAroundNextSingleQuotes (line 10) | class MoveAroundNextSingleQuotes extends SmartQuotes {
  class MoveInsideNextSingleQuotes (line 18) | class MoveInsideNextSingleQuotes extends SmartQuotes {
  class MoveAroundLastSingleQuotes (line 26) | class MoveAroundLastSingleQuotes extends SmartQuotes {
  class MoveInsideLastSingleQuotes (line 34) | class MoveInsideLastSingleQuotes extends SmartQuotes {
  class MoveAroundNextDoubleQuotes (line 42) | class MoveAroundNextDoubleQuotes extends SmartQuotes {
  class MoveInsideNextDoubleQuotes (line 50) | class MoveInsideNextDoubleQuotes extends SmartQuotes {
  class MoveAroundLastDoubleQuotes (line 58) | class MoveAroundLastDoubleQuotes extends SmartQuotes {
  class MoveInsideLastDoubleQuotes (line 66) | class MoveInsideLastDoubleQuotes extends SmartQuotes {
  class MoveAroundNextBacktick (line 74) | class MoveAroundNextBacktick extends SmartQuotes {
  class MoveInsideNextBacktick (line 82) | class MoveInsideNextBacktick extends SmartQuotes {
  class MoveAroundLastBacktick (line 90) | class MoveAroundLastBacktick extends SmartQuotes {
  class MoveInsideLastBacktick (line 98) | class MoveInsideLastBacktick extends SmartQuotes {
  class MoveAroundQuote (line 106) | class MoveAroundQuote extends SmartQuotes {
  class MoveInsideQuote (line 114) | class MoveInsideQuote extends SmartQuotes {
  class MoveAroundNextQuote (line 122) | class MoveAroundNextQuote extends SmartQuotes {
  class MoveInsideNextQuote (line 131) | class MoveInsideNextQuote extends SmartQuotes {
  class MoveAroundLastQuote (line 140) | class MoveAroundLastQuote extends SmartQuotes {
  class MoveInsideLastQuote (line 149) | class MoveInsideLastQuote extends SmartQuotes {

FILE: src/actions/plugins/targets/smartQuotesMatcher.ts
  type Quote (line 4) | type Quote = '"' | "'" | '`';
  type QuoteMatch (line 5) | enum QuoteMatch {
  type WhichQuotes (line 9) | type WhichQuotes = 'current' | 'next' | 'last';
  type Dir (line 10) | type Dir = '>' | '<';
  type SearchAction (line 11) | type SearchAction = {
  type QuotesAction (line 16) | type QuotesAction = {
  class SmartQuoteMatcher (line 145) | class SmartQuoteMatcher {
    method constructor (line 151) | constructor(quote: Quote | 'any', document: TextDocument) {
    method buildQuoteMap (line 156) | private buildQuoteMap(text: string) {
    method lineSearchAction (line 177) | private static lineSearchAction(cursorIndex: number, quoteMap: QuoteMa...
    method smartSurroundingQuotes (line 200) | public smartSurroundingQuotes(
    method smartSearch (line 275) | private smartSearch(
    method getNextQuoteThroughLineBreaks (line 306) | private getNextQuoteThroughLineBreaks(position: Position): Position | ...
    method getLastQuoteThroughLineBreaks (line 326) | private getLastQuoteThroughLineBreaks(position: Position): Position | ...
    method getNextQuote (line 347) | private getNextQuote(start: number, quoteMap: QuoteMatch[]): number | ...
    method getPrevQuote (line 357) | private getPrevQuote(start: number, quoteMap: QuoteMatch[]): number | ...

FILE: src/actions/plugins/targets/targetsConfig.ts
  function useSmartQuotes (line 3) | function useSmartQuotes(): boolean {
  function bracketObjectsEnabled (line 11) | function bracketObjectsEnabled(): boolean {

FILE: src/actions/types.d.ts
  type ActionType (line 4) | type ActionType = 'command' | 'motion' | 'operator' | 'number';
  type IBaseAction (line 6) | interface IBaseAction {
  type IBaseCommand (line 18) | interface IBaseCommand extends IBaseAction {
  type IBaseOperator (line 22) | interface IBaseOperator extends IBaseAction {

FILE: src/cmd_line/commandLine.ts
  method constructor (line 30) | constructor(text: string, previousMode: Mode) {
  method historyBack (line 74) | public historyBack(): void {
  method historyForward (line 91) | public historyForward(): void {
  method backspace (line 111) | public async backspace(vimState: VimState): Promise<void> {
  method delete (line 126) | public async delete(vimState: VimState): Promise<void> {
  method home (line 137) | public home(): void {
  method end (line 144) | public end(): void {
  method wordLeft (line 151) | public wordLeft(): void {
  method wordRight (line 158) | public wordRight(): void {
  method deleteWord (line 166) | public deleteWord(): void {
  method deleteToBeginning (line 177) | public deleteToBeginning(): void {
  method typeCharacter (line 182) | public typeCharacter(char: string): void {
  class ExCommandLine (line 190) | class ExCommandLine extends CommandLine {
    method loadHistory (line 195) | public static async loadHistory(context: ExtensionContext): Promise<vo...
    method constructor (line 210) | constructor(commandText: string, previousMode: Mode) {
    method display (line 217) | public display(cursorChar: string): string {
    method text (line 225) | public get text(): string {
    method text (line 228) | public set text(text: string) {
    method getSearchState (line 242) | public getSearchState(): SearchState | undefined {
    method getCommand (line 246) | public getCommand(): ExCommand | undefined {
    method getDecorations (line 250) | public getDecorations(vimState: VimState): SearchDecorations | undefin...
    method getHistory (line 257) | public getHistory(): HistoryFile {
    method run (line 261) | public async run(vimState: VimState): Promise<void> {
    method escape (line 313) | public async escape(vimState: VimState): Promise<void> {
    method ctrlF (line 320) | public async ctrlF(vimState: VimState): Promise<void> {
  class SearchCommandLine (line 325) | class SearchCommandLine extends CommandLine {
    method showSearchHistory (line 335) | public static async showSearchHistory(): Promise<SearchState | undefin...
    method loadHistory (line 354) | public static async loadHistory(context: ExtensionContext): Promise<vo...
    method addSearchStateToHistory (line 365) | public static async addSearchStateToHistory(searchState: SearchState) {
    method constructor (line 391) | constructor(vimState: VimState, searchString: string, direction: Searc...
    method display (line 396) | public display(cursorChar: string): string {
    method text (line 405) | public get text(): string {
    method text (line 408) | public set text(text: string) {
    method getSearchState (line 415) | public getSearchState(): SearchState {
    method getHistory (line 419) | public getHistory(): HistoryFile {
    method getCurrentMatchRelativeIndex (line 426) | private getCurrentMatchRelativeIndex(vimState: VimState): number {
    method getCurrentMatchPosition (line 434) | public getCurrentMatchPosition(vimState: VimState): IndexedPosition | ...
    method getCurrentMatchRange (line 448) | public getCurrentMatchRange(vimState: VimState): IndexedRange | undefi...
    method getDecorations (line 457) | public getDecorations(vimState: VimState): SearchDecorations | undefin...
    method run (line 467) | public async run(vimState: VimState): Promise<void> {
    method escape (line 504) | public async escape(vimState: VimState): Promise<void> {
    method ctrlF (line 522) | public async ctrlF(vimState: VimState): Promise<void> {
    method advanceCurrentMatch (line 529) | public advanceCurrentMatch(vimState: VimState, direction: SearchDirect...

FILE: src/cmd_line/commands/ascii.ts
  class AsciiCommand (line 5) | class AsciiCommand extends ExCommand {
    method execute (line 6) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/bang.ts
  type IBangCommandArguments (line 8) | interface IBangCommandArguments {
  class BangCommand (line 12) | class BangCommand extends ExCommand {
    method constructor (line 21) | constructor(args: IBangCommandArguments) {
    method neovimCapable (line 26) | public override neovimCapable(): boolean {
    method getReplaceDiff (line 30) | private getReplaceDiff(text: string): PositionDiff {
    method execute (line 42) | async execute(vimState: VimState): Promise<void> {
    method executeWithRange (line 46) | override async executeWithRange(vimState: VimState, range: LineRange):...

FILE: src/cmd_line/commands/breakpoints.ts
  function isSourceBreakpoint (line 19) | function isSourceBreakpoint(b: vscode.Breakpoint): b is vscode.SourceBre...
  function isFunctionBreakpoint (line 22) | function isFunctionBreakpoint(b: vscode.Breakpoint): b is vscode.Functio...
  type AddBreakpointHere (line 29) | type AddBreakpointHere = { type: 'here' };
  type AddBreakpointFile (line 30) | type AddBreakpointFile = { type: 'file'; line: number; file: string };
  type AddBreakpointFunction (line 31) | type AddBreakpointFunction = { type: 'func'; function: string };
  type AddBreakpointExpr (line 32) | type AddBreakpointExpr = { type: 'expr'; expr: string };
  type AddBreakpoint (line 33) | type AddBreakpoint =
  class AddBreakpointCommand (line 39) | class AddBreakpointCommand extends ExCommand {
    method constructor (line 42) | constructor(addBreakpoint: AddBreakpoint) {
    method execute (line 47) | async execute(vimState: VimState): Promise<void> {
  type DelBreakpointById (line 81) | type DelBreakpointById = { type: 'byId'; id: number };
  type DelAllBreakpoints (line 82) | type DelAllBreakpoints = { type: 'all' };
  type DelBreakpointFunction (line 83) | type DelBreakpointFunction = { type: 'func'; function: string };
  type DelBreakpointFile (line 84) | type DelBreakpointFile = { type: 'file'; line: number; file: string };
  type DelBreakpointHere (line 85) | type DelBreakpointHere = { type: 'here' };
  type DelBreakpoint (line 86) | type DelBreakpoint =
  class DeleteBreakpointCommand (line 93) | class DeleteBreakpointCommand extends ExCommand {
    method constructor (line 96) | constructor(delBreakpoint: DelBreakpoint) {
    method execute (line 101) | async execute(vimState: VimState): Promise<void> {
  class ListBreakpointsCommand (line 153) | class ListBreakpointsCommand extends ExCommand {
    method execute (line 154) | async execute(vimState: VimState): Promise<void> {
  class Breakpoints (line 186) | class Breakpoints {

FILE: src/cmd_line/commands/bufferDelete.ts
  type IBufferDeleteCommandArguments (line 10) | interface IBufferDeleteCommandArguments {
  class BufferDeleteCommand (line 19) | class BufferDeleteCommand extends ExCommand {
    method constructor (line 26) | constructor(args: IBufferDeleteCommandArguments) {
    method execute (line 31) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/change.ts
  type IChangeCommandArguments (line 12) | interface IChangeCommandArguments {
  class ChangeCommand (line 17) | class ChangeCommand extends ExCommand {
    method constructor (line 39) | constructor(args: IChangeCommandArguments) {
    method neovimCapable (line 44) | public override neovimCapable(): boolean {
    method changeRange (line 53) | private changeRange(startLine: number, endLine: number, vimState: VimS...
    method execute (line 75) | async execute(vimState: VimState): Promise<void> {
    method executeWithRange (line 86) | override async executeWithRange(vimState: VimState, range: LineRange):...

FILE: src/cmd_line/commands/close.ts
  class CloseCommand (line 13) | class CloseCommand extends ExCommand {
    method constructor (line 19) | constructor(bang: boolean) {
    method execute (line 24) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/copy.ts
  class CopyCommand (line 10) | class CopyCommand extends ExCommand {
    method constructor (line 16) | constructor(address?: Address) {
    method neovimCapable (line 21) | public override neovimCapable(): boolean {
    method copyLines (line 25) | private copyLines(vimState: VimState, sourceStart: number, sourceEnd: ...
    method execute (line 63) | public async execute(vimState: VimState): Promise<void> {
    method executeWithRange (line 68) | public override async executeWithRange(vimState: VimState, range: Line...

FILE: src/cmd_line/commands/delete.ts
  type IDeleteCommandArguments (line 12) | interface IDeleteCommandArguments {
  class DeleteCommand (line 17) | class DeleteCommand extends ExCommand {
    method constructor (line 40) | constructor(args: IDeleteCommandArguments) {
    method neovimCapable (line 45) | public override neovimCapable(): boolean {
    method deleteRange (line 53) | private deleteRange(startLine: number, endLine: number, vimState: VimS...
    method execute (line 84) | async execute(vimState: VimState): Promise<void> {
    method executeWithRange (line 92) | override async executeWithRange(vimState: VimState, range: LineRange):...

FILE: src/cmd_line/commands/digraph.ts
  type IDigraphsCommandArguments (line 13) | interface IDigraphsCommandArguments {
  type DigraphQuickPickItem (line 18) | interface DigraphQuickPickItem extends vscode.QuickPickItem {
  class DigraphsCommand (line 22) | class DigraphsCommand extends ExCommand {
    method constructor (line 29) | constructor(args: IDigraphsCommandArguments) {
    method makeQuickPicks (line 34) | private makeQuickPicks(digraphs: Array<[string, Digraph]>): DigraphQui...
    method execute (line 47) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/echo.ts
  class EchoCommand (line 11) | class EchoCommand extends ExCommand {
    method argParser (line 12) | public static argParser(echoArgs: { sep: string; error: boolean }): Pa...
    method constructor (line 27) | constructor(args: { sep: string; error: boolean }, expressions: Expres...
    method neovimCapable (line 34) | public override neovimCapable(): boolean {
    method execute (line 38) | public async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/eval.ts
  class EvalCommand (line 9) | class EvalCommand extends ExCommand {
    method constructor (line 24) | constructor(expression: Expression) {
    method execute (line 29) | public async execute(vimState: VimState): Promise<void> {
  class CallCommand (line 35) | class CallCommand extends ExCommand {
    method constructor (line 41) | private constructor(funcCall: Expression) {
    method execute (line 46) | public async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/explore.ts
  class ExploreCommand (line 5) | class ExploreCommand extends ExCommand {
    method execute (line 6) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/file.ts
  type FilePosition (line 21) | enum FilePosition {
  type IFileCommandArguments (line 26) | type IFileCommandArguments =
  type LegacyArgs (line 49) | type LegacyArgs = {
  function getLegacyArgs (line 56) | function getLegacyArgs(args: IFileCommandArguments): LegacyArgs {
  class FileCommand (line 92) | class FileCommand extends ExCommand {
    method constructor (line 127) | constructor(args: IFileCommandArguments) {
    method execute (line 132) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/fileInfo.ts
  class FileInfoCommand (line 7) | class FileInfoCommand extends ExCommand {
    method constructor (line 17) | private constructor(args: { bang: boolean; fileName?: string }) {
    method execute (line 22) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/goto.ts
  class GotoCommand (line 7) | class GotoCommand extends ExCommand {
    method constructor (line 13) | constructor(offset?: number) {
    method gotoOffset (line 18) | private gotoOffset(vimState: VimState, offset: number) {
    method execute (line 22) | public async execute(vimState: VimState): Promise<void> {
    method executeWithRange (line 26) | public override async executeWithRange(vimState: VimState, range: Line...

FILE: src/cmd_line/commands/gotoLine.ts
  class GotoLineCommand (line 5) | class GotoLineCommand extends ExCommand {
    method execute (line 6) | public async execute(vimState: VimState): Promise<void> {
    method executeWithRange (line 10) | public override async executeWithRange(vimState: VimState, range: Line...

FILE: src/cmd_line/commands/grep.ts
  type IGrepCommandArguments (line 20) | interface IGrepCommandArguments {
  class GrepCommand (line 27) | class GrepCommand extends ExCommand {
    method constructor (line 37) | constructor(args: IGrepCommandArguments) {
    method execute (line 42) | async execute(): Promise<void> {

FILE: src/cmd_line/commands/history.ts
  type HistoryCommandType (line 9) | enum HistoryCommandType {
  type IHistoryCommandArguments (line 27) | interface IHistoryCommandArguments {
  class HistoryCommand (line 33) | class HistoryCommand extends ExCommand {
    method constructor (line 39) | constructor(args: IHistoryCommandArguments) {
    method execute (line 44) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/jumps.ts
  class JumpPickItem (line 8) | class JumpPickItem implements QuickPickItem {
    method constructor (line 17) | constructor(jump: Jump, idx: number) {
  class JumpsCommand (line 29) | class JumpsCommand extends ExCommand {
    method execute (line 30) | async execute(vimState: VimState): Promise<void> {
  class ClearJumpsCommand (line 48) | class ClearJumpsCommand extends ExCommand {
    method execute (line 49) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/leftRightCenter.ts
  type LeftArgs (line 9) | type LeftArgs = {
  class LeftCommand (line 13) | class LeftCommand extends ExCommand {
    method constructor (line 19) | constructor(args: LeftArgs) {
    method execute (line 24) | async execute(vimState: VimState): Promise<void> {
    method executeWithRange (line 28) | override async executeWithRange(vimState: VimState, range: LineRange):...
  type RightArgs (line 48) | type RightArgs = {
  class RightCommand (line 52) | class RightCommand extends ExCommand {
    method constructor (line 58) | constructor(args: RightArgs) {
    method execute (line 63) | async execute(vimState: VimState): Promise<void> {
    method executeWithRange (line 67) | override async executeWithRange(vimState: VimState, range: LineRange):...
  type CenterArgs (line 92) | type CenterArgs = {
  class CenterCommand (line 96) | class CenterCommand extends ExCommand {
    method constructor (line 102) | constructor(args: CenterArgs) {
    method execute (line 107) | async execute(vimState: VimState): Promise<void> {
    method executeWithRange (line 111) | override async executeWithRange(vimState: VimState, range: LineRange):...

FILE: src/cmd_line/commands/let.ts
  type Unpack (line 38) | type Unpack = {
  type Index (line 42) | type Index = {
  type Slice (line 47) | type Slice = {
  type LetCommandOperation (line 54) | type LetCommandOperation = '=' | '+=' | '-=' | '*=' | '/=' | '%=' | '.='...
  type LetCommandVariable (line 55) | type LetCommandVariable =
  type LetCommandArgs (line 60) | type LetCommandArgs =
  class LetCommand (line 118) | class LetCommand extends ExCommand {
    method constructor (line 160) | constructor(args: LetCommandArgs) {
    method execute (line 165) | async execute(vimState: VimState): Promise<void> {
  class UnletCommand (line 353) | class UnletCommand extends ExCommand {
    method constructor (line 367) | public constructor(variables: VariableExpression[], bang: boolean) {
    method execute (line 373) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/marks.ts
  class MarkQuickPickItem (line 13) | class MarkQuickPickItem implements QuickPickItem {
    method constructor (line 22) | constructor(vimState: VimState, mark: IMark) {
  class MarksCommand (line 34) | class MarksCommand extends ExCommand {
    method constructor (line 41) | constructor(marksFilter: string[]) {
    method execute (line 46) | async execute(vimState: VimState): Promise<void> {
  type DeleteMarksArgs (line 67) | type DeleteMarksArgs = Array<{ start: string; end: string } | string> | ...
  class DeleteMarksCommand (line 69) | class DeleteMarksCommand extends ExCommand {
    method constructor (line 93) | constructor(args: DeleteMarksArgs) {
    method resolveMarkList (line 98) | private static resolveMarkList(vimState: VimState, args: DeleteMarksAr...
    method execute (line 133) | async execute(vimState: VimState): Promise<void> {
  class MarkCommand (line 139) | class MarkCommand extends ExCommand {
    method constructor (line 147) | constructor(markName: string) {
    method execute (line 152) | async execute(vimState: VimState): Promise<void> {
    method executeWithRange (line 157) | override async executeWithRange(vimState: VimState, range: LineRange):...

FILE: src/cmd_line/commands/move.ts
  class MoveCommand (line 10) | class MoveCommand extends ExCommand {
    method constructor (line 16) | constructor(address?: Address) {
    method neovimCapable (line 21) | public override neovimCapable(): boolean {
    method moveLines (line 25) | private moveLines(vimState: VimState, sourceStart: number, sourceEnd: ...
    method execute (line 93) | public async execute(vimState: VimState): Promise<void> {
    method executeWithRange (line 98) | public override async executeWithRange(vimState: VimState, range: Line...

FILE: src/cmd_line/commands/nohl.ts
  class NohlCommand (line 6) | class NohlCommand extends ExCommand {
    method execute (line 7) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/normal.ts
  class NormalCommand (line 6) | class NormalCommand extends ExCommand {
    method constructor (line 13) | constructor(argument: string) {
    method execute (line 18) | override async execute(vimState: VimState): Promise<void> {
    method executeWithRange (line 25) | override async executeWithRange(vimState: VimState, lineRange: LineRan...

FILE: src/cmd_line/commands/only.ts
  class OnlyCommand (line 5) | class OnlyCommand extends ExCommand {
    method execute (line 6) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/print.ts
  type PrintArgs (line 7) | type PrintArgs = {
  class PrintCommand (line 14) | class PrintCommand extends ExCommand {
    method constructor (line 22) | constructor(args: PrintArgs) {
    method execute (line 27) | async execute(vimState: VimState): Promise<void> {
    method executeWithRange (line 32) | override async executeWithRange(vimState: VimState, range: LineRange):...

FILE: src/cmd_line/commands/put.ts
  type IPutCommandArguments (line 18) | interface IPutCommandArguments {
  class PutExCommand (line 29) | class PutExCommand extends ExCommand {
    method constructor (line 60) | constructor(args: IPutCommandArguments) {
    method neovimCapable (line 65) | public override neovimCapable(): boolean {
    method doPut (line 69) | async doPut(vimState: VimState, position: Position): Promise<void> {
    method execute (line 102) | async execute(vimState: VimState): Promise<void> {
    method executeWithRange (line 106) | override async executeWithRange(vimState: VimState, range: LineRange):...

FILE: src/cmd_line/commands/pwd.ts
  class PwdCommand (line 9) | class PwdCommand extends ExCommand {
    method execute (line 10) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/quit.ts
  type IQuitCommandArguments (line 9) | interface IQuitCommandArguments {
  class QuitCommand (line 18) | class QuitCommand extends ExCommand {
    method constructor (line 31) | constructor(args: IQuitCommandArguments) {
    method execute (line 36) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/read.ts
  type IReadCommandArguments (line 9) | type IReadCommandArguments =
  class ReadCommand (line 19) | class ReadCommand extends ExCommand {
    method constructor (line 35) | constructor(args: IReadCommandArguments) {
    method neovimCapable (line 40) | public override neovimCapable(): boolean {
    method execute (line 44) | async execute(vimState: VimState): Promise<void> {
    method getTextToInsert (line 56) | async getTextToInsert(vimState: VimState): Promise<string> {

FILE: src/cmd_line/commands/redo.ts
  class RedoCommand (line 12) | class RedoCommand extends ExCommand {
    method constructor (line 19) | private constructor(count?: number) {
    method execute (line 24) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/register.ts
  class RegisterCommand (line 12) | class RegisterCommand extends ExCommand {
    method constructor (line 19) | constructor(registers: string[]) {
    method getRegisterDisplayValue (line 24) | private async getRegisterDisplayValue(register: string): Promise<strin...
    method displayRegisterValue (line 35) | async displayRegisterValue(vimState: VimState, register: string): Prom...
    method regSortOrder (line 45) | private regSortOrder(register: string): number {
    method execute (line 60) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/retab.ts
  type IRetabCommandArguments (line 11) | interface IRetabCommandArguments {
  type UpdatedLineSegment (line 16) | interface UpdatedLineSegment {
  class RetabCommand (line 22) | class RetabCommand extends ExCommand {
    method constructor (line 36) | constructor(args: IRetabCommandArguments) {
    method execute (line 41) | async execute(vimState: VimState): Promise<void> {
    method executeWithRange (line 50) | override async executeWithRange(vimState: VimState, range: LineRange):...
    method concat (line 55) | private concat(count: number, char: string): string {
    method hasTabs (line 65) | private hasTabs(str: string): boolean {
    method expandtab (line 69) | expandtab(str: string, start = 0, tabstop = configuration.tabstop): st...
    method retabLineSegment (line 88) | retabLineSegment(
    method retabLine (line 119) | retabLine(line: string, tabstop = configuration.tabstop): string {
    method retab (line 143) | public retab(vimState: VimState, startLine: number, endLine: number) {

FILE: src/cmd_line/commands/set.ts
  type SetOperation (line 9) | type SetOperation =
  class SetCommand (line 146) | class SetCommand extends ExCommand {
    method constructor (line 152) | constructor(operation: SetOperation) {
    method addListener (line 159) | static addListener(option: string, listener: () => void) {
    method execute (line 164) | async execute(vimState: VimState): Promise<void> {
    method showOption (line 294) | private showOption(vimState: VimState, option: string, value: boolean ...

FILE: src/cmd_line/commands/sh.ts
  class ShCommand (line 5) | class ShCommand extends ExCommand {
    method execute (line 6) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/shift.ts
  type ShiftDirection (line 11) | type ShiftDirection = '>' | '<';
  type ShiftArgs (line 12) | type ShiftArgs = {
  class ShiftCommand (line 18) | class ShiftCommand extends ExCommand {
    method constructor (line 35) | constructor(args: ShiftArgs) {
    method execute (line 40) | public async execute(vimState: VimState): Promise<void> {
    method executeWithRange (line 44) | public override async executeWithRange(vimState: VimState, range: Line...

FILE: src/cmd_line/commands/smile.ts
  class SmileCommand (line 6) | class SmileCommand extends ExCommand {
    method constructor (line 35) | constructor() {
    method execute (line 39) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/sort.ts
  type ISortCommandArguments (line 12) | interface ISortCommandArguments {
  class SortCommand (line 21) | class SortCommand extends ExCommand {
    method constructor (line 36) | constructor(args: ISortCommandArguments) {
    method neovimCapable (line 41) | public override neovimCapable(): boolean {
    method execute (line 45) | async execute(vimState: VimState): Promise<void> {
    method sortLines (line 54) | async sortLines(vimState: VimState, startLine: number, endLine: number) {
    method executeWithRange (line 108) | override async executeWithRange(vimState: VimState, range: LineRange):...

FILE: src/cmd_line/commands/substitute.ts
  type ReplaceStringComponent (line 37) | type ReplaceStringComponent =
  class ReplaceString (line 45) | class ReplaceString {
    method constructor (line 47) | constructor(components: ReplaceStringComponent[]) {
    method toString (line 51) | public toString(): string {
    method resolve (line 78) | public resolve(vimState: VimState, matches: string[]): string {
  type ISubstituteCommandArguments (line 146) | interface ISubstituteCommandArguments {
  type SubstituteFlags (line 170) | interface SubstituteFlags {
  class SubstituteCommand (line 308) | class SubstituteCommand extends ExCommand {
    method constructor (line 341) | constructor(args: ISubstituteCommandArguments) {
    method neovimCapable (line 347) | public override neovimCapable(): boolean {
    method getSubstitutionDecorations (line 352) | public getSubstitutionDecorations(
    method replaceMatchRange (line 410) | private async replaceMatchRange(
    method confirmReplacement (line 435) | private async confirmReplacement(
    method resolvePatterns (line 510) | private resolvePatterns(throwErrors: boolean): {
    method execute (line 547) | async execute(vimState: VimState): Promise<void> {
    method executeWithRange (line 551) | override async executeWithRange(vimState: VimState, lineRange: LineRan...
    method setStatusBarText (line 657) | private setStatusBarText(vimState: VimState, substitutions: number, li...

FILE: src/cmd_line/commands/tab.ts
  type TabCommandType (line 19) | enum TabCommandType {
  type ITabCommandArguments (line 32) | type ITabCommandArguments =
  class TabCommand (line 69) | class TabCommand extends ExCommand {
    method constructor (line 151) | constructor(args: ITabCommandArguments) {
    method executeCommandWithCount (line 156) | private async executeCommandWithCount(count: number, command: string):...
    method execute (line 162) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/terminal.ts
  class TerminalCommand (line 6) | class TerminalCommand extends ExCommand {
    method execute (line 9) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/undo.ts
  class UndoCommand (line 12) | class UndoCommand extends ExCommand {
    method constructor (line 19) | private constructor(count?: number) {
    method execute (line 24) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/vscode.ts
  class VsCodeCommand (line 7) | class VsCodeCommand extends ExCommand {
    method constructor (line 14) | public constructor(command: string) {
    method execute (line 22) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/wall.ts
  class WallCommand (line 11) | class WallCommand extends ExCommand {
    method constructor (line 17) | constructor(bang?: boolean) {
    method execute (line 22) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/write.ts
  type IWriteCommandArguments (line 12) | type IWriteCommandArguments = {
  class WriteCommand (line 24) | class WriteCommand extends ExCommand {
    method constructor (line 43) | constructor(args: IWriteCommandArguments) {
    method execute (line 48) | async execute(vimState: VimState): Promise<void> {
    method saveAs (line 87) | private async saveAs(vimState: VimState, fileName: string): Promise<vo...
    method save (line 136) | private async save(vimState: VimState): Promise<void> {
    method shouldShowDocument (line 162) | private shouldShowDocument(documentUri: vscode.Uri): boolean {
    method tabContainsDocument (line 180) | private tabContainsDocument(tab: vscode.Tab, uriString: string): boole...
    method background (line 192) | private async background<T>(fn: Thenable<T>): Promise<void> {

FILE: src/cmd_line/commands/writequit.ts
  type IWriteQuitCommandArguments (line 12) | interface IWriteQuitCommandArguments {
  class WriteQuitCommand (line 18) | class WriteQuitCommand extends ExCommand {
    method constructor (line 26) | constructor(args: IWriteQuitCommandArguments) {
    method execute (line 32) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/writequitall.ts
  type IWriteQuitAllCommandArguments (line 12) | interface IWriteQuitAllCommandArguments {
  class WriteQuitAllCommand (line 17) | class WriteQuitAllCommand extends ExCommand {
    method constructor (line 24) | constructor(args: IWriteQuitAllCommandArguments) {
    method execute (line 30) | async execute(vimState: VimState): Promise<void> {

FILE: src/cmd_line/commands/yank.ts
  type YankCommandArguments (line 11) | interface YankCommandArguments {
  class YankCommand (line 16) | class YankCommand extends ExCommand {
    method constructor (line 38) | constructor(args: YankCommandArguments) {
    method yank (line 43) | private async yank(vimState: VimState, start: Position, end: Position) {
    method execute (line 57) | async execute(vimState: VimState): Promise<void> {
    method executeWithRange (line 66) | override async executeWithRange(vimState: VimState, range: LineRange):...

FILE: src/common/matching/matcher.ts
  type Pairing (line 5) | type Pairing = {
  class PairMatcher (line 15) | class PairMatcher {
    method findPairedChar (line 38) | private static findPairedChar(
    method keepSearching (line 110) | private static keepSearching(lineNumber: number, lineCount: number, is...
    method getPercentPairing (line 118) | static getPercentPairing(char: string): Pairing | undefined {
    method nextPairedChar (line 138) | static nextPairedChar(

FILE: src/common/matching/quoteMatcher.ts
  type QuoteMatch (line 1) | enum QuoteMatch {
  class QuoteMatcher (line 9) | class QuoteMatcher {
    method constructor (line 14) | constructor(quote: '"' | "'" | '`', corpus: string) {
    method surroundingQuotes (line 29) | public surroundingQuotes(cursorIndex: number): [number, number] | unde...
    method getNextQuote (line 50) | private getNextQuote(start: number): number | undefined {
    method getPrevQuote (line 60) | private getPrevQuote(start: number): number | undefined {

FILE: src/common/matching/tagMatcher.ts
  type Tag (line 4) | type Tag = { name: string; type: 'close' | 'open'; startPos: number; end...
  type MatchedTag (line 5) | type MatchedTag = {
  class TagMatcher (line 13) | class TagMatcher {
    method constructor (line 25) | constructor(corpus: string, position: number, vimState: VimState) {
    method determineRelevantTag (line 140) | determineRelevantTag(
    method findOpening (line 155) | findOpening(inclusive: boolean): number | undefined {
    method findClosing (line 162) | findClosing(inclusive: boolean): number | undefined {

FILE: src/common/motion/cursor.ts
  class Cursor (line 3) | class Cursor {
    method constructor (line 7) | constructor(start: Position, stop: Position) {
    method atPosition (line 12) | public static atPosition(position: Position): Cursor {
    method fromSelection (line 19) | public static fromSelection(sel: Selection): Cursor {
    method isValid (line 23) | public isValid(document: TextDocument) {
    method equals (line 27) | public equals(other: Cursor): boolean {
    method withNewStop (line 34) | public withNewStop(stop: Position): Cursor {
    method withNewStart (line 41) | public withNewStart(start: Position): Cursor {
    method toString (line 45) | public toString(): string {
    method validate (line 49) | public validate(document: TextDocument): Cursor {

FILE: src/common/motion/position.ts
  type PositionDiffType (line 19) | enum PositionDiffType {
  class PositionDiff (line 36) | class PositionDiff {
    method constructor (line 41) | private constructor(type: PositionDiffType, line: number, character: n...
    method identity (line 48) | public static identity(): PositionDiff {
    method offset (line 53) | public static offset({ line = 0, character = 0 }): PositionDiff {
    method exactPosition (line 58) | public static exactPosition(position: Position): PositionDiff {
    method startOfLine (line 63) | public static startOfLine(): PositionDiff {
    method endOfLine (line 68) | public static endOfLine(): PositionDiff {
    method exactCharacter (line 73) | public static exactCharacter({
    method toString (line 83) | public toString(): string {
  function earlierOf (line 105) | function earlierOf(p1: Position, p2: Position): Position {
  function laterOf (line 112) | function laterOf(p1: Position, p2: Position): Position {
  function sorted (line 119) | function sorted(p1: Position, p2: Position): [Position, Position] {
  type Position (line 124) | interface Position {

FILE: src/common/number/numericString.ts
  type NumericStringRadix (line 30) | enum NumericStringRadix {
  class NumericString (line 36) | class NumericString {
    method parse (line 64) | public static parse(
    method constructor (line 145) | private constructor(
    method toString (line 163) | public toString(): string {

FILE: src/configuration/configuration.ts
  type RemoveIndex (line 26) | type RemoveIndex<T> = {
  type OptionValue (line 64) | type OptionValue = number | string | boolean;
  type VSCodeKeybinding (line 66) | interface VSCodeKeybinding {
  type IHandleKeys (line 74) | interface IHandleKeys {
  type IKeyBinding (line 78) | interface IKeyBinding {
  class Configuration (line 101) | class Configuration implements IConfiguration {
    method addLoadListener (line 115) | public addLoadListener(listener: () => void): void {
    method load (line 119) | public async load(): Promise<ValidatorResults> {
    method getConfiguration (line 210) | getConfiguration(section: string = ''): RemoveIndex<vscode.WorkspaceCo...
    method cursorStyleFromString (line 216) | cursorStyleFromString(cursorStyle: string): vscode.TextEditorCursorSty...
    method clearKeyBindingsMaps (line 220) | clearKeyBindingsMaps() {
    method editorCursorStyle (line 355) | get editorCursorStyle(): vscode.TextEditorCursorStyle | undefined {
    method editorCursorStyle (line 358) | set editorCursorStyle(val: vscode.TextEditorCursorStyle | undefined) {
    method getScrollLines (line 451) | getScrollLines(visibleRanges: vscode.Range[]): number {
    method getCursorStyleForMode (line 466) | getCursorStyleForMode(mode: Mode): vscode.TextEditorCursorStyle | unde...
    method textwidth (line 496) | get textwidth(): number {
    method unproxify (line 506) | private static unproxify(obj: { [key: string]: any }): object {
  function overlapSetting (line 522) | function overlapSetting(args: {

FILE: src/configuration/configurationValidator.ts
  class ConfigurationValidator (line 4) | class ConfigurationValidator {
    method constructor (line 7) | constructor() {
    method registerValidator (line 11) | public registerValidator(validator: IConfigurationValidator) {
    method validate (line 15) | public async validate(config: IConfiguration): Promise<ValidatorResult...

FILE: src/configuration/decoration.ts
  class DecorationImpl (line 4) | class DecorationImpl {
    method _createMarkDecoration (line 18) | private _createMarkDecoration(name: string): vscode.TextEditorDecorati...
    method default (line 51) | public set default(value: vscode.TextEditorDecorationType) {
    method default (line 58) | public get default() {
    method searchHighlight (line 62) | public set searchHighlight(value: vscode.TextEditorDecorationType) {
    method searchHighlight (line 69) | public get searchHighlight() {
    method searchMatch (line 73) | public set searchMatch(value: vscode.TextEditorDecorationType) {
    method searchMatch (line 80) | public get searchMatch() {
    method substitutionAppend (line 84) | public set substitutionAppend(value: vscode.TextEditorDecorationType) {
    method substitutionAppend (line 91) | public get substitutionAppend() {
    method substitutionReplace (line 95) | public set substitutionReplace(value: vscode.TextEditorDecorationType) {
    method substitutionReplace (line 102) | public get substitutionReplace() {
    method easyMotionIncSearch (line 106) | public get easyMotionIncSearch() {
    method easyMotionIncSearch (line 110) | public set easyMotionIncSearch(value: vscode.TextEditorDecorationType) {
    method easyMotionDimIncSearch (line 117) | public get easyMotionDimIncSearch() {
    method easyMotionDimIncSearch (line 121) | public set easyMotionDimIncSearch(value: vscode.TextEditorDecorationTy...
    method getOrCreateMarkDecoration (line 128) | public getOrCreateMarkDecoration(name: string): vscode.TextEditorDecor...
    method getMarkDecoration (line 140) | public getMarkDecoration(name: string): vscode.TextEditorDecorationTyp...
    method allMarkDecorations (line 144) | public allMarkDecorations(): IterableIterator<vscode.TextEditorDecorat...
    method insertModeVirtualCharacter (line 148) | public set insertModeVirtualCharacter(value: vscode.TextEditorDecorati...
    method insertModeVirtualCharacter (line 155) | public get insertModeVirtualCharacter() {
    method operatorPendingModeCursor (line 159) | public set operatorPendingModeCursor(value: vscode.TextEditorDecoratio...
    method operatorPendingModeCursor (line 166) | public get operatorPendingModeCursor() {
    method operatorPendingModeCursorChar (line 170) | public set operatorPendingModeCursorChar(value: vscode.TextEditorDecor...
    method operatorPendingModeCursorChar (line 177) | public get operatorPendingModeCursorChar() {
    method load (line 181) | public load(configuration: IConfiguration) {

FILE: src/configuration/iconfiguration.ts
  type Digraph (line 3) | type Digraph = [string, number | number[]];
  type IModeSpecificStrings (line 5) | interface IModeSpecificStrings<T> {
  type IKeyRemapping (line 14) | interface IKeyRemapping {
  type IVimrcKeyRemapping (line 24) | interface IVimrcKeyRemapping {
  type IAutoSwitchInputMethod (line 29) | interface IAutoSwitchInputMethod {
  type IHighlightedYankConfiguration (line 36) | interface IHighlightedYankConfiguration {
  type ICamelCaseMotionConfiguration (line 58) | interface ICamelCaseMotionConfiguration {
  type ISmartQuotesConfiguration (line 65) | interface ISmartQuotesConfiguration {
  type ITargetsConfiguration (line 80) | interface ITargetsConfiguration {
  type IConfiguration (line 89) | interface IConfiguration {

FILE: src/configuration/iconfigurationValidator.ts
  type IValidatorResult (line 3) | interface IValidatorResult {
  class ValidatorResults (line 8) | class ValidatorResults {
    method append (line 11) | public append(validationResult: IValidatorResult) {
    method concat (line 15) | public concat(validationResults: ValidatorResults) {
    method get (line 19) | public get(): readonly IValidatorResult[] {
    method numErrors (line 23) | public get numErrors(): number {
    method hasError (line 27) | public get hasError(): boolean {
    method numWarnings (line 31) | public get numWarnings(): number {
    method hasWarning (line 35) | public get hasWarning(): boolean {
  type IConfigurationValidator (line 40) | interface IConfigurationValidator {

FILE: src/configuration/langmap.ts
  function updateLangmap (line 24) | function updateLangmap(langmapString: string) {
  function parseLangmap (line 43) | function parseLangmap(langmapString: string): {
  function isLiteralMode (line 79) | function isLiteralMode(mode: Mode): boolean {
  function map (line 83) | function map(langmap: Map<string, string>, key: string): string {
  function remapKey (line 92) | function remapKey(key: string): string {
  function unmapKey (line 96) | function unmapKey(key: string): string {
  function unmapLiteral (line 103) | function unmapLiteral(

FILE: src/configuration/notation.ts
  class Notation (line 1) | class Notation {
    method ToControlCharacter (line 22) | public static ToControlCharacter(key: string) {
    method IsControlKey (line 30) | public static IsControlKey(key: string): boolean {
    method NormalizeKey (line 43) | public static NormalizeKey(key: string, leaderKey: string): string {
    method printableKey (line 80) | public static printableKey(key: string, leaderKey: string) {
    method isSurroundedByAngleBrackets (line 85) | private static isSurroundedByAngleBrackets(key: string): boolean {

FILE: src/configuration/remapper.ts
  type IRemapper (line 12) | interface IRemapper {
  class Remappers (line 24) | class Remappers implements IRemapper {
    method isPotentialRemap (line 33) | get isPotentialRemap(): boolean {
    method sendKey (line 37) | public async sendKey(keys: string[], modeHandler: ModeHandler): Promis...
  class Remapper (line 47) | class Remapper implements IRemapper {
    method isPotentialRemap (line 86) | get isPotentialRemap(): boolean {
    method constructor (line 90) | constructor(configKey: string, remappedModes: Mode[]) {
    method sendKey (line 95) | public async sendKey(keys: string[], modeHandler: ModeHandler): Promis...
    method handleRemapping (line 467) | private async handleRemapping(
    method findMatchingRemap (line 533) | protected findMatchingRemap(
    method getRemappedKeysLengthRange (line 566) | protected static getRemappedKeysLengthRange(
    method hasPotentialRemap (line 582) | protected static hasPotentialRemap(
  function keyBindingsConfigKey (line 605) | function keyBindingsConfigKey(mode: string): string {
  class InsertModeRemapper (line 609) | class InsertModeRemapper extends Remapper {
    method constructor (line 610) | constructor() {
  class NormalModeRemapper (line 615) | class NormalModeRemapper extends Remapper {
    method constructor (line 616) | constructor() {
  class OperatorPendingModeRemapper (line 621) | class OperatorPendingModeRemapper extends Remapper {
    method constructor (line 622) | constructor() {
  class VisualModeRemapper (line 627) | class VisualModeRemapper extends Remapper {
    method constructor (line 628) | constructor() {
  class CommandLineModeRemapper (line 633) | class CommandLineModeRemapper extends Remapper {
    method constructor (line 634) | constructor() {

FILE: src/configuration/validators/inputMethodSwitcherValidator.ts
  class InputMethodSwitcherConfigurationValidator (line 7) | class InputMethodSwitcherConfigurationValidator implements IConfiguratio...
    method validate (line 8) | async validate(config: IConfiguration): Promise<ValidatorResults> {
    method disable (line 52) | disable(config: IConfiguration) {
    method getRawCmd (line 56) | private getRawCmd(cmd: string): string {

FILE: src/configuration/validators/neovimValidator.ts
  class NeovimValidator (line 9) | class NeovimValidator implements IConfigurationValidator {
    method validate (line 10) | validate(config: IConfiguration): Promise<ValidatorResults> {
    method disable (line 62) | disable(config: IConfiguration) {

FILE: src/configuration/validators/remappingValidator.ts
  class RemappingValidator (line 8) | class RemappingValidator implements IConfigurationValidator {
    method validate (line 11) | async validate(config: IConfiguration): Promise<ValidatorResults> {
    method disable (line 97) | disable(config: IConfiguration) {
    method isRemappingValid (line 101) | private async isRemappingValid(remapping: IKeyRemapping): Promise<Vali...
    method isCommandValid (line 156) | private async isCommandValid(command: string): Promise<boolean> {
    method getCommandMap (line 164) | private async getCommandMap(): Promise<Map<string, boolean>> {

FILE: src/configuration/validators/vimrcValidator.ts
  class VimrcValidator (line 5) | class VimrcValidator implements IConfigurationValidator {
    method validate (line 6) | async validate(config: IConfiguration): Promise<ValidatorResults> {
    method disable (line 19) | disable(config: IConfiguration): void {

FILE: src/configuration/vimrc.ts
  class VimrcImpl (line 11) | class VimrcImpl {
    method vimrcPath (line 17) | public get vimrcPath(): string | undefined {
    method buildSource (line 23) | private static buildSource(line: string) {
    method loadConfig (line 35) | private static async loadConfig(config: IConfiguration, configPath: st...
    method load (line 75) | public async load(config: IConfiguration) {
    method addRemapToConfig (line 120) | public static addRemapToConfig(config: IConfiguration, remap: IVimrcKe...
    method removeRemapFromConfig (line 246) | public static removeRemapFromConfig(config: IConfiguration, remap: IVi...
    method clearRemapsFromConfig (line 333) | public static clearRemapsFromConfig(config: IConfiguration, remap: IVi...
    method removeAllRemapsFromConfig (line 419) | public static removeAllRemapsFromConfig(config: IConfiguration): void {
    method findDefaultVimrc (line 437) | private static async findDefaultVimrc(): Promise<string | undefined> {
    method expandHome (line 461) | private static expandHome(filePath: string): string {

FILE: src/configuration/vimrcKeyRemappingBuilder.ts
  class VimrcKeyRemappingBuilderImpl (line 3) | class VimrcKeyRemappingBuilderImpl {
    method build (line 140) | public async build(
    method buildUnmapping (line 180) | public async buildUnmapping(line: string): Promise<IVimrcKeyRemapping ...
    method buildClearMapping (line 201) | public async buildClearMapping(line: string): Promise<IVimrcKeyRemappi...
    method buildKeyList (line 218) | private static buildKeyList(keyString: string): string[] {

FILE: src/error.ts
  type ErrorCode (line 1) | enum ErrorCode {
  class VimError (line 98) | class VimError extends Error {
    method toString (line 102) | override toString(): string {
    method constructor (line 106) | private constructor(code: ErrorCode, message: string) {
    method InvalidAddress (line 112) | static InvalidAddress(): VimError {
    method InvalidExpression (line 115) | static InvalidExpression(expr: string): VimError {
    method InvalidRange (line 118) | static InvalidRange(): VimError {
    method MarkNotSet (line 121) | static MarkNotSet(): VimError {
    method NoAlternateFile (line 124) | static NoAlternateFile(): VimError {
    method NoInsertedTextYet (line 127) | static NoInsertedTextYet(): VimError {
    method NoFileName (line 130) | static NoFileName(): VimError {
    method NoPreviousSubstituteRegularExpression (line 133) | static NoPreviousSubstituteRegularExpression(): VimError {
    method NoPreviousCommand (line 139) | static NoPreviousCommand(): VimError {
    method NoPreviousRegularExpression (line 142) | static NoPreviousRegularExpression(): VimError {
    method NoWriteSinceLastChange (line 145) | static NoWriteSinceLastChange(): VimError {
    method CannotChangeReadOnlyVariable (line 151) | static CannotChangeReadOnlyVariable(variable: string): VimError {
    method MultipleMatches (line 157) | static MultipleMatches(pattern: string): VimError {
    method NoMatchingBuffer (line 160) | static NoMatchingBuffer(bufferName: string): VimError {
    method NoSuchVariable (line 163) | static NoSuchVariable(name: string): VimError {
    method MissingQuote (line 166) | static MissingQuote(): VimError {
    method UnknownFunction_call (line 169) | static UnknownFunction_call(func: string): VimError {
    method TooManyArgs (line 172) | static TooManyArgs(func: string): VimError {
    method NotEnoughArgs (line 175) | static NotEnoughArgs(func: string): VimError {
    method UndefinedVariable (line 178) | static UndefinedVariable(name: string): VimError {
    method ErrorWritingToFile (line 181) | static ErrorWritingToFile(): VimError {
    method FileNoLongerAvailable (line 184) | static FileNoLongerAvailable(): VimError {
    method RecursiveMapping (line 187) | static RecursiveMapping(): VimError {
    method NoStringUnderCursor (line 190) | static NoStringUnderCursor(): VimError {
    method NothingInRegister (line 193) | static NothingInRegister(register: string): VimError {
    method InvalidRegisterName (line 196) | static InvalidRegisterName(register: string): VimError {
    method SearchHitTop (line 199) | static SearchHitTop(pattern: string): VimError {
    method SearchHitBottom (line 202) | static SearchHitBottom(pattern: string): VimError {
    method CannotCloseLastWindow (line 208) | static CannotCloseLastWindow(): VimError {
    method CantFindFileInPath (line 211) | static CantFindFileInPath(fileName: string): VimError {
    method ArgumentRequired (line 214) | static ArgumentRequired(): VimError {
    method InvalidArgument474 (line 217) | static InvalidArgument474(arg?: string): VimError {
    method InvalidArgument475 (line 223) | static InvalidArgument475(arg: string): VimError {
    method NoRangeAllowed (line 226) | static NoRangeAllowed(): VimError {
    method PatternNotFound (line 229) | static PatternNotFound(pattern: string | undefined): VimError {
    method TrailingCharacters (line 235) | static TrailingCharacters(chars?: string): VimError {
    method NotAnEditorCommand (line 241) | static NotAnEditorCommand(command: string): VimError {
    method NoBuffersDeleted (line 244) | static NoBuffersDeleted(): VimError {
    method UnknownOption (line 247) | static UnknownOption(option: string): VimError {
    method NumberRequiredAfterEqual (line 250) | static NumberRequiredAfterEqual(what: string): VimError {
    method AtStartOfChangeList (line 253) | static AtStartOfChangeList(): VimError {
    method AtEndOfChangeList (line 256) | static AtEndOfChangeList(): VimError {
    method ChangeListIsEmpty (line 259) | static ChangeListIsEmpty(): VimError {
    method ListIndexOutOfRange (line 262) | static ListIndexOutOfRange(idx: number): VimError {
    method ArgumentMustBeAList (line 265) | static ArgumentMustBeAList(func: string): VimError {
    method LessTargetsThanListItems (line 268) | static LessTargetsThanListItems(): VimError {
    method MoreTargetsThanListItems (line 271) | static MoreTargetsThanListItems(): VimError {
    method CanOnlyIndexAListDictionaryOrBlob (line 274) | static CanOnlyIndexAListDictionaryOrBlob(): VimError {
    method CanOnlyCompareListWithList (line 280) | static CanOnlyCompareListWithList(): VimError {
    method InvalidOperationForList (line 283) | static InvalidOperationForList(): VimError {
    method InvalidOperationForFuncrefs (line 286) | static InvalidOperationForFuncrefs(): VimError {
    method CannotIndexAFuncref (line 289) | static CannotIndexAFuncref(): VimError {
    method UnknownFunction_funcref (line 292) | static UnknownFunction_funcref(): VimError {
    method InvalidTypeForLen (line 295) | static InvalidTypeForLen(): VimError {
    method UsingAFuncrefAsANumber (line 298) | static UsingAFuncrefAsANumber(): VimError {
    method FuncrefVariableNameMustStartWithACapital (line 301) | static FuncrefVariableNameMustStartWithACapital(name: string): VimError {
    method SliceRequiresAListOrBlobValue (line 307) | static SliceRequiresAListOrBlobValue(): VimError {
    method ListValueHasMoreItemsThanTarget (line 313) | static ListValueHasMoreItemsThanTarget(): VimError {
    method ListValueHasNotEnoughItems (line 319) | static ListValueHasNotEnoughItems(): VimError {
    method ArgumentOfFuncMustBeAListOrDictionary (line 322) | static ArgumentOfFuncMustBeAListOrDictionary(func: string): VimError {
    method ListRequired (line 328) | static ListRequired(): VimError {
    method DictionaryRequired (line 331) | static DictionaryRequired(): VimError {
    method KeyNotPresentInDictionary (line 334) | static KeyNotPresentInDictionary(key: string): VimError {
    method CannotUseSliceWithADictionary (line 340) | static CannotUseSliceWithADictionary(): VimError {
    method DuplicateKeyInDictionary (line 346) | static DuplicateKeyInDictionary(key: string): VimError {
    method StrideIsZero (line 349) | static StrideIsZero(): VimError {
    method StartPastEnd (line 352) | static StartPastEnd(): VimError {
    method UsingADictionaryAsANumber (line 355) | static UsingADictionaryAsANumber(): VimError {
    method UsingFuncrefAsAString (line 358) | static UsingFuncrefAsAString(): VimError {
    method UsingListAsAString (line 361) | static UsingListAsAString(): VimError {
    method UsingDictionaryAsAString (line 364) | static UsingDictionaryAsAString(): VimError {
    method WrongVariableType (line 367) | static WrongVariableType(operation: string): VimError {
    method CanOnlyCompareDictionaryWithDictionary (line 370) | static CanOnlyCompareDictionaryWithDictionary(): VimError {
    method InvalidOperationForDictionary (line 376) | static InvalidOperationForDictionary(): VimError {
    method ValueIsLocked (line 382) | static ValueIsLocked(name: string): VimError {
    method UsingAListAsANumber (line 385) | static UsingAListAsANumber(): VimError {
    method NoPreviouslyUsedRegister (line 388) | static NoPreviouslyUsedRegister(): VimError {
    method CannotUseModuloWithFloat (line 391) | static CannotUseModuloWithFloat(): VimError {
    method UsingAFloatAsANumber (line 394) | static UsingAFloatAsANumber(): VimError {
    method UsingFloatAsAString (line 397) | static UsingFloatAsAString(): VimError {
    method NumberOrFloatRequired (line 400) | static NumberOrFloatRequired(): VimError {
    method ArgumentOfMapMustBeAListDictionaryOrBlob (line 403) | static ArgumentOfMapMustBeAListDictionaryOrBlob(): VimError {
    method ListOrBlobRequired (line 409) | static ListOrBlobRequired(): VimError {
    method MaxDepthMustBeANonNegativeNumber (line 412) | static MaxDepthMustBeANonNegativeNumber(): VimError {
    method ExpectedADict (line 418) | static ExpectedADict(): VimError {
    method SecondArgumentOfFunction (line 421) | static SecondArgumentOfFunction(): VimError {
    method PositiveCountRequired (line 427) | static PositiveCountRequired(): VimError {
    method BlobLiteralShouldHaveAnEvenNumberOfHexCharacters (line 430) | static BlobLiteralShouldHaveAnEvenNumberOfHexCharacters(): VimError {
    method UsingABlobAsANumber (line 436) | static UsingABlobAsANumber(): VimError {
    method CanOnlyCompareBlobWithBlob (line 439) | static CanOnlyCompareBlobWithBlob(): VimError {
    method InvalidOperationForBlob (line 442) | static InvalidOperationForBlob(): VimError {
    method CannotModifyExistingVariable (line 445) | static CannotModifyExistingVariable(): VimError {
    method CannotLock (line 448) | static CannotLock(
    method ListRequiredForArgument (line 453) | static ListRequiredForArgument(idx: number): VimError {
  class ForceStopRemappingError (line 462) | class ForceStopRemappingError extends Error {
    method constructor (line 463) | constructor(reason: string = 'StopRemapping') {
    method fromVimError (line 467) | static fromVimError(vimError: VimError): ForceStopRemappingError {

FILE: src/globals.ts
  class Globals (line 6) | class Globals {

FILE: src/history/historyFile.ts
  class HistoryFile (line 7) | class HistoryFile {
    method historyFilePath (line 10) | get historyFilePath(): string {
    method constructor (line 14) | constructor(context: ExtensionContext, historyFileName: string) {
    method add (line 18) | public async add(value: string | undefined): Promise<void> {
    method get (line 22) | public get(): string[] {
    method clear (line 26) | public clear() {
    method load (line 30) | public async load(): Promise<void> {
  class SearchHistory (line 35) | class SearchHistory extends HistoryFile {
    method constructor (line 36) | constructor(context: ExtensionContext) {
  class CommandLineHistory (line 41) | class CommandLineHistory extends HistoryFile {
    method constructor (line 42) | constructor(context: ExtensionContext) {

FILE: src/history/historyTracker.ts
  class DocumentChange (line 30) | class DocumentChange {
    method insert (line 46) | public static insert(start: Position, text: string) {
    method delete (line 50) | public static delete(start: Position, text: string) {
    method replace (line 54) | public static replace(start: Position, before: string, after: string) {
    method reversed (line 61) | public reversed() {
    method constructor (line 65) | private constructor(start: Position, before: string, after: string) {
    method do (line 74) | public async do(editor: vscode.TextEditor): Promise<void> {
    method undo (line 81) | public async undo(editor: vscode.TextEditor): Promise<void> {
    method beforeRange (line 88) | public get beforeRange(): vscode.Range {
    method afterRange (line 95) | public get afterRange(): vscode.Range {
  type IMarkBase (line 100) | interface IMarkBase {
  type ILocalMark (line 105) | interface ILocalMark extends IMarkBase {
  type IGlobalMark (line 109) | interface IGlobalMark extends IMarkBase {
  type IMark (line 114) | type IMark = ILocalMark | IGlobalMark;
  class HistoryStep (line 119) | class HistoryStep {
    method constructor (line 158) | constructor(init: { marks: IMark[]; changes?: DocumentChange[]; cameFr...
    method merge (line 170) | public merge(document: vscode.TextDocument): void {
    method howLongAgo (line 216) | public howLongAgo(): string {
  class UndoStack (line 236) | class UndoStack {
    method getHistoryStepAtIndex (line 243) | public getHistoryStepAtIndex(idx: number): HistoryStep | undefined {
    method getCurrentHistoryStepIndex (line 247) | public getCurrentHistoryStepIndex(): number {
    method getStackDepth (line 251) | public getStackDepth(): number {
    method getCurrentHistoryStep (line 258) | public getCurrentHistoryStep(): HistoryStep | undefined {
    method stepForward (line 271) | public stepForward(): HistoryStep | undefined {
    method stepBackward (line 285) | public stepBackward(): HistoryStep | undefined {
    method pushChange (line 296) | public pushChange(change: DocumentChange): void {
    method pushHistoryStep (line 314) | public pushHistoryStep(step: HistoryStep) {
    method getCurrentMarkList (line 320) | public getCurrentMarkList(): IMark[] {
    method removeMarks (line 325) | public removeMarks(marks?: readonly string[]): void {
  class ChangeList (line 343) | class ChangeList {
    method addChangePosition (line 347) | public addChangePosition(position: Position) {
    method nextChangePosition (line 357) | public nextChangePosition(): Position | VimError {
    method prevChangePosition (line 371) | public prevChangePosition(): Position | VimError {
  class HistoryTracker (line 386) | class HistoryTracker {
    method constructor (line 406) | constructor(vimState: VimState) {
    method getDocumentText (line 414) | private getDocumentText(): string {
    method getDocumentVersion (line 419) | private getDocumentVersion(): number {
    method updateAndReturnMarks (line 431) | private updateAndReturnMarks(document: vscode.TextDocument): IMark[] {
    method getMarkList (line 515) | private getMarkList(isFileMark: boolean): IMark[] {
    method getAllMarksInDocument (line 522) | private getAllMarksInDocument(document: vscode.TextDocument): IMark[] {
    method addMark (line 530) | public addMark(document: vscode.TextDocument, position: Position, mark...
    method putMarkInList (line 589) | private putMarkInList(mark: IMark): void {
    method getMark (line 602) | public getMark(name: string): IMark | undefined {
    method removeLocalMarks (line 641) | public removeLocalMarks(): void {
    method removeMarks (line 648) | public removeMarks(markNames: readonly string[]): void {
    method getLocalMarks (line 664) | public getLocalMarks(): readonly ILocalMark[] {
    method getGlobalMarks (line 671) | public getGlobalMarks(): readonly IMark[] {
    method getMarks (line 675) | public getMarks(): readonly IMark[] {
    method addChange (line 684) | public addChange(force: boolean = false): boolean {
    method ignoreChange (line 755) | public ignoreChange(): void {
    method finishCurrentStep (line 767) | public finishCurrentStep(): void {
    method goBackHistoryStep (line 797) | public async goBackHistoryStep(): Promise<void> {
    method goForwardHistoryStep (line 832) | public async goForwardHistoryStep(): Promise<void> {
    method goBackHistoryStepsOnLine (line 877) | public async goBackHistoryStepsOnLine(): Promise<void> {
    method getLastChangeEndPosition (line 958) | public getLastChangeEndPosition(): Position | undefined {
    method getLastHistoryStartPosition (line 962) | public getLastHistoryStartPosition(): Position | undefined {
    method getLastChangeStartPosition (line 966) | private getLastChangeStartPosition(): Position | undefined {
    method nextChangeInChangeList (line 973) | public nextChangeInChangeList(): Position | VimError {
    method prevChangeInChangeList (line 980) | public prevChangeInChangeList(): Position | VimError {

FILE: src/jumps/jump.ts
  class Jump (line 11) | class Jump {
    method constructor (line 21) | constructor({ document, position }: { document: vscode.TextDocument; p...
    method fileName (line 26) | public get fileName() {
    method fromStateNow (line 34) | public static fromStateNow(vimState: VimState) {
    method fromStateBefore (line 46) | public static fromStateBefore(vimState: VimState) {
    method isSamePosition (line 57) | public isSamePosition(other: Jump): boolean {

FILE: src/jumps/jumpTracker.ts
  constant MAX_JUMPS (line 11) | const MAX_JUMPS = 100;
  class JumpTracker (line 17) | class JumpTracker {
    method jumps (line 33) | public get jumps(): readonly Jump[] {
    method currentJumpNumber (line 41) | public get currentJumpNumber(): number {
    method currentJump (line 48) | public get currentJump(): Jump | undefined {
    method hasJumps (line 55) | public get hasJumps(): boolean {
    method end (line 62) | public get end(): Jump | undefined {
    method recordJump (line 75) | public recordJump(from: Jump, to?: Jump) {
    method handleFileJump (line 95) | public handleFileJump(from: Jump | undefined, to: Jump) {
    method performFileJump (line 111) | private async performFileJump(jump: Jump, vimState: VimState): Promise...
    method jumpForward (line 151) | public async jumpForward(position: Position, vimState: VimState): Prom...
    method jumpBack (line 158) | public async jumpBack(position: Position, vimState: VimState): Promise...
    method jumpThroughHistory (line 162) | private async jumpThroughHistory(
    method recordJumpBack (line 196) | public recordJumpBack(from: Jump): Jump {
    method recordJumpForward (line 223) | public recordJumpForward(from: Jump): Jump {
    method handleTextAdded (line 243) | public handleTextAdded(
    method handleTextDeleted (line 283) | public handleTextDeleted(document: { fileName: string }, range: vscode...
    method clearJumps (line 312) | public clearJumps(): void {
    method pushJump (line 317) | private pushJump(from: Jump | undefined, to: Jump | undefined) {
    method changePositionForJumpNumber (line 333) | private changePositionForJumpNumber(index: number, jump: Jump, newPosi...
    method clearJumpsOnSameLine (line 344) | private clearJumpsOnSameLine(jump: Jump): void {
    method removeDuplicateJumps (line 351) | private removeDuplicateJumps() {

FILE: src/mode/internalSelectionsTracker.ts
  constant SELECTIONS_UPDATE_TO_IGNORE_EXPIRY_MS (line 18) | const SELECTIONS_UPDATE_TO_IGNORE_EXPIRY_MS = 1000;
  type InternalSelectionsUpdate (line 23) | type InternalSelectionsUpdate = {
  class InternalSelectionsTracker (line 50) | class InternalSelectionsTracker {
    method shouldIgnoreAsInternalSelectionChangeEvent (line 60) | public shouldIgnoreAsInternalSelectionChangeEvent(
    method maybeUntrackSelectionsUpdateToIgnore (line 79) | private maybeUntrackSelectionsUpdateToIgnore(selectionsHash: string): ...
    method shouldIgnoreAsIntermediateSelection (line 122) | private shouldIgnoreAsIntermediateSelection(untrackedEventSelectionsHa...
    method startIgnoringIntermediateSelections (line 157) | public startIgnoringIntermediateSelections(): void {
    method stopIgnoringIntermediateSelections (line 165) | public stopIgnoringIntermediateSelections(): void {
    method maybeTrackSelectionsUpdateToIgnore (line 203) | public maybeTrackSelectionsUpdateToIgnore({
    method trackSelectionsUpdateToIgnore (line 217) | private trackSelectionsUpdateToIgnore(updatedSelections: readonly vsco...
    method cleanupStaleSelectionsUpdatesToIgnore (line 232) | private cleanupStaleSelectionsUpdatesToIgnore(): void {
    method logTrace (line 252) | private logTrace(message: string): void {
    method logDebug (line 255) | private logDebug(message: string): void {
    method logWarn (line 258) | private logWarn(message: string): void {

FILE: src/mode/mode.ts
  type Mode (line 4) | enum Mode {
  type VSCodeVimCursorType (line 20) | enum VSCodeVimCursorType {
  type NormalCommandState (line 30) | enum NormalCommandState {
  type DotCommandStatus (line 36) | enum DotCommandStatus {
  type ReplayMode (line 42) | enum ReplayMode {
  function isVisualMode (line 50) | function isVisualMode(mode: Mode): mode is Mode.Visual | Mode.VisualLine...
  function isStatusBarMode (line 58) | function isStatusBarMode(
  function getCursorStyle (line 64) | function getCursorStyle(cursorType: VSCodeVimCursorType) {
  function visualBlockGetTopLeftPosition (line 84) | function visualBlockGetTopLeftPosition(start: Position, stop: Position):...
  function visualBlockGetBottomRightPosition (line 88) | function visualBlockGetBottomRightPosition(start: Position, stop: Positi...

FILE: src/mode/modeData.ts
  type SimpleMode (line 6) | type SimpleMode = Exclude<
  type ModeData (line 12) | type ModeData =
  type ModeDataFor (line 36) | type ModeDataFor<T extends Mode> = { mode: T } & ModeData;

FILE: src/mode/modeHandler.ts
  type IModeHandlerMap (line 61) | interface IModeHandlerMap {
  class ModeHandler (line 71) | class ModeHandler implements vscode.Disposable, IModeHandler {
    method currentMode (line 93) | private get currentMode(): Mode {
    method setCurrentMode (line 96) | private async setCurrentMode(mode: Mode): Promise<void> {
    method create (line 103) | public static async create(
    method constructor (line 120) | private constructor(handlerMap: IModeHandlerMap, textEditor: vscode.Te...
    method syncCursors (line 133) | public syncCursors() {
    method handleSelectionChange (line 179) | public async handleSelectionChange(e: vscode.TextEditorSelectionChange...
    method handleMultipleKeyEvents (line 421) | async handleMultipleKeyEvents(keys: string[], alreadyRemapped: boolean...
    method handleKeyEvent (line 427) | public async handleKeyEvent(keyRaw: string): Promise<void> {
    method handleKeyEventLangmapped (line 433) | private async handleKeyEventLangmapped(key: string): Promise<void> {
    method handleKeyAsAnAction (line 616) | private async handleKeyAsAnAction(key: string): Promise<boolean> {
    method runAction (line 739) | private async runAction(recordedState: RecordedState, action: IBaseAct...
    method executeMovement (line 996) | private async executeMovement(movement: BaseMovement): Promise<Recorde...
    method executeOperator (line 1089) | private async executeOperator(): Promise<void> {
    method rerunRecordedState (line 1149) | public async rerunRecordedState(transformation: Dot): Promise<void> {
    method runMacro (line 1213) | public async runMacro(recordedMacro: RecordedState): Promise<void> {
    method updateSearchHighlights (line 1247) | private updateSearchHighlights(showHighlights: boolean) {
    method updateView (line 1295) | public updateView(
    method dispose (line 1677) | dispose() {
  function getCursorType (line 1684) | function getCursorType(vimState: VimState, mode: Mode): VSCodeVimCursorT...

FILE: src/mode/modeHandlerMap.ts
  class ModeHandlerMapImpl (line 7) | class ModeHandlerMapImpl {
    method getOrCreate (line 10) | public async getOrCreate(editor: TextEditor): Promise<[ModeHandler, bo...
    method get (line 24) | public get(uri: Uri): ModeHandler | undefined {
    method entries (line 28) | public entries(): IterableIterator<[Uri, ModeHandler]> {
    method delete (line 32) | public delete(editorId: Uri) {
    method clear (line 40) | public clear() {

FILE: src/neovim/neovim.ts
  class NeovimWrapper (line 16) | class NeovimWrapper implements vscode.Disposable {
    method run (line 21) | async run(
    method startNeovim (line 89) | private async startNeovim(document: TextDocument) {
    method syncVSCodeToVim (line 121) | private async syncVSCodeToVim(vimState: VimState) {
    method syncVimToVSCode (line 174) | private async syncVimToVSCode(vimState: VimState) {
    method dispose (line 221) | dispose() {

FILE: src/platform/browser/constants.ts
  constant SUPPORT_VIMRC (line 1) | const SUPPORT_VIMRC = false;
  constant SUPPORT_NVIM (line 2) | const SUPPORT_NVIM = false;
  constant SUPPORT_IME_SWITCHER (line 3) | const SUPPORT_IME_SWITCHER = false;
  constant SUPPORT_READ_COMMAND (line 4) | const SUPPORT_READ_COMMAND = false;

FILE: src/platform/browser/fs.ts
  function doesFileExist (line 61) | async function doesFileExist(fileUri: vscode.Uri) {
  function existsAsync (line 70) | async function existsAsync(path: string): Promise<boolean> {
  function unlink (line 79) | async function unlink(path: string): Promise<void> {
  function readFileAsync (line 83) | async function readFileAsync(path: string, encoding: BufferEncoding): Pr...
  function mkdirAsync (line 88) | async function mkdirAsync(path: string, options: any): Promise<void> {
  function writeFileAsync (line 92) | async function writeFileAsync(
  function accessAsync (line 100) | async function accessAsync(path: string, mode: number) {
  function chmodAsync (line 104) | async function chmodAsync(path: string, mode: string | number) {
  function unlinkSync (line 108) | function unlinkSync(path: string) {

FILE: src/platform/browser/history.ts
  class HistoryBase (line 3) | class HistoryBase {
    method historyKey (line 8) | get historyKey(): string {
    method constructor (line 12) | constructor(
    method add (line 21) | public async add(value: string | undefined, history: number): Promise<...
    method get (line 43) | public get(history: number): string[] {
    method clear (line 52) | public async clear() {
    method load (line 57) | public async load(): Promise<void> {
    method save (line 72) | async save(): Promise<void> {

FILE: src/platform/node/constants.ts
  constant SUPPORT_VIMRC (line 1) | const SUPPORT_VIMRC = true;
  constant SUPPORT_NVIM (line 2) | const SUPPORT_NVIM = true;
  constant SUPPORT_IME_SWITCHER (line 3) | const SUPPORT_IME_SWITCHER = true;
  constant SUPPORT_READ_COMMAND (line 4) | const SUPPORT_READ_COMMAND = true;

FILE: src/platform/node/fs.ts
  function doesFileExist (line 64) | async function doesFileExist(fileUri: vscode.Uri) {
  function existsAsync (line 80) | async function existsAsync(path: string): Promise<boolean> {
  function unlink (line 89) | async function unlink(path: string): Promise<void> {
  function readFileAsync (line 93) | async function readFileAsync(path: string, encoding: BufferEncoding): Pr...
  function mkdirAsync (line 97) | async function mkdirAsync(path: string, options: any): Promise<void> {
  function writeFileAsync (line 102) | async function writeFileAsync(
  function accessAsync (line 110) | async function accessAsync(path: string, mode: number) {
  function chmodAsync (line 114) | async function chmodAsync(path: string, mode: string | number) {
  function getMode (line 118) | async function getMode(path: string): Promise<number> {
  function unlinkSync (line 128) | function unlinkSync(path: string) {

FILE: src/platform/node/history.ts
  class HistoryBase (line 7) | class HistoryBase {
    method historyKey (line 12) | get historyKey(): string {
    method constructor (line 16) | constructor(
    method add (line 25) | public async add(value: string | undefined, history: number): Promise<...
    method get (line 47) | public get(history: number): string[] {
    method clear (line 56) | public clear() {
    method load (line 65) | public async load(): Promise<void> {
    method save (line 99) | async save(): Promise<void> {

FILE: src/register/register.ts
  constant REGISTER_FORMAT_VERSION (line 11) | const REGISTER_FORMAT_VERSION = '1.0';
  type RegisterMode (line 19) | enum RegisterMode {
  type RegisterContent (line 25) | type RegisterContent = string | RecordedState;
  type IRegisterContent (line 27) | interface IRegisterContent {
  class Register (line 32) | class Register {
    method put (line 54) | public static put(
    method isValidRegister (line 81) | public static isValidRegister(register: string): boolean {
    method isValidRegisterForMacro (line 90) | public static isValidRegisterForMacro(register: string): boolean {
    method isBlackHoleRegister (line 94) | private static isBlackHoleRegister(registerName: string): boolean {
    method isClipboardRegister (line 98) | private static isClipboardRegister(registerName: string): boolean {
    method isReadOnlyRegister (line 102) | private static isReadOnlyRegister(registerName: string): boolean {
    method isValidLowercaseRegister (line 106) | private static isValidLowercaseRegister(register: string): boolean {
    method isValidUppercaseRegister (line 110) | public static isValidUppercaseRegister(register: string): boolean {
    method overwriteRegister (line 118) | public static overwriteRegister(
    method appendToRegister (line 147) | private static appendToRegister(
    method setReadonlyRegister (line 193) | public static setReadonlyRegister(
    method processNumberedRegisters (line 208) | private static processNumberedRegisters(vimState: VimState, content: R...
    method get (line 270) | public static async get(
    method getSync (line 296) | public static getSync(register: string, multicursorIndex = 0): IRegist...
    method _get (line 304) | private static _get(register: string, multicursorIndex: number): IRegi...
    method has (line 320) | public static has(register: string): boolean {
    method getKeys (line 324) | public static getKeys(): string[] {
    method clearAllRegisters (line 328) | public static clearAllRegisters(): void {
    method saveToDisk (line 332) | public static async saveToDisk(supportNode: boolean): Promise<void> {
    method loadFromDisk (line 353) | public static loadFromDisk(supportNode: boolean): void {

FILE: src/state/compositionState.ts
  class CompositionState (line 1) | class CompositionState {
    method reset (line 6) | reset() {

FILE: src/state/globalState.ts
  class GlobalState (line 9) | class GlobalState {

FILE: src/state/recordedState.ts
  constant ESCAPE_REGEX (line 8) | const ESCAPE_REGEX = new RegExp(/[|\\{}()[\]^$+*?.]/, 'g');
  constant BUFFERED_KEYS_REGEX (line 9) | const BUFFERED_KEYS_REGEX = new RegExp(SpecialKeys.TimeoutFinished, 'g');
  class RecordedState (line 24) | class RecordedState {
    method constructor (line 25) | constructor() {
    method commandString (line 38) | public get commandString(): string {
    method pendingCommandString (line 57) | public get pendingCommandString(): string {
    method resetCommandList (line 68) | public resetCommandList() {
    method operator (line 162) | public get operator(): IBaseOperator | undefined {
    method operators (line 166) | public get operators(): IBaseOperator[] {
    method command (line 173) | public get command(): IBaseCommand {
    method clone (line 209) | public clone(): RecordedState {
    method getOperatorState (line 221) | public getOperatorState(mode: Mode): 'pending' | 'ready' | undefined {

FILE: src/state/remapState.ts
  class RemapState (line 6) | class RemapState {
    method isCurrentlyPerformingRemapping (line 28) | public get isCurrentlyPerformingRemapping() {

FILE: src/state/replaceState.ts
  type ReplaceModeChange (line 3) | type ReplaceModeChange = {
  class ReplaceState (line 11) | class ReplaceState {
    method getChanges (line 19) | public getChanges(cursorIdx: number): ReplaceModeChange[] {
    method resetChanges (line 25) | public resetChanges(cursorIdx: number) {
    method constructor (line 29) | constructor(startPositions: Position[], timesToRepeat: number = 1) {

FILE: src/state/searchState.ts
  type IndexedRange (line 7) | type IndexedRange = {
  type IndexedPosition (line 12) | type IndexedPosition = {
  function mod (line 20) | function mod(n: number, m: number): number {
  class SearchState (line 27) | class SearchState {
    method constructor (line 28) | constructor(
    method searchString (line 53) | public get searchString(): string {
    method searchString (line 56) | public set searchString(str: string) {
    method direction (line 72) | public get direction(): SearchDirection {
    method getMatchRanges (line 82) | public getMatchRanges(vimState: VimState): Range[] {
    method recalculateSearchRanges (line 93) | private recalculateSearchRanges(vimState: VimState): Range[] {
    method getNextSearchMatchPosition (line 123) | public getNextSearchMatchPosition(
    method getNextSearchMatchRange (line 154) | public getNextSearchMatchRange(
    method findContainingMatchRange (line 218) | public findContainingMatchRange(vimState: VimState, pos: Position): In...

FILE: src/state/substituteState.ts
  class SubstituteState (line 7) | class SubstituteState {
    method constructor (line 18) | constructor(searchPattern: Pattern | undefined, replaceString: Replace...

FILE: src/state/vimState.ts
  type IInputMethodSwitcher (line 21) | interface IInputMethodSwitcher {
  type IBaseMovement (line 25) | interface IBaseMovement {
  type INVim (line 33) | interface INVim {
  class VimState (line 48) | class VimState implements vscode.Disposable {
    method document (line 66) | public get document(): vscode.TextDocument {
    method isMultiCursor (line 73) | public get isMultiCursor(): boolean {
    method cursorStartPosition (line 128) | public get cursorStartPosition(): Position {
    method cursorStartPosition (line 131) | public set cursorStartPosition(value: Position) {
    method cursorStopPosition (line 141) | public get cursorStopPosition(): Position {
    method cursorStopPosition (line 144) | public set cursorStopPosition(value: Position) {
    method cursor (line 161) | public get cursor(): Cursor {
    method cursor (line 164) | public set cursor(value: Cursor) {
    method cursors (line 168) | public get cursors(): Cursor[] {
    method cursors (line 171) | public set cursors(value: readonly Cursor[]) {
    method cursorsInitialState (line 194) | public get cursorsInitialState(): readonly Cursor[] {
    method cursorsInitialState (line 197) | public set cursorsInitialState(cursors: readonly Cursor[]) {
    method currentMode (line 217) | public get currentMode(): Mode {
    method currentModeIncludingPseudoModes (line 227) | public get currentModeIncludingPseudoModes(): Mode {
    method setModeData (line 233) | public async setModeData(modeData: ModeData): Promise<void> {
    method setTextEditorLineNumbersStyle (line 253) | public setTextEditorLineNumbersStyle(mode: Mode): void {
    method setCurrentMode (line 261) | public async setCurrentMode(mode: Mode): Promise<void> {
    method currentRegisterMode (line 301) | public set currentRegisterMode(registerMode: RegisterMode | undefined) {
    method currentRegisterMode (line 304) | public get currentRegisterMode(): RegisterMode {
    method constructor (line 326) | public constructor(editor: vscode.TextEditor, easyMotion: IEasyMotion) {
    method load (line 332) | async load() {
    method dispose (line 344) | dispose() {
  type ViewChange (line 349) | interface ViewChange {

FILE: src/statusBar.ts
  class StatusBarImpl (line 8) | class StatusBarImpl implements vscode.Disposable {
    method constructor (line 20) | constructor() {
    method dispose (line 39) | dispose() {
    method updateShowCmd (line 44) | public updateShowCmd(vimState: VimState) {
    method setText (line 54) | public setText(vimState: VimState, text: string, isError = false) {
    method displayError (line 84) | public displayError(vimState: VimState, error: VimError) {
    method getText (line 88) | public getText() {
    method clear (line 97) | public clear(vimState: VimState, force = true) {
    method updateColor (line 124) | private updateColor(mode: Mode) {
  function statusBarText (line 169) | function statusBarText(vimState: VimState) {
  function statusBarCommandText (line 204) | function statusBarCommandText(vimState: VimState): string {

FILE: src/taskQueue.ts
  class TaskQueue (line 4) | class TaskQueue {
    method constructor (line 7) | constructor() {
    method enqueueTask (line 17) | public enqueueTask(task: () => Promise<void>): void {

FILE: src/textEditor.ts
  class TextEditor (line 14) | class TextEditor {
    method insert (line 20) | static async insert(
    method replace (line 46) | static async replace(
    method getLineCount (line 57) | static getLineCount(textEditor?: vscode.TextEditor): number {
    method getLineLength (line 62) | public static getLineLength(line: number): number {
    method getLine (line 72) | static getLine(lineNumber: number): vscode.TextLine {
    method getCharAt (line 76) | static getCharAt(document: vscode.TextDocument, position: Position): s...
    method getWord (line 88) | static getWord(document: vscode.TextDocument, position: Position): str...
    method getTabCharacter (line 131) | static getTabCharacter(editor: vscode.TextEditor): string {
    method getIndentationLevel (line 143) | static getIndentationLevel(line: string, tabSize: number): number {
    method setIndentationLevel (line 164) | static setIndentationLevel(line: string, screenCharacters: number, exp...
    method getDocumentBegin (line 178) | static getDocumentBegin(): Position {
    method getDocumentEnd (line 182) | static getDocumentEnd(document: vscode.TextDocument): Position {
    method getDocumentRange (line 187) | static getDocumentRange(document: vscode.TextDocument): vscode.Range {
    method getFirstNonWhitespaceCharOnLine (line 195) | public static getFirstNonWhitespaceCharOnLine(
    method iterateLinesInBlock (line 209) | public static *iterateLinesInBlock(
    method iterateWords (line 248) | public static *iterateWords(
  type EditorScrollDirection (line 277) | type EditorScrollDirection = 'up' | 'down';
  type EditorScrollByUnit (line 282) | type EditorScrollByUnit = 'line' | 'wrappedLine' | 'page' | 'halfPage';
  type CursorMovePosition (line 287) | type CursorMovePosition =
  type CursorMoveByUnit (line 305) | type CursorMoveByUnit = 'line' | 'wrappedLine' | 'character' | 'halfLine';

FILE: src/textobject/paragraph.ts
  function getCurrentParagraphEnd (line 7) | function getCurrentParagraphEnd(pos: Position, trimWhite: boolean = fals...
  function getCurrentParagraphBeginning (line 28) | function getCurrentParagraphBeginning(pos: Position, trimWhite: boolean ...
  function isLineBlank (line 44) | function isLineBlank(line: number, trimWhite: boolean = false): boolean {

FILE: src/textobject/sentence.ts
  function getSentenceBegin (line 8) | function getSentenceBegin(position: Position, args: { forward: boolean }...
  function getSentenceEnd (line 16) | function getSentenceEnd(pos: Position): Position {
  function getPreviousSentenceBegin (line 32) | function getPreviousSentenceBegin(pos: Position): Position {
  function getNextSentenceBegin (line 56) | function getNextSentenceBegin(pos: Position): Position {
  function getFirstNonWhitespaceInParagraph (line 73) | function getFirstNonWhitespaceInParagraph(

FILE: src/textobject/textobject.ts
  method execActionForOperator (line 27) | public override async execActionForOperator(
  class SelectWord (line 44) | class SelectWord extends TextObject {
    method execAction (line 47) | public async execAction(position: Position, vimState: VimState): Promi...
  class SelectABigWord (line 108) | class SelectABigWord extends TextObject {
    method execAction (line 111) | public async execAction(position: Position, vimState: VimState): Promi...
  class SelectAnExpandingBlock (line 185) | class SelectAnExpandingBlock extends ExpandingSelection {
    method execAction (line 189) | public override async execAction(
  class SelectInnerWord (line 285) | class SelectInnerWord extends TextObject {
    method execAction (line 289) | public async execAction(position: Position, vimState: VimState): Promi...
  class SelectInnerBigWord (line 329) | class SelectInnerBigWord extends TextObject {
    method execAction (line 333) | public async execAction(position: Position, vimState: VimState): Promi...
  class SelectSentence (line 379) | class SelectSentence extends TextObject {
    method execAction (line 382) | public async execAction(position: Position, vimState: VimState): Promi...
  class SelectInnerSentence (line 436) | class SelectInnerSentence extends TextObject {
    method execAction (line 439) | public async execAction(position: Position, vimState: VimState): Promi...
  class SelectParagraph (line 479) | class SelectParagraph extends TextObject {
    method execAction (line 482) | public async execAction(position: Position, vimState: VimState): Promi...
  class SelectInnerParagraph (line 519) | class SelectInnerParagraph extends TextObject {
    method execAction (line 522) | public async execAction(position: Position, vimState: VimState): Promi...
  class SelectEntire (line 564) | class SelectEntire extends TextObject {
    method execAction (line 567) | public async execAction(position: Position, vimState: VimState): Promi...
  class SelectEntireIgnoringLeadingTrailing (line 574) | class SelectEntireIgnoringLeadingTrailing extends TextObject {
    method execAction (line 577) | public async execAction(position: Position, vimState: VimState): Promi...
  method execAction (line 601) | public async execAction(position: Position, vimState: VimState): Promise...
  method execActionForOperator (line 664) | public override async execActionForOperator(
  method findFirstValidLine (line 674) | public static findFirstValidLine(document: TextDocument, cursorPosition:...
  method findRangeStartOrEnd (line 687) | public static findRangeStartOrEnd(
  class InsideIndentObject (line 710) | @RegisterAction
  class InsideIndentObjectAbove (line 716) | @RegisterAction
  class InsideIndentObjectBoth (line 723) | @RegisterAction
  method openingDelimiterCharacters (line 734) | private static openingDelimiterCharacters(): string[] {
  method closingDelimiterCharacters (line 737) | private static closingDelimiterCharacters(): string[] {
  method separatorCharacters (line 740) | private static separatorCharacters(): string[] {
  method execAction (line 771) | public async execAction(position: Position, vimState: VimState): Promise...
  method findLeftArgumentBoundary (line 902) | private static findLeftArgumentBoundary(
  method findRightArgumentBoundary (line 943) | private static findRightArgumentBoundary(
  class SelectInnerArgument (line 986) | class SelectInnerArgument extends SelectArgument {
  class SelectAroundArgument (line 992) | class SelectAroundArgument extends SelectArgument {

FILE: src/textobject/util.ts
  function getAllPositions (line 1) | function getAllPositions(line: string, regex: RegExp): number[] {
  function getAllEndPositions (line 19) | function getAllEndPositions(line: string, regex: RegExp): number[] {

FILE: src/textobject/word.ts
  type WordType (line 6) | enum WordType {
  function regexForWordType (line 18) | function regexForWordType(wordType: WordType): RegExp {
  function getWordLeftInText (line 40) | function getWordLeftInText(
  function getWordRightInText (line 48) | function getWordRightInText(
  function prevWordStart (line 56) | function prevWordStart(
  function getWordLeftOnLine (line 79) | function getWordLeftOnLine(
  function nextWordStart (line 91) | function nextWordStart(
  function nextWordEnd (line 117) | function nextWordEnd(
  function prevWordEnd (line 143) | function prevWordEnd(document: TextDocument, pos: Position, wordType: Wo...
  function makeWordRegex (line 174) | function makeWordRegex(characterSet: string): RegExp {
  function makeCamelCaseWordRegex (line 181) | function makeCamelCaseWordRegex(characterSet: string): RegExp {
  function makeUnicodeWordRegex (line 221) | function makeUnicodeWordRegex(keywordChars: string): RegExp {

FILE: src/transformations/execute.ts
  type IModeHandler (line 30) | interface IModeHandler {
  function executeTransformations (line 41) | async function executeTransformations(

FILE: src/transformations/transformations.ts
  type InsertTextTransformation (line 19) | interface InsertTextTransformation {
  type ReplaceTextTransformation (line 52) | interface ReplaceTextTransformation {
  type InsertTextVSCodeTransformation (line 89) | interface InsertTextVSCodeTransformation {
  type DeleteTextRangeTransformation (line 119) | interface DeleteTextRangeTransformation {
  type MoveCursorTransformation (line 146) | interface MoveCursorTransformation {
  type Dot (line 160) | interface Dot {
  type VSCodeCommandTransformation (line 166) | interface VSCodeCommandTransformation {
  type Macro (line 175) | interface Macro {
  type ContentChangeTransformation (line 184) | interface ContentChangeTransformation {
  type ExecuteNormalTransformation (line 190) | interface ExecuteNormalTransformation {
  type Transformation (line 196) | type Transformation =
  type TextTransformations (line 222) | type TextTransformations =
  function overlappingTransformations (line 261) | function overlappingTransformations(
  function stringify (line 297) | function stringify(transformation: Transformation): string {

FILE: src/transformations/transformer.ts
  class Transformer (line 12) | class Transformer {
    method addTransformation (line 15) | public addTransformation(transformation: Transformation): void {
    method insert (line 20) | public insert(position: Position, text: string, diff?: PositionDiff): ...
    method delete (line 24) | public delete(range: Range, diff?: PositionDiff): void {
    method replace (line 28) | public replace(range: Range, text: string, diff?: PositionDiff): void {
    method moveCursor (line 32) | public moveCursor(diff: PositionDiff, cursorIndex?: number): void {
    method vscodeCommand (line 36) | public vscodeCommand(command: string, ...args: any[]): void {

FILE: src/util/child_process.ts
  function exec (line 4) | function exec(

FILE: src/util/clipboard.ts
  class Clipboard (line 7) | class Clipboard {
    method Copy (line 8) | public static async Copy(text: string): Promise<void> {
    method Paste (line 16) | public static async Paste(): Promise<string> {

FILE: src/util/decorationUtils.ts
  type EditorDecorationArray (line 6) | type EditorDecorationArray = Range[] | DecorationOptions[];
  type SearchDecorations (line 11) | type SearchDecorations = {
  function ensureVisible (line 26) | function ensureVisible(range: Range, document: TextDocument): Decoration...
  function formatDecorationText (line 46) | function formatDecorationText(
  function getDecorationsForSearchMatchRanges (line 63) | function getDecorationsForSearchMatchRanges(

FILE: src/util/externalCommand.ts
  class ExternalCommand (line 4) | class ExternalCommand {
    method expandCommand (line 16) | private expandCommand(command: string): string {
    method execute (line 43) | private async execute(command: string, stdin: string): Promise<string> {
    method run (line 87) | public async run(command: string, stdin: string = ''): Promise<string> {

FILE: src/util/logger.ts
  class Logger (line 3) | class Logger {
    method init (line 6) | public static init(): void {
    method error (line 10) | public static error(msg: string): void {
    method warn (line 13) | public static warn(msg: string): void {
    method info (line 16) | public static info(msg: string): void {
    method debug (line 19) | public static debug(msg: string): void {
    method trace (line 22) | public static trace(msg: string): void {

FILE: src/util/os.ts
  function tmpdir (line 3) | function tmpdir(): string {

FILE: src/util/path.ts
  type Path (line 10) | interface Path {
  function separatePath (line 30) | function separatePath(searchPath: string, sep: string) {
  type PathDetails (line 54) | interface PathDetails {
  function getPathDetails (line 111) | function getPathDetails(
  function resolveUri (line 180) | function resolveUri(
  function readDirectory (line 221) | async function readDirectory(
  function join (line 246) | function join(...paths: string[]): string {

FILE: src/util/selections.ts
  function hashSelectionsArray (line 7) | function hashSelectionsArray(selections: readonly vscode.Selection[]): s...
  function hashSelection (line 14) | function hashSelection(selection: vscode.Selection): string {
  function areSelectionArraysEqual (line 23) | function areSelectionArraysEqual(
  function areSelectionsEqual (line 40) | function areSelectionsEqual(selectionA: vscode.Selection, selectionB: vs...

FILE: src/util/specialKeys.ts
  type SpecialKeys (line 1) | enum SpecialKeys {

FILE: src/util/statusBarTextUtils.ts
  function escapeCSSIcons (line 11) | function escapeCSSIcons(text: string): string {
  function reportLinesChanged (line 22) | function reportLinesChanged(numLinesChanged: number, vimState: VimState) {
  function reportLinesYanked (line 36) | function reportLinesYanked(numLinesYanked: number, vimState: VimState) {
  function reportFileInfo (line 52) | function reportFileInfo(position: Position, vimState: VimState) {
  function reportSearch (line 77) | function reportSearch(matchIdx: number, numMatches: number, vimState: Vi...

FILE: src/util/util.ts
  function getCursorsAfterSync (line 14) | function getCursorsAfterSync(editor: vscode.TextEditor): Cursor[] {
  function clamp (line 18) | function clamp(num: number, min: number, max: number) {
  function scrollView (line 22) | function scrollView(vimState: VimState, offset: number) {
  function assertDefined (line 37) | function assertDefined<X>(x: X | undefined, err: string): asserts x {
  function isHighSurrogate (line 43) | function isHighSurrogate(charCode: number): boolean {
  function isLowSurrogate (line 47) | function isLowSurrogate(charCode: number): boolean {
  function findTabInActiveTabGroup (line 51) | function findTabInActiveTabGroup(name: string): [number, vscode.Tab] {

FILE: src/util/vscodeContext.ts
  type ContextValue (line 4) | type ContextValue = boolean | string;
  method set (line 14) | public static async set(key: string, value: ContextValue): Promise<void> {
  method get (line 23) | public static get(key: string): ContextValue | undefined {

FILE: src/vimscript/exCommand.ts
  method neovimCapable (line 9) | public neovimCapable(): boolean {
  method executeWithRange (line 17) | async executeWithRange(vimState: VimState, range: LineRange): Promise<vo...

FILE: src/vimscript/exCommandParser.ts
  type ArgParser (line 59) | type ArgParser = Parser<ExCommand>;
  class UnimplementedCommand (line 624) | class UnimplementedCommand extends ExCommand {
    method neovimCapable (line 627) | public override neovimCapable(): boolean {
    method constructor (line 632) | constructor(name: string) {
    method execute (line 637) | async execute(vimState: VimState): Promise<void> {
    method executeWithRange (line 645) | override async executeWithRange(vimState: VimState, range: LineRange):...
  class NoOpCommand (line 650) | class NoOpCommand extends ExCommand {
    method execute (line 651) | async execute(vimState: VimState): Promise<void> {
  function nameParser (line 656) | function nameParser(

FILE: src/vimscript/expression/build.ts
  class UniqueIdGenerator (line 28) | class UniqueIdGenerator {
    method constructor (line 32) | constructor(prefix: string) {
    method next (line 36) | public next(): string {
  function int (line 46) | function int(value: number): NumberValue {
  function float (line 53) | function float(value: number): FloatValue {
  function bool (line 60) | function bool(value: boolean): NumberValue {
  function str (line 64) | function str(value: string): StringValue {
  function list (line 71) | function list(items: Value[]): ListValue {
  function dictionary (line 79) | function dictionary(items: Map<string, Value>): DictionaryValue {
  function funcref (line 87) | function funcref(args: {
  function blob (line 100) | function blob(data: Uint8Array<ArrayBuffer>): BlobValue {
  function toExpr (line 116) | function toExpr(value: Value): Expression {
  function listExpr (line 144) | function listExpr(items: Expression[]): ListExpression {
  function variable (line 151) | function variable(name: string, namespace?: Namespace): VariableExpressi...
  function lambda (line 159) | function lambda(args: string[], body: Expression): LambdaExpression {
  function negative (line 167) | function negative(operand: Expression): UnaryExpression {
  function positive (line 175) | function positive(operand: Expression): UnaryExpression {
  function binary (line 183) | function binary(lhs: Expression, operator: BinaryOp, rhs: Expression): B...
  function add (line 192) | function add(lhs: Expression, rhs: Expression): BinaryExpression {
  function subtract (line 196) | function subtract(lhs: Expression, rhs: Expression): BinaryExpression {
  function multiply (line 200) | function multiply(lhs: Expression, rhs: Expression): BinaryExpression {
  function divide (line 204) | function divide(lhs: Expression, rhs: Expression): BinaryExpression {
  function modulo (line 208) | function modulo(lhs: Expression, rhs: Expression): BinaryExpression {
  function concat (line 212) | function concat(lhs: Expression, rhs: Expression): BinaryExpression {
  function funcCall (line 216) | function funcCall(func: string, args: Expression[]): FunctionCallExpress...
  function funcrefCall (line 224) | function funcrefCall(expression: Expression, args: Expression[]): Funcre...

FILE: src/vimscript/expression/displayValue.ts
  function displayValue (line 3) | function displayValue(value: Value): string {
  function _displayValue (line 7) | function _displayValue(value: Value, topLevel = false): string {

FILE: src/vimscript/expression/evaluate.ts
  function toInt (line 46) | function toInt(value: Value): number {
  function toFloat (line 69) | function toFloat(value: Value): number {
  function toString (line 84) | function toString(value: Value): string {
  function toList (line 103) | function toList(value: Value): ListValue {
  function toDict (line 117) | function toDict(value: Value): DictionaryValue {
  function mapNumber (line 131) | function mapNumber(value: Value, f: (x: number) => number): NumberValue ...
  class Variable (line 140) | class Variable {
    method constructor (line 144) | constructor(value: Value, locked: boolean = false) {
  type VariableStore (line 150) | type VariableStore = Map<string, Variable>;
  class EvaluationContext (line 152) | class EvaluationContext {
    method constructor (line 159) | constructor(vimState: VimState | undefined) {
    method evaluate (line 167) | public evaluate(expression: Expression): Value {
    method setVariable (line 301) | public setVariable(varExpr: VariableExpression, value: Value, lock: bo...
    method evaluateVariable (line 324) | private evaluateVariable(varExpr: VariableExpression): Value {
    method getVariableStore (line 392) | public getVariableStore(namespace: string | undefined): VariableStore ...
    method evaluateIndex (line 402) | private evaluateIndex(sequence: Value, index: Value): Value {
    method evaluateSlice (line 436) | private evaluateSlice(sequence: Value, start: Value, end: Value): Value {
    method evaluateUnary (line 479) | private evaluateUnary(operator: UnaryOp, operand: Expression): NumberV...
    method evaluateBinary (line 494) | private evaluateBinary(operator: BinaryOp, lhsExpr: Expression, rhsExp...
    method evaluateComparison (line 542) | private evaluateComparison(
    method evaluateBasicComparison (line 575) | private evaluateBasicComparison(
    method evaluateFunctionCall (line 695) | private evaluateFunctionCall(call: FunctionCallExpression): Value {

FILE: src/vimscript/expression/parser.ts
  function leftAssociative (line 439) | function leftAssociative(args: [Expression, Array<[BinaryOp, Expression]...

FILE: src/vimscript/expression/types.ts
  type NumberValue (line 3) | type NumberValue = {
  type FloatValue (line 8) | type FloatValue = {
  type StringValue (line 13) | type StringValue = {
  type ListValue (line 18) | type ListValue = {
  type DictionaryValue (line 24) | type DictionaryValue = {
  type FuncRefValue (line 30) | type FuncRefValue = {
  type BlobValue (line 39) | type BlobValue = {
  type Value (line 45) | type Value =
  type NumberExpression (line 56) | type NumberExpression = NumberValue;
  type FloatExpression (line 57) | type FloatExpression = FloatValue;
  type StringExpression (line 58) | type StringExpression = StringValue;
  type ListExpression (line 60) | type ListExpression = {
  type DictionaryExpression (line 65) | type DictionaryExpression = {
  type FuncRefExpression (line 70) | type FuncRefExpression = {
  type BlobExpression (line 78) | type BlobExpression = {
  type OptionExpression (line 83) | type OptionExpression = {
  type Namespace (line 89) | type Namespace = 'b' | 'w' | 't' | 'g' | 'l' | 's' | 'a' | 'v';
  type VariableExpression (line 90) | type VariableExpression = {
  type EnvVariableExpression (line 96) | type EnvVariableExpression = {
  type RegisterExpression (line 101) | type RegisterExpression = {
  type FunctionCallExpression (line 106) | type FunctionCallExpression = {
  type LambdaExpression (line 112) | type LambdaExpression = {
  type IndexExpression (line 118) | type IndexExpression = {
  type SliceExpression (line 124) | type SliceExpression = {
  type EntryExpression (line 131) | type EntryExpression = {
  type FuncrefCallExpression (line 137) | type FuncrefCallExpression = {
  type MethodCallExpression (line 143) | type MethodCallExpression = {
  type UnaryOp (line 150) | type UnaryOp = '!' | '-' | '+';
  type UnaryExpression (line 151) | type UnaryExpression = {
  type ComparisonOp (line 157) | type ComparisonOp = '==' | '!=' | '>' | '>=' | '<' | '<=' | '=~' | '!~' ...
  type ComparisonExpression (line 158) | type ComparisonExpression = {
  type BinaryOp (line 166) | type BinaryOp = '*' | '/' | '%' | '.' | '..' | '-' | '+' | '&&' | '||';
  type BinaryExpression (line 167) | type BinaryExpression = {
  type TernaryExpression (line 174) | type TernaryExpression = {
  type Expression (line 181) | type Expression =

FILE: src/vimscript/lineRange.ts
  type LineSpecifier (line 15) | type LineSpecifier =
  class Address (line 110) | class Address {
    method constructor (line 114) | constructor(specifier: LineSpecifier, offset?: number) {
    method resolve (line 126) | public resolve(vimState: VimState, side: 'left' | 'right', boundsCheck...
    method toString (line 230) | public toString(): string {
  class LineRange (line 261) | class LineRange {
    method constructor (line 266) | constructor(start: Address, separator?: ',' | ';', end?: Address) {
    method resolve (line 297) | public resolve(vimState: VimState): { start: number; end: number } {
    method resolveToRange (line 333) | public resolveToRange(vimState: VimState): Range {
    method toString (line 338) | public toString(): string {

FILE: src/vimscript/parserUtils.ts
  function nameAbbrevParser (line 14) | function nameAbbrevParser(abbrev: string, rest: string): Parser<string> {
  type FileOpt (line 48) | type FileOpt = Array<[string, string | undefined]>;
  type FileCmd (line 70) | type FileCmd =

FILE: src/vimscript/pattern.ts
  function searchStringParser (line 10) | function searchStringParser(args: {
  type SearchDirection (line 25) | enum SearchDirection {
  type PatternMatch (line 30) | type PatternMatch = { range: Range; groups: string[] };
  class Pattern (line 39) | class Pattern {
    method nextMatch (line 53) | public nextMatch(document: TextDocument, fromPosition: Position): Rang...
    method allMatches (line 71) | public allMatches(
    method compileRegex (line 181) | private static compileRegex(regexString: string, ignoreCase?: boolean)...
    method parser (line 191) | public static parser(args: {
    method getIgnoreCase (line 319) | private static getIgnoreCase(
    method constructor (line 331) | private constructor(
  type SearchOffsetData (line 349) | type SearchOffsetData =
  class SearchOffset (line 374) | class SearchOffset {
    method constructor (line 415) | public constructor(data: SearchOffsetData) {
    method apply (line 419) | public apply(match: Range): Position {

FILE: test/actions/baseAction.test.ts
  class TestAction1D (line 9) | class TestAction1D extends BaseAction {
  class TestAction2D (line 15) | class TestAction2D extends BaseAction {

FILE: test/actions/languages/python/motion.test.ts
  function fakeTextDocument (line 50) | function fakeTextDocument(lines: string[]): TextDocument {
  type Find (line 222) | type Find = (position: Position) => Position | undefined;
  function fakePythonDocument (line 228) | function fakePythonDocument(lines: string[]): PythonDocument {

FILE: test/actions/markMovement.test.ts
  class Location (line 10) | class Location {
    method document (line 14) | public get document(): TextDocument | null {
    method constructor (line 18) | public constructor(line: number, column: number, getDocument?: () => T...
  type IMarkTestCase (line 24) | interface IMarkTestCase {

FILE: test/cmd_line/breakpoints.test.ts
  function clearBreakpoints (line 10) | function clearBreakpoints() {

FILE: test/cmd_line/grep.test.ts
  function grep (line 10) | function grep(pattern: Pattern, files: string[]): GrepCommand {

FILE: test/cmd_line/substitute.test.ts
  function sub (line 5) | function sub(

FILE: test/configuration/remapper.test.ts
  class TestRemapper (line 75) | class TestRemapper extends Remapper {
    method constructor (line 76) | constructor() {
    method findMatchingRemap (line 80) | public override findMatchingRemap(
    method getRemappedKeySequenceLengthRange (line 87) | public getRemappedKeySequenceLengthRange(

FILE: test/historyTracker.test.ts
  class TextEditorStub (line 170) | class TextEditorStub implements vscode.TextEditor {
    method constructor (line 178) | constructor() {
    method edit (line 181) | async edit(
    method insertSnippet (line 187) | async insertSnippet(
    method setDecorations (line 194) | setDecorations(
    method revealRange (line 200) | revealRange(range: vscode.Range, revealType?: vscode.TextEditorRevealT...
    method show (line 203) | show(column?: vscode.ViewColumn) {
    method hide (line 206) | hide() {

FILE: test/index.ts
  function run (line 22) | function run(): Promise<void> {

FILE: test/plugins/easymotion.test.ts
  function easymotionCommand (line 8) | function easymotionCommand(trigger: EasymotionTrigger, searchWord: strin...

FILE: test/runTest.ts
  function main (line 5) | async function main() {

FILE: test/testConfiguration.ts
  class Configuration (line 11) | class Configuration implements IConfiguration {
    method constructor (line 12) | constructor(overrides: Partial<IConfiguration> = {}) {

FILE: test/testSimplifier.ts
  function newTestGeneric (line 21) | function newTestGeneric<T extends ITestObject | ITestWithRemapsObject>(
  type ITestObject (line 74) | interface ITestObject {
  type Step (line 94) | type Step = {
  type ITestWithRemapsObject (line 105) | interface ITestWithRemapsObject {
  class DocState (line 124) | class DocState {
    method parse (line 125) | public static parse(lines: string[]): DocState {
    method constructor (line 145) | constructor(cursors: Position[], lines: string[]) {
  function tokenizeKeySequence (line 157) | function tokenizeKeySequence(sequence: string): string[] {
  function applyDocState (line 205) | async function applyDocState(editor: vscode.TextEditor, docState: DocSta...
  function assertDocState (line 215) | function assertDocState(vimState: VimState, docState: DocState): void {
  function testIt (line 236) | async function testIt(testObj: ITestObject): Promise<ModeHandler> {
  function testItWithRemaps (line 334) | async function testItWithRemaps(testObj: ITestWithRemapsObject): Promise...
  function parseVimRCMappings (line 527) | async function parseVimRCMappings(lines: string[]): Promise<void> {

FILE: test/testUtils.ts
  class TestMemento (line 17) | class TestMemento implements vscode.Memento {
    method get (line 21) | get(key: any, defaultValue?: any) {
    method setKeysForSync (line 26) | setKeysForSync(keys: string[]): void {
    method update (line 30) | async update(key: string, value: any): Promise<void> {
    method keys (line 34) | keys(): readonly string[] {
  class TestExtensionContext (line 39) | class TestExtensionContext implements vscode.ExtensionContext {
    method asAbsolutePath (line 51) | asAbsolutePath(relativePath: string): string {
  function rndName (line 64) | function rndName(): string {
  function createFile (line 71) | async function createFile(
  function createDir (line 86) | async function createDir(fsPath?: string): Promise<string> {
  function waitForEditorsToClose (line 98) | async function waitForEditorsToClose(numExpectedEditors: number = 0): Pr...
  function assertEqualLines (line 120) | function assertEqualLines(expectedLines: string[]) {
  function assertStatusBarEqual (line 128) | function assertStatusBarEqual(
  function setupWorkspace (line 135) | async function setupWorkspace(
  function cleanUpWorkspace (line 186) | async function cleanUpWorkspace(): Promise<void> {
  function reloadConfiguration (line 192) | async function reloadConfiguration(config: IConfiguration) {
  function waitForTabChange (line 209) | async function waitForTabChange(): Promise<void> {
  function replaceContent (line 221) | async function replaceContent(

FILE: test/vimscript/exCommandParse.test.ts
  function exParseTest (line 48) | function exParseTest(input: string, parsed: ExCommand) {
  function exParseFails (line 55) | function exParseFails(input: string, error: VimError) {

FILE: test/vimscript/expression.test.ts
  function removeIds (line 25) | function removeIds(value: Value): unknown {
  function exprTest (line 46) | function exprTest(

FILE: test/vimscript/lineRangeParse.test.ts
  function parseTest (line 5) | function parseTest(name: string, input: string, output: LineRange) {

FILE: test/vimscript/lineRangeResolve.test.ts
  function resolveTest (line 6) | function resolveTest(input: ITestObject & { lineRanges: Record<string, [...

FILE: test/vimscript/searchOffset.test.ts
  function parseTest (line 4) | function parseTest(name: string, input: string, output: SearchOffset) {
Condensed preview — 311 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,639K chars).
[
  {
    "path": ".eslintrc.js",
    "chars": 6332,
    "preview": "module.exports = {\n  env: {\n    es6: true,\n    node: true,\n  },\n  extends: [\n    'plugin:@typescript-eslint/recommended'"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "chars": 6163,
    "preview": "# Contribution Guide\n\nThis document offers a set of guidelines for contributing to VSCodeVim.\nThese are just guidelines,"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 19,
    "preview": "github: [J-Fields]\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 903,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\n---\n\n**Describe the bug**\nA clear and concise description"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 559,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for this project\n---\n\n**Is your feature request related to a problem? P"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 481,
    "preview": "<!--\nYay! Thanks for sending us a PR! 🎊\n\nPlease ensure your PR adheres to:\n\n- [ ] Commit messages has a short & issue re"
  },
  {
    "path": ".github/copilot-instructions.md",
    "chars": 3473,
    "preview": "# Copilot Instructions for VSCodeVim\n\n## Project Overview\n\n- **VSCodeVim** is a complex VS Code extension that emulates "
  },
  {
    "path": ".github/workflows/build.yml",
    "chars": 983,
    "preview": "name: build\n\non:\n  push:\n    branches:\n      - 'master'\n\njobs:\n  build:\n    strategy:\n      matrix:\n        os: [ubuntu-"
  },
  {
    "path": ".github/workflows/pull_request.yml",
    "chars": 694,
    "preview": "name: Pull Request\n\non:\n  pull_request:\n    branches:\n      - '**'\n\njobs:\n  build:\n    strategy:\n      matrix:\n        o"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 1809,
    "preview": "name: Release\n\non:\n  push:\n    tags:\n      - v1.[0-9]+.[0-9]+\n\njobs:\n  release:\n    runs-on: ubuntu-latest\n    steps:\n  "
  },
  {
    "path": ".gitignore",
    "chars": 110,
    "preview": "out\ntesting\nnode_modules\n*.sw?\n.vscode-test\n.DS_Store\n*.vsix\n*.log\n.cache\n\ntypings/*\n!typings/custom/\ntesting\n"
  },
  {
    "path": ".husky/.gitignore",
    "chars": 2,
    "preview": "_\n"
  },
  {
    "path": ".husky/pre-commit",
    "chars": 16,
    "preview": "npx lint-staged\n"
  },
  {
    "path": ".prettierignore",
    "chars": 17,
    "preview": ".vscode-test\r\nout"
  },
  {
    "path": ".prettierrc",
    "chars": 98,
    "preview": "{\n  \"printWidth\": 100,\n  \"singleQuote\": true,\n  \"plugins\": [\"prettier-plugin-organize-imports\"]\n}\n"
  },
  {
    "path": ".vscode/extensions.json",
    "chars": 477,
    "preview": "{\n  // See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations.\n  // Extension ident"
  },
  {
    "path": ".vscode/launch.json",
    "chars": 1707,
    "preview": "// A launch configuration that compiles the extension and then opens it inside a new window\n{\n  \"version\": \"0.2.0\",\n  \"c"
  },
  {
    "path": ".vscode/settings.json",
    "chars": 456,
    "preview": "{\n  \"files.trimTrailingWhitespace\": true,\n  \"files.exclude\": {\n    \"out\": false // set this to true to hide the \"out\" fo"
  },
  {
    "path": ".vscode/tasks.json",
    "chars": 692,
    "preview": "// Available variables which can be used inside of strings.\n// ${workspaceRoot}: the root folder of the team\n// ${file}:"
  },
  {
    "path": ".vscodeignore",
    "chars": 256,
    "preview": ".github/**\n.husky/**\n.yarn/**\n.vscode/**\n.vscode-test/**\n\n**/*.ts\n*.yml\n\nsrc/**\nbuild/**\ntest/**\ntypings/**\nout/src/**\no"
  },
  {
    "path": ".yarnrc",
    "chars": 19,
    "preview": "ignore-engines true"
  },
  {
    "path": "CHANGELOG.OLD.md",
    "chars": 257184,
    "preview": "# Change Log\n\n## **_NOTE: For versions 1.23.0 and newer, include the lastest changes; please see [CHANGELOG.md](CHANGELO"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 19917,
    "preview": "# Change Log\n\n## [v1.32.4](https://github.com/vscodevim/vim/tree/v1.32.4) (2025-12-14)\n\n### Fixed\n\n- Improved undo behav"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 714,
    "preview": "# Code of Conduct\n\n## Our Standards\n\nBe nice. Please. Everybody contributing to open source contributes out of good will"
  },
  {
    "path": "LICENSE",
    "chars": 1077,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2015 VSCodeVim\n\nPermission is hereby granted, free of charge, to any person obtaini"
  },
  {
    "path": "README.md",
    "chars": 61027,
    "preview": "<h2 align=\"center\"><img src=\"https://raw.githubusercontent.com/VSCodeVim/Vim/master/images/icon.png\" height=\"128\"><br>VS"
  },
  {
    "path": "SECURITY.md",
    "chars": 289,
    "preview": "# Security Policy\n\n## Reporting a Vulnerability\n\nPlease _do not_ open an issue for a security vulnerability.\n\nInstead, p"
  },
  {
    "path": "build/Dockerfile",
    "chars": 321,
    "preview": "FROM node:22\n\nARG DEBIAN_FRONTEND=noninteractive\n\nRUN apt-get update && \\\n    apt-get install -y xorg xvfb libxss-dev li"
  },
  {
    "path": "extension.ts",
    "chars": 1928,
    "preview": "/**\n * Extension.ts is a lightweight wrapper around ModeHandler. It converts key\n * events to their string names and pas"
  },
  {
    "path": "extensionBase.ts",
    "chars": 19846,
    "preview": "import * as vscode from 'vscode';\n\nimport { ExCommandLine, SearchCommandLine } from './src/cmd_line/commandLine';\nimport"
  },
  {
    "path": "extensionWeb.ts",
    "chars": 627,
    "preview": "/**\n * Extension.ts is a lightweight wrapper around ModeHandler. It converts key\n * events to their string names and pas"
  },
  {
    "path": "gulpfile.js",
    "chars": 4008,
    "preview": "const gulp = require('gulp');\nconst bump = require('gulp-bump');\nconst tag_version = require('gulp-tag-version');\nconst "
  },
  {
    "path": "language-configuration.json",
    "chars": 48,
    "preview": "{\n  \"comments\": {\n    \"lineComment\": \"\\\"\"\n  }\n}\n"
  },
  {
    "path": "package.json",
    "chars": 46175,
    "preview": "{\n  \"name\": \"vim\",\n  \"displayName\": \"Vim\",\n  \"description\": \"Vim emulation for Visual Studio Code\",\n  \"icon\": \"images/ic"
  },
  {
    "path": "renovate.json",
    "chars": 217,
    "preview": "{\n  \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n  \"extends\": [\"config:base\", \"default:pinDigestsDisa"
  },
  {
    "path": "src/actions/base.ts",
    "chars": 8928,
    "preview": "import { Position } from 'vscode';\nimport { Cursor } from '../common/motion/cursor';\nimport { isLiteralMode, unmapLitera"
  },
  {
    "path": "src/actions/baseMotion.ts",
    "chars": 4476,
    "preview": "import { Position } from 'vscode';\nimport { Mode } from '../mode/mode';\nimport { VimState } from '../state/vimState';\nim"
  },
  {
    "path": "src/actions/commands/actions.ts",
    "chars": 37152,
    "preview": "import * as vscode from 'vscode';\n\nimport { Position } from 'vscode';\nimport { Cursor } from '../../common/motion/cursor"
  },
  {
    "path": "src/actions/commands/commandLine.ts",
    "chars": 14185,
    "preview": "import * as vscode from 'vscode';\n\nimport { CommandLine, ExCommandLine, SearchCommandLine } from '../../cmd_line/command"
  },
  {
    "path": "src/actions/commands/digraphs.ts",
    "chars": 31341,
    "preview": "// prettier-ignore\nexport const DefaultDigraphs = new Map<string, [string, number | number[]]>([\n  [\"NU\", [\"^@\", 10]],\n "
  },
  {
    "path": "src/actions/commands/documentChange.ts",
    "chars": 5696,
    "preview": "import * as vscode from 'vscode';\nimport { Position } from 'vscode';\nimport { PositionDiff, laterOf } from '../../common"
  },
  {
    "path": "src/actions/commands/file.ts",
    "chars": 3865,
    "preview": "import path from 'path';\nimport { doesFileExist } from 'platform/fs';\nimport { Position, Range, Uri, window, workspace }"
  },
  {
    "path": "src/actions/commands/fold.ts",
    "chars": 3457,
    "preview": "import * as vscode from 'vscode';\nimport { Position } from 'vscode';\nimport { Cursor } from '../../common/motion/cursor'"
  },
  {
    "path": "src/actions/commands/incrementDecrement.ts",
    "chars": 6483,
    "preview": "import { Position, Range } from 'vscode';\nimport { Cursor } from '../../common/motion/cursor';\nimport { PositionDiff, so"
  },
  {
    "path": "src/actions/commands/insert.ts",
    "chars": 25026,
    "preview": "import * as vscode from 'vscode';\n\nimport { Position, Range } from 'vscode';\nimport { Cursor } from '../../common/motion"
  },
  {
    "path": "src/actions/commands/join.ts",
    "chars": 7806,
    "preview": "import { Position, Range } from 'vscode';\nimport { Cursor } from '../../common/motion/cursor';\nimport { PositionDiff, so"
  },
  {
    "path": "src/actions/commands/macro.ts",
    "chars": 4189,
    "preview": "import { Position } from 'vscode';\nimport { VimError } from '../../error';\nimport { Mode } from '../../mode/mode';\nimpor"
  },
  {
    "path": "src/actions/commands/navigate.ts",
    "chars": 3298,
    "preview": "import * as vscode from 'vscode';\n\nimport { Position } from 'vscode';\nimport { VimError } from '../../error';\nimport { M"
  },
  {
    "path": "src/actions/commands/put.ts",
    "chars": 21482,
    "preview": "import * as vscode from 'vscode';\nimport { Position, TextDocument } from 'vscode';\nimport { Cursor } from '../../common/"
  },
  {
    "path": "src/actions/commands/replace.ts",
    "chars": 13338,
    "preview": "import { Position, Range } from 'vscode';\nimport { Cursor } from '../../common/motion/cursor';\nimport { PositionDiff, so"
  },
  {
    "path": "src/actions/commands/scroll.ts",
    "chars": 11286,
    "preview": "import { clamp } from 'lodash';\nimport * as vscode from 'vscode';\nimport { Position } from 'vscode';\nimport { configurat"
  },
  {
    "path": "src/actions/commands/search.ts",
    "chars": 10188,
    "preview": "import * as _ from 'lodash';\nimport { escapeRegExp } from 'lodash';\nimport { Position, Selection } from 'vscode';\nimport"
  },
  {
    "path": "src/actions/commands/undo.ts",
    "chars": 1204,
    "preview": "import { Position } from 'vscode';\nimport { Mode } from '../../mode/mode';\nimport { VimState } from '../../state/vimStat"
  },
  {
    "path": "src/actions/commands/visual.ts",
    "chars": 3098,
    "preview": "import { Position } from 'vscode';\nimport { Mode } from '../../mode/mode';\nimport { VimState } from '../../state/vimStat"
  },
  {
    "path": "src/actions/commands/window.ts",
    "chars": 8703,
    "preview": "import { Position } from 'vscode';\nimport { OnlyCommand } from '../../cmd_line/commands/only';\nimport { QuitCommand } fr"
  },
  {
    "path": "src/actions/include-main.ts",
    "chars": 628,
    "preview": "import '../textobject/textobject';\nimport './base';\nimport './motion';\nimport './operator';\n\n// commands\nimport './comma"
  },
  {
    "path": "src/actions/include-plugins.ts",
    "chars": 274,
    "preview": "// plugin\nimport './plugins/camelCaseMotion';\nimport './plugins/easymotion/easymotion.cmd';\nimport './plugins/easymotion"
  },
  {
    "path": "src/actions/languages/python/motion.ts",
    "chars": 7696,
    "preview": "import { Position, TextDocument } from 'vscode';\nimport { VimState } from '../../../state/vimState';\nimport { RegisterAc"
  },
  {
    "path": "src/actions/motion.ts",
    "chars": 74796,
    "preview": "import * as vscode from 'vscode';\n\nimport { Position } from 'vscode';\nimport { sorted } from '../common/motion/position'"
  },
  {
    "path": "src/actions/operator.ts",
    "chars": 38488,
    "preview": "import * as vscode from 'vscode';\n\nimport { Position } from 'vscode';\nimport { reportLinesChanged, reportLinesYanked } f"
  },
  {
    "path": "src/actions/plugins/camelCaseMotion.ts",
    "chars": 4640,
    "preview": "import { Position } from 'vscode';\nimport { configuration } from '../../configuration/configuration';\nimport { Mode } fr"
  },
  {
    "path": "src/actions/plugins/easymotion/easymotion.cmd.ts",
    "chars": 11572,
    "preview": "import { Position } from 'vscode';\nimport { globalState } from '../../../state/globalState';\nimport { VimState } from '."
  },
  {
    "path": "src/actions/plugins/easymotion/easymotion.ts",
    "chars": 14759,
    "preview": "import * as vscode from 'vscode';\n\nimport { Position } from 'vscode';\nimport { Mode } from '../../../mode/mode';\nimport "
  },
  {
    "path": "src/actions/plugins/easymotion/markerGenerator.ts",
    "chars": 1826,
    "preview": "import { Position } from 'vscode';\nimport { configuration } from './../../../configuration/configuration';\nimport { Mark"
  },
  {
    "path": "src/actions/plugins/easymotion/registerMoveActions.ts",
    "chars": 6230,
    "preview": "import { RegisterAction } from './../../base';\nimport {\n  buildTriggerKeys,\n  EasyMotionCharMoveCommandBase,\n  EasyMotio"
  },
  {
    "path": "src/actions/plugins/easymotion/types.ts",
    "chars": 2146,
    "preview": "import * as vscode from 'vscode';\nimport { Position } from 'vscode';\nimport { Mode } from '../../../mode/mode';\nimport t"
  },
  {
    "path": "src/actions/plugins/imswitcher.ts",
    "chars": 2763,
    "preview": "import { exec } from 'child_process';\nimport { configuration } from '../../configuration/configuration';\nimport { Mode }"
  },
  {
    "path": "src/actions/plugins/pluginDefaultMappings.ts",
    "chars": 1188,
    "preview": "import { IConfiguration, IKeyRemapping } from '../../configuration/iconfiguration';\n\nexport class PluginDefaultMappings "
  },
  {
    "path": "src/actions/plugins/replaceWithRegister.ts",
    "chars": 2763,
    "preview": "import { Position, Range } from 'vscode';\nimport { PositionDiff } from '../../common/motion/position';\nimport { configur"
  },
  {
    "path": "src/actions/plugins/sneak.ts",
    "chars": 4155,
    "preview": "import { Position } from 'vscode';\nimport { VimState } from '../../state/vimState';\nimport { BaseMovement, IMovement } f"
  },
  {
    "path": "src/actions/plugins/surround.ts",
    "chars": 23483,
    "preview": "import { Position, Range, window } from 'vscode';\nimport { VimState } from '../../state/vimState';\nimport {\n  SelectABig"
  },
  {
    "path": "src/actions/plugins/targets/lastNextObjectHelper.ts",
    "chars": 4603,
    "preview": "import { Position } from 'vscode';\nimport { isVisualMode } from '../../../mode/mode';\nimport { VimState } from '../../.."
  },
  {
    "path": "src/actions/plugins/targets/lastNextObjects.ts",
    "chars": 2548,
    "preview": "import { RegisterAction } from '../../base';\nimport {\n  MoveAroundCaret,\n  MoveAroundCurlyBrace,\n  MoveAroundParentheses"
  },
  {
    "path": "src/actions/plugins/targets/searchUtils.ts",
    "chars": 2917,
    "preview": "import { Position, TextDocument } from 'vscode';\n\nexport interface SearchFlags {\n  direction?: '<' | '>';\n  includeCurso"
  },
  {
    "path": "src/actions/plugins/targets/smartQuotes.ts",
    "chars": 4328,
    "preview": "import { Mode } from '../../../mode/mode';\nimport { RegisterAction } from '../../base';\nimport { MoveQuoteMatch } from '"
  },
  {
    "path": "src/actions/plugins/targets/smartQuotesMatcher.ts",
    "chars": 11095,
    "preview": "import { Position, TextDocument } from 'vscode';\nimport { configuration } from '../../../configuration/configuration';\n\n"
  },
  {
    "path": "src/actions/plugins/targets/targets.ts",
    "chars": 75,
    "preview": "// targets sub-plugins\nimport './lastNextObjects';\nimport './smartQuotes';\n"
  },
  {
    "path": "src/actions/plugins/targets/targetsConfig.ts",
    "chars": 633,
    "preview": "import { configuration } from '../../../configuration/configuration';\n\nexport function useSmartQuotes(): boolean {\n  ret"
  },
  {
    "path": "src/actions/types.d.ts",
    "chars": 778,
    "preview": "import type { Position } from 'vscode';\nimport type { VimState } from '../state/vimState';\n\nexport type ActionType = 'co"
  },
  {
    "path": "src/actions/wrapping.ts",
    "chars": 859,
    "preview": "import { configuration } from './../configuration/configuration';\nimport { Mode } from './../mode/mode';\n\n/**\n * See htt"
  },
  {
    "path": "src/cmd_line/commandLine.ts",
    "chars": 17743,
    "preview": "import { Parser } from 'parsimmon';\nimport { ExtensionContext, Position, window } from 'vscode';\nimport { configuration "
  },
  {
    "path": "src/cmd_line/commands/ascii.ts",
    "chars": 359,
    "preview": "import { CommandUnicodeName } from '../../actions/commands/actions';\nimport { VimState } from '../../state/vimState';\nim"
  },
  {
    "path": "src/cmd_line/commands/bang.ts",
    "chars": 1788,
    "preview": "import { all, Parser } from 'parsimmon';\nimport { PositionDiff } from '../../common/motion/position';\nimport { VimState "
  },
  {
    "path": "src/cmd_line/commands/breakpoints.ts",
    "chars": 9067,
    "preview": "import {\n  all,\n  alt,\n  eof,\n  optWhitespace,\n  regexp,\n  seqObj,\n  // eslint-disable-next-line id-denylist\n  string,\n "
  },
  {
    "path": "src/cmd_line/commands/bufferDelete.ts",
    "chars": 2410,
    "preview": "import { alt, optWhitespace, Parser, seq, whitespace } from 'parsimmon';\nimport * as vscode from 'vscode';\n\nimport { Vim"
  },
  {
    "path": "src/cmd_line/commands/change.ts",
    "chars": 3306,
    "preview": "import * as vscode from 'vscode';\n// eslint-disable-next-line id-denylist\nimport { Parser, alt, any, optWhitespace, seq,"
  },
  {
    "path": "src/cmd_line/commands/close.ts",
    "chars": 1264,
    "preview": "import { Parser } from 'parsimmon';\nimport * as vscode from 'vscode';\n\nimport { VimError } from '../../error';\nimport { "
  },
  {
    "path": "src/cmd_line/commands/copy.ts",
    "chars": 2278,
    "preview": "import { optWhitespace, Parser } from 'parsimmon';\nimport { Position, Range } from 'vscode';\nimport { PositionDiff } fro"
  },
  {
    "path": "src/cmd_line/commands/delete.ts",
    "chars": 3455,
    "preview": "import * as vscode from 'vscode';\n\n// eslint-disable-next-line id-denylist\nimport { Parser, alt, any, optWhitespace, seq"
  },
  {
    "path": "src/cmd_line/commands/digraph.ts",
    "chars": 2328,
    "preview": "import * as vscode from 'vscode';\n\n// eslint-disable-next-line id-denylist\nimport { any, Parser, seq, whitespace } from "
  },
  {
    "path": "src/cmd_line/commands/echo.ts",
    "chars": 1641,
    "preview": "import { all, optWhitespace, Parser, seq } from 'parsimmon';\nimport { VimError } from '../../error';\nimport { VimState }"
  },
  {
    "path": "src/cmd_line/commands/eval.ts",
    "chars": 1642,
    "preview": "import { all, optWhitespace, Parser, seq } from 'parsimmon';\nimport { VimError } from '../../error';\nimport { VimState }"
  },
  {
    "path": "src/cmd_line/commands/explore.ts",
    "chars": 309,
    "preview": "import { commands } from 'vscode';\nimport { VimState } from '../../state/vimState';\nimport { ExCommand } from '../../vim"
  },
  {
    "path": "src/cmd_line/commands/file.ts",
    "chars": 8595,
    "preview": "import { optWhitespace, seq } from 'parsimmon';\nimport { doesFileExist } from 'platform/fs';\nimport * as vscode from 'vs"
  },
  {
    "path": "src/cmd_line/commands/fileInfo.ts",
    "chars": 836,
    "preview": "import { all, optWhitespace, Parser, seq } from 'parsimmon';\nimport { VimState } from '../../state/vimState';\nimport { r"
  },
  {
    "path": "src/cmd_line/commands/goto.ts",
    "chars": 1076,
    "preview": "import { optWhitespace, Parser } from 'parsimmon';\nimport { VimState } from '../../state/vimState';\nimport { ExCommand }"
  },
  {
    "path": "src/cmd_line/commands/gotoLine.ts",
    "chars": 575,
    "preview": "import { VimState } from '../../state/vimState';\nimport { ExCommand } from '../../vimscript/exCommand';\nimport { LineRan"
  },
  {
    "path": "src/cmd_line/commands/grep.ts",
    "chars": 2477,
    "preview": "import * as vscode from 'vscode';\n\nimport { optWhitespace, Parser, seq, whitespace } from 'parsimmon';\nimport { VimError"
  },
  {
    "path": "src/cmd_line/commands/history.ts",
    "chars": 2390,
    "preview": "// eslint-disable-next-line id-denylist\nimport { Parser, alt, optWhitespace, string } from 'parsimmon';\nimport { ShowCom"
  },
  {
    "path": "src/cmd_line/commands/jumps.ts",
    "chars": 1619,
    "preview": "import { QuickPickItem, Range, window } from 'vscode';\n\nimport { Jump } from '../../jumps/jump';\nimport { globalState } "
  },
  {
    "path": "src/cmd_line/commands/leftRightCenter.ts",
    "chars": 4109,
    "preview": "import { optWhitespace, Parser } from 'parsimmon';\nimport { Range, TextLine } from 'vscode';\nimport { configuration } fr"
  },
  {
    "path": "src/cmd_line/commands/let.ts",
    "chars": 12507,
    "preview": "// eslint-disable-next-line id-denylist\nimport { all, alt, optWhitespace, Parser, sepBy, seq, seqMap, string, whitespace"
  },
  {
    "path": "src/cmd_line/commands/marks.ts",
    "chars": 5164,
    "preview": "import { QuickPickItem, window } from 'vscode';\n\n// eslint-disable-next-line id-denylist\nimport { Parser, alt, noneOf, o"
  },
  {
    "path": "src/cmd_line/commands/move.ts",
    "chars": 3320,
    "preview": "import { optWhitespace, Parser } from 'parsimmon';\nimport { Position, Range } from 'vscode';\nimport { PositionDiff } fro"
  },
  {
    "path": "src/cmd_line/commands/nohl.ts",
    "chars": 425,
    "preview": "import { globalState } from '../../state/globalState';\nimport { VimState } from '../../state/vimState';\nimport { StatusB"
  },
  {
    "path": "src/cmd_line/commands/normal.ts",
    "chars": 1018,
    "preview": "import { Parser, all, whitespace } from 'parsimmon';\nimport { VimState } from '../../state/vimState';\nimport { ExCommand"
  },
  {
    "path": "src/cmd_line/commands/only.ts",
    "chars": 496,
    "preview": "import * as vscode from 'vscode';\nimport { VimState } from '../../state/vimState';\nimport { ExCommand } from '../../vims"
  },
  {
    "path": "src/cmd_line/commands/print.ts",
    "chars": 1605,
    "preview": "import { Parser, succeed } from 'parsimmon';\nimport { VimState } from '../../state/vimState';\nimport { StatusBar } from "
  },
  {
    "path": "src/cmd_line/commands/put.ts",
    "chars": 3889,
    "preview": "import { configuration } from '../../configuration/configuration';\nimport { VimState } from '../../state/vimState';\n\n// "
  },
  {
    "path": "src/cmd_line/commands/pwd.ts",
    "chars": 708,
    "preview": "import * as vscode from 'vscode';\nimport { VimState } from '../../state/vimState';\nimport { StatusBar } from '../../stat"
  },
  {
    "path": "src/cmd_line/commands/quit.ts",
    "chars": 2017,
    "preview": "import { Parser } from 'parsimmon';\nimport * as vscode from 'vscode';\n\nimport { VimError } from '../../error';\nimport { "
  },
  {
    "path": "src/cmd_line/commands/read.ts",
    "chars": 2561,
    "preview": "// eslint-disable-next-line id-denylist\nimport { all, alt, optWhitespace, Parser, seq, string, whitespace } from 'parsim"
  },
  {
    "path": "src/cmd_line/commands/redo.ts",
    "chars": 855,
    "preview": "import { optWhitespace, Parser } from 'parsimmon';\nimport { Position } from 'vscode';\nimport { Redo } from '../../action"
  },
  {
    "path": "src/cmd_line/commands/register.ts",
    "chars": 3260,
    "preview": "import * as vscode from 'vscode';\n\n// eslint-disable-next-line id-denylist\nimport { Parser, any, optWhitespace } from 'p"
  },
  {
    "path": "src/cmd_line/commands/retab.ts",
    "chars": 4502,
    "preview": "import { optWhitespace, Parser, seq } from 'parsimmon';\nimport { Range } from 'vscode';\nimport { configuration } from '."
  },
  {
    "path": "src/cmd_line/commands/set.ts",
    "chars": 8703,
    "preview": "// eslint-disable-next-line id-denylist\nimport { alt, oneOf, Parser, regexp, seq, string, whitespace } from 'parsimmon';"
  },
  {
    "path": "src/cmd_line/commands/sh.ts",
    "chars": 276,
    "preview": "import { window } from 'vscode';\nimport { VimState } from '../../state/vimState';\nimport { ExCommand } from '../../vimsc"
  },
  {
    "path": "src/cmd_line/commands/shift.ts",
    "chars": 2110,
    "preview": "import { Position, Selection } from 'vscode';\n\n// eslint-disable-next-line id-denylist\nimport { optWhitespace, Parser, s"
  },
  {
    "path": "src/cmd_line/commands/smile.ts",
    "chars": 2247,
    "preview": "import * as vscode from 'vscode';\nimport { VimState } from '../../state/vimState';\nimport { TextEditor } from '../../tex"
  },
  {
    "path": "src/cmd_line/commands/sort.ts",
    "chars": 3529,
    "preview": "import { oneOf, optWhitespace, Parser, seq } from 'parsimmon';\nimport * as vscode from 'vscode';\nimport { PositionDiff }"
  },
  {
    "path": "src/cmd_line/commands/substitute.ts",
    "chars": 23748,
    "preview": "import {\n  Parser,\n  alt,\n  // eslint-disable-next-line id-denylist\n  any,\n  noneOf,\n  oneOf,\n  optWhitespace,\n  regexp,"
  },
  {
    "path": "src/cmd_line/commands/tab.ts",
    "chars": 9241,
    "preview": "// eslint-disable-next-line id-denylist\nimport { all, alt, optWhitespace, seq, string, whitespace } from 'parsimmon';\nim"
  },
  {
    "path": "src/cmd_line/commands/terminal.ts",
    "chars": 470,
    "preview": "import { Parser, succeed } from 'parsimmon';\nimport * as vscode from 'vscode';\nimport { VimState } from '../../state/vim"
  },
  {
    "path": "src/cmd_line/commands/undo.ts",
    "chars": 850,
    "preview": "import { optWhitespace, Parser } from 'parsimmon';\nimport { Position } from 'vscode';\nimport { Undo } from '../../action"
  },
  {
    "path": "src/cmd_line/commands/vscode.ts",
    "chars": 718,
    "preview": "import { all, Parser, whitespace } from 'parsimmon';\nimport * as vscode from 'vscode';\nimport { VimError } from '../../e"
  },
  {
    "path": "src/cmd_line/commands/wall.ts",
    "chars": 770,
    "preview": "import { Parser } from 'parsimmon';\nimport * as vscode from 'vscode';\nimport { VimState } from '../../state/vimState';\ni"
  },
  {
    "path": "src/cmd_line/commands/write.ts",
    "chars": 6940,
    "preview": "// eslint-disable-next-line id-denylist\nimport { all, alt, optWhitespace, Parser, seq, string } from 'parsimmon';\nimport"
  },
  {
    "path": "src/cmd_line/commands/writequit.ts",
    "chars": 1334,
    "preview": "import { optWhitespace, Parser, seq } from 'parsimmon';\nimport { VimState } from '../../state/vimState';\nimport { ExComm"
  },
  {
    "path": "src/cmd_line/commands/writequitall.ts",
    "chars": 1425,
    "preview": "import { Parser, seq, whitespace } from 'parsimmon';\nimport { VimState } from '../../state/vimState';\nimport { ExCommand"
  },
  {
    "path": "src/cmd_line/commands/yank.ts",
    "chars": 2752,
    "preview": "// eslint-disable-next-line id-denylist\nimport { alt, any, optWhitespace, Parser, seq, whitespace } from 'parsimmon';\nim"
  },
  {
    "path": "src/common/matching/matcher.ts",
    "chars": 5373,
    "preview": "import { Position } from 'vscode';\nimport { configuration } from '../../configuration/configuration';\nimport { VimState "
  },
  {
    "path": "src/common/matching/quoteMatcher.ts",
    "chars": 1899,
    "preview": "enum QuoteMatch {\n  Opening,\n  Closing,\n}\n\n/**\n * QuoteMatcher matches quoted strings, respecting escaped quotes (\\\") an"
  },
  {
    "path": "src/common/matching/tagMatcher.ts",
    "chars": 5027,
    "preview": "import { VimState } from '../../state/vimState';\nimport { TextEditor } from '../../textEditor';\n\ntype Tag = { name: stri"
  },
  {
    "path": "src/common/motion/cursor.ts",
    "chars": 1429,
    "preview": "import { Position, Selection, TextDocument } from 'vscode';\n\nexport class Cursor {\n  public readonly start: Position;\n  "
  },
  {
    "path": "src/common/motion/position.ts",
    "chars": 17648,
    "preview": "import * as vscode from 'vscode';\n\nimport { Position } from 'vscode';\nimport { getSentenceBegin, getSentenceEnd } from '"
  },
  {
    "path": "src/common/number/numericString.ts",
    "chars": 6075,
    "preview": "/**\n *      aaaa0x111bbbbbb\n *      |-------------| => NumericString\n *      |--|            => prefix\n *          |---|"
  },
  {
    "path": "src/completion/lineCompletionProvider.ts",
    "chars": 5811,
    "preview": "import * as vscode from 'vscode';\n\nimport { Position } from 'vscode';\nimport { VimState } from '../state/vimState';\nimpo"
  },
  {
    "path": "src/configuration/configuration.ts",
    "chars": 17027,
    "preview": "import * as process from 'process';\nimport * as vscode from 'vscode';\nimport { Globals } from '../globals';\nimport { VSC"
  },
  {
    "path": "src/configuration/configurationValidator.ts",
    "chars": 902,
    "preview": "import { IConfiguration } from './iconfiguration';\nimport { IConfigurationValidator, ValidatorResults } from './iconfigu"
  },
  {
    "path": "src/configuration/decoration.ts",
    "chars": 11368,
    "preview": "import * as vscode from 'vscode';\nimport { IConfiguration } from './iconfiguration';\n\nclass DecorationImpl {\n  private _"
  },
  {
    "path": "src/configuration/iconfiguration.ts",
    "chars": 10203,
    "preview": "import * as vscode from 'vscode';\n\nexport type Digraph = [string, number | number[]];\n\nexport interface IModeSpecificStr"
  },
  {
    "path": "src/configuration/iconfigurationValidator.ts",
    "chars": 1018,
    "preview": "import { IConfiguration } from './iconfiguration';\n\ninterface IValidatorResult {\n  level: 'error' | 'warning';\n  message"
  },
  {
    "path": "src/configuration/langmap.ts",
    "chars": 4458,
    "preview": "import { SetCommand } from '../cmd_line/commands/set';\nimport { Mode } from '../mode/mode';\nimport { configuration } fro"
  },
  {
    "path": "src/configuration/notation.ts",
    "chars": 2279,
    "preview": "export class Notation {\n  // Mapping from a regex to the normalized string that it should be converted to.\n  private sta"
  },
  {
    "path": "src/configuration/remapper.ts",
    "chars": 27307,
    "preview": "import * as vscode from 'vscode';\nimport { configuration } from '../configuration/configuration';\nimport { ForceStopRema"
  },
  {
    "path": "src/configuration/validators/inputMethodSwitcherValidator.ts",
    "chars": 2217,
    "preview": "import { existsAsync } from 'platform/fs';\nimport { Globals } from '../../globals';\nimport { configurationValidator } fr"
  },
  {
    "path": "src/configuration/validators/neovimValidator.ts",
    "chars": 2382,
    "preview": "import { execFileSync } from 'child_process';\nimport { existsSync } from 'fs';\nimport * as path from 'path';\nimport * as"
  },
  {
    "path": "src/configuration/validators/remappingValidator.ts",
    "chars": 5944,
    "preview": "import * as vscode from 'vscode';\nimport { PluginDefaultMappings } from '../../actions/plugins/pluginDefaultMappings';\ni"
  },
  {
    "path": "src/configuration/validators/vimrcValidator.ts",
    "chars": 746,
    "preview": "import { configurationValidator } from '../configurationValidator';\nimport { IConfiguration } from '../iconfiguration';\n"
  },
  {
    "path": "src/configuration/vimrc.ts",
    "chars": 14948,
    "preview": "import * as _ from 'lodash';\nimport * as os from 'os';\nimport * as path from 'path';\nimport * as fs from 'platform/fs';\n"
  },
  {
    "path": "src/configuration/vimrcKeyRemappingBuilder.ts",
    "chars": 6530,
    "preview": "import { IVimrcKeyRemapping } from './iconfiguration';\n\nclass VimrcKeyRemappingBuilderImpl {\n  /**\n   * Regex for mappin"
  },
  {
    "path": "src/error.ts",
    "chars": 17777,
    "preview": "export enum ErrorCode {\n  InvalidAddress = 14,\n  InvalidExpression = 15,\n  InvalidRange = 16,\n  MarkNotSet = 20,\n  NoAlt"
  },
  {
    "path": "src/globals.ts",
    "chars": 391,
    "preview": "import { IConfiguration } from './configuration/iconfiguration';\n\n/**\n * Global variables shared throughout extension\n *"
  },
  {
    "path": "src/history/historyFile.ts",
    "chars": 1176,
    "preview": "import { HistoryBase } from 'platform/history';\nimport { ExtensionContext } from 'vscode';\nimport { configuration } from"
  },
  {
    "path": "src/history/historyTracker.ts",
    "chars": 31012,
    "preview": "/**\n * HistoryTracker is a handrolled undo/redo tracker for VSC. We currently\n * track history as a list of \"steps\", eac"
  },
  {
    "path": "src/jumps/jump.ts",
    "chars": 1830,
    "preview": "import * as vscode from 'vscode';\nimport { Position } from 'vscode';\n\nimport { VimState } from '../state/vimState';\n\n/**"
  },
  {
    "path": "src/jumps/jumpTracker.ts",
    "chars": 10843,
    "preview": "import * as vscode from 'vscode';\n\nimport { VimState } from '../state/vimState';\nimport { FileCommand } from './../cmd_l"
  },
  {
    "path": "src/mode/internalSelectionsTracker.ts",
    "chars": 11662,
    "preview": "import * as vscode from 'vscode';\n\nimport { Logger } from '../util/logger';\nimport { areSelectionArraysEqual, hashSelect"
  },
  {
    "path": "src/mode/mode.ts",
    "chars": 2402,
    "preview": "import * as vscode from 'vscode';\nimport { Position } from 'vscode';\n\nexport enum Mode {\n  Normal,\n  Insert,\n  Visual,\n "
  },
  {
    "path": "src/mode/modeData.ts",
    "chars": 1025,
    "preview": "import { ExCommandLine, SearchCommandLine } from '../cmd_line/commandLine';\nimport { ReplaceState } from '../state/repla"
  },
  {
    "path": "src/mode/modeHandler.ts",
    "chars": 69524,
    "preview": "import _ from 'lodash';\nimport * as vscode from 'vscode';\n\nimport * as process from 'process';\nimport { Position, Range,"
  },
  {
    "path": "src/mode/modeHandlerMap.ts",
    "chars": 1232,
    "preview": "import { TextEditor, Uri } from 'vscode';\nimport { ModeHandler } from './modeHandler';\n\n/**\n * Stores one ModeHandler (a"
  },
  {
    "path": "src/neovim/neovim.ts",
    "chars": 7469,
    "preview": "import { ChildProcess, spawn } from 'child_process';\nimport { exists } from 'fs';\nimport { Neovim } from 'neovim/lib/api"
  },
  {
    "path": "src/platform/browser/constants.ts",
    "chars": 157,
    "preview": "export const SUPPORT_VIMRC = false;\nexport const SUPPORT_NVIM = false;\nexport const SUPPORT_IME_SWITCHER = false;\nexport"
  },
  {
    "path": "src/platform/browser/fs.ts",
    "chars": 2381,
    "preview": "import * as vscode from 'vscode';\n\nexport const constants = {\n  UV_FS_SYMLINK_DIR: 1,\n  UV_FS_SYMLINK_JUNCTION: 2,\n  O_R"
  },
  {
    "path": "src/platform/browser/history.ts",
    "chars": 1979,
    "preview": "import * as vscode from 'vscode';\n\nexport class HistoryBase {\n  private readonly context: vscode.ExtensionContext;\n  pri"
  },
  {
    "path": "src/platform/node/constants.ts",
    "chars": 153,
    "preview": "export const SUPPORT_VIMRC = true;\nexport const SUPPORT_NVIM = true;\nexport const SUPPORT_IME_SWITCHER = true;\nexport co"
  },
  {
    "path": "src/platform/node/fs.ts",
    "chars": 2873,
    "preview": "import * as fs from 'fs';\nimport * as util from 'util';\nimport { promisify } from 'util';\nimport * as vscode from 'vscod"
  },
  {
    "path": "src/platform/node/history.ts",
    "chars": 3385,
    "preview": "import * as path from 'path';\nimport { mkdirAsync, readFileAsync, unlinkSync, writeFileAsync } from 'platform/fs';\nimpor"
  },
  {
    "path": "src/register/register.ts",
    "chars": 11688,
    "preview": "import { readFileAsync, writeFileAsync } from 'platform/fs';\nimport { Globals } from '../globals';\nimport { RecordedStat"
  },
  {
    "path": "src/state/compositionState.ts",
    "chars": 244,
    "preview": "export class CompositionState {\n  isInComposition: boolean = false;\n  insertedText: boolean = false;\n  composingText: st"
  },
  {
    "path": "src/state/globalState.ts",
    "chars": 1073,
    "preview": "import { JumpTracker } from '../jumps/jumpTracker';\nimport { RecordedState } from './../state/recordedState';\nimport { S"
  },
  {
    "path": "src/state/recordedState.ts",
    "chars": 8555,
    "preview": "import { IBaseAction, IBaseCommand, IBaseOperator } from '../actions/types';\nimport { configuration } from '../configura"
  },
  {
    "path": "src/state/remapState.ts",
    "chars": 6839,
    "preview": "import { IKeyRemapping } from '../configuration/iconfiguration';\n\n/**\n * State related to key remapping. Held by ModeHan"
  },
  {
    "path": "src/state/replaceState.ts",
    "chars": 852,
    "preview": "import { Position } from 'vscode';\n\ntype ReplaceModeChange = {\n  before: string;\n  after: string;\n};\n\n/**\n * State invol"
  },
  {
    "path": "src/state/searchState.ts",
    "chars": 7181,
    "preview": "import { Position, Range } from 'vscode';\n\nimport { configuration } from '../configuration/configuration';\nimport { Patt"
  },
  {
    "path": "src/state/substituteState.ts",
    "chars": 590,
    "preview": "import { ReplaceString } from '../cmd_line/commands/substitute';\nimport { Pattern } from '../vimscript/pattern';\n\n/**\n *"
  },
  {
    "path": "src/state/vimState.ts",
    "chars": 10843,
    "preview": "import * as vscode from 'vscode';\n\nimport { SUPPORT_IME_SWITCHER, SUPPORT_NVIM } from 'platform/constants';\nimport { Pos"
  },
  {
    "path": "src/statusBar.ts",
    "chars": 8880,
    "preview": "import * as vscode from 'vscode';\nimport { configuration } from './configuration/configuration';\nimport { VimError } fro"
  },
  {
    "path": "src/taskQueue.ts",
    "chars": 529,
    "preview": "import Queue from 'queue';\nimport { Logger } from './util/logger';\n\nclass TaskQueue {\n  private readonly taskQueue = new"
  },
  {
    "path": "src/textEditor.ts",
    "chars": 9302,
    "preview": "import * as vscode from 'vscode';\n\nimport { Position } from 'vscode';\nimport { Cursor } from './common/motion/cursor';\ni"
  },
  {
    "path": "src/textobject/paragraph.ts",
    "chars": 1303,
    "preview": "import { Position } from 'vscode';\nimport { TextEditor } from '../textEditor';\n\n/**\n * Get the end of the current paragr"
  },
  {
    "path": "src/textobject/sentence.ts",
    "chars": 3618,
    "preview": "import { Position } from 'vscode';\nimport { TextEditor } from '../textEditor';\nimport { getCurrentParagraphBeginning, ge"
  },
  {
    "path": "src/textobject/textobject.ts",
    "chars": 33945,
    "preview": "import { Position, TextDocument } from 'vscode';\nimport { RegisterAction } from '../actions/base';\nimport { BaseMovement"
  },
  {
    "path": "src/textobject/util.ts",
    "chars": 973,
    "preview": "export function getAllPositions(line: string, regex: RegExp): number[] {\n  const positions: number[] = [];\n  let result "
  },
  {
    "path": "src/textobject/word.ts",
    "chars": 12734,
    "preview": "import * as _ from 'lodash';\nimport { Position, TextDocument } from 'vscode';\nimport { configuration } from '../configur"
  },
  {
    "path": "src/transformations/execute.ts",
    "chars": 12690,
    "preview": "import * as vscode from 'vscode';\nimport { ExCommandLine } from '../cmd_line/commandLine';\nimport { Cursor } from '../co"
  },
  {
    "path": "src/transformations/transformations.ts",
    "chars": 7880,
    "preview": "import { Position, Range, TextDocumentContentChangeEvent } from 'vscode';\nimport { RecordedState } from '../state/record"
  },
  {
    "path": "src/transformations/transformer.ts",
    "chars": 1516,
    "preview": "import { Position, Range } from 'vscode';\nimport { PositionDiff } from '../common/motion/position';\nimport { Logger } fr"
  },
  {
    "path": "src/util/child_process.ts",
    "chars": 313,
    "preview": "import * as child_process from 'child_process';\nimport { promisify } from 'util';\n\nexport function exec(\n  command: stri"
  },
  {
    "path": "src/util/clipboard.ts",
    "chars": 457,
    "preview": "import * as vscode from 'vscode';\nimport { Logger } from './logger';\n\n/**\n * A thin wrapper around `vscode.env.clipboard"
  },
  {
    "path": "src/util/decorationUtils.ts",
    "chars": 2875,
    "preview": "import { DecorationOptions, Range, TextDocument } from 'vscode';\n\n/**\n * Alias for the types of arrays that can be passe"
  },
  {
    "path": "src/util/externalCommand.ts",
    "chars": 3340,
    "preview": "import { configuration } from '../configuration/configuration';\nimport { VimError } from '../error';\n\nclass ExternalComm"
  },
  {
    "path": "src/util/logger.ts",
    "chars": 607,
    "preview": "import { LogOutputChannel, window } from 'vscode';\n\nexport class Logger {\n  private static output: LogOutputChannel;\n\n  "
  },
  {
    "path": "src/util/os.ts",
    "chars": 86,
    "preview": "import * as os from 'os';\n\nexport function tmpdir(): string {\n  return os.tmpdir();\n}\n"
  },
  {
    "path": "src/util/path.ts",
    "chars": 8852,
    "preview": "import * as path from 'path';\nimport * as vscode from 'vscode';\n// TODO:\n// eslint-disable-next-line @typescript-eslint/"
  },
  {
    "path": "src/util/selections.ts",
    "chars": 1641,
    "preview": "import * as vscode from 'vscode';\n\n/**\n * Hashes the given selections array into a string, based on the anchor and activ"
  },
  {
    "path": "src/util/specialKeys.ts",
    "chars": 153,
    "preview": "export enum SpecialKeys {\n  ExtensionEnable = '<ExtensionEnable>',\n  ExtensionDisable = '<ExtensionDisable>',\n  TimeoutF"
  },
  {
    "path": "src/util/statusBarTextUtils.ts",
    "chars": 3039,
    "preview": "import { Position } from 'vscode';\nimport { configuration } from '../configuration/configuration';\nimport { Mode } from "
  },
  {
    "path": "src/util/util.ts",
    "chars": 2077,
    "preview": "import * as vscode from 'vscode';\nimport { Cursor } from '../common/motion/cursor';\nimport { VimError } from '../error';"
  }
]

// ... and 111 more files (download for full content)

About this extraction

This page contains the full source code of the VSCodeVim/Vim GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 311 files (2.4 MB), approximately 646.5k tokens, and a symbol index with 2315 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!