Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Getting Started

Denops (/ˈdiːnoʊps/, pronounced dee-nops) is an ecosystem for Vim / Neovim that empowers developers to write plugins in TypeScript / JavaScript powered by Deno.

Let's start by creating a simple plugin to learn how to develop Denops plugins.

Create a Plugin

Create a directory named denops-getting-started in your home directory and a file named main.ts within it, under denops/denops-getting-started/:

$HOME
└── denops-getting-started
    └── denops
        └── denops-getting-started
            └── main.ts

Next, write the following TypeScript code in main.ts:

import type { Entrypoint } from "jsr:@denops/std@^8.0.0";

export const main: Entrypoint = (denops) => {
  denops.dispatcher = {
    async hello() {
      await denops.cmd(`echo "Hello, Denops!"`);
    },
  };
};

note

This example uses direct URL imports for simplicity. The recommended approach for managing dependencies is to use deno.jsonc with import maps, which you'll learn about in the tutorials.

Activate the Plugin

Add the following line to your Vim or Neovim configuration file (e.g., ~/.vimrc or ~/.config/nvim/init.vim):

set runtimepath+=~/denops-getting-started

Or Neovim Lua configuration file (e.g., ~/.config/nvim/init.lua):

vim.opt.runtimepath:append("~/denops-getting-started")

Try the Plugin

Restart Vim/Neovim and execute the following command:

:call denops#request('denops-getting-started', 'hello', [])

You should see "Hello, Denops!" displayed on the screen like: