DEV Community

Kay Gosho
Kay Gosho

Posted on

11 3

I just published my first Vim plugin, import-js-from-history

I am Vim lover, but I have never created nor published my Vim plugin.

This time I created my first plugin, import-js-from-history.

https://github.com/acro5piano/import-js-from-history

What is import-js-from-history

image

import-js-from-history helps write JS & TS import statement.
It reads import statement in all of git files, and suggest import statement.

Why

I have been tired to write import statement at the top of file. I have been repeated writing import React from 'react' again and again.

When I used Visual Studio Code (VSCode), I was surprised that it can suggest import when I type package name to be imported.

After going back to Vim (technically Neovim), I missed the feature. So I created the Vim plugin.

You might wonder why I don't use VScode.

Actually, I attempted to switch to VSCode. I installed major VSCode extensions, including Visual Studio Vim. However, I couldn't accept some small different from Vim, such as I cannot use zz in file explore.

Why not use other plugins

I know there are some Vim plugins to import js programmatically, but all of plugins I tried does not work well.
So I created this solution, as well as my Vim training.

SurveyJS custom survey software

JavaScript UI Libraries for Surveys and Forms

SurveyJS lets you build a JSON-based form management system that integrates with any backend, giving you full control over your data and no user limits. Includes support for custom question types, skip logic, integrated CCS editor, PDF export, real-time analytics & more.

Learn more

Top comments (2)

Collapse
 
idanarye profile image
Idan Arye

When using inputlist, the first item should be a prompt (like "Choose import statement to add" or something). Otherwise hitting <Esc>, or hitting <Cr> without entering a number, will make inputlist return 0 - which will insert the first import from the list, even though the user probably thought it will cancel the action (the builtin prompt even says explicitly "(empty cancels)"). If the first line is a prompt, not picking is the same as picking the prompt - which will do nothing.

Another advantage is that you can start the list from 1. Arrays start from 0, but as UI lists that start from 0 look weird...

While having the first item be the prompt is clearly the intention (it's even written in :help inputlist), but it looks like this function was meant to be used with an hard-coded list and the API is not comfortable when you want a generated one. In my plugins I usually write a wrapper function which also does pagination if the list is too long. You can steal it if you want.

Collapse
 
acro5piano profile image
Kay Gosho

Thank you very much! I wanted to find the correct solution for user cancellation.
I will put 0 as cancel for the prompt.

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay