launch-ide ·

Automatically recognize the editor by running processes and open the specified file in it. It is compatible in Windows, MacOS and Linux.
💡 Why
There are already some tools to open the file in the editor, but launch-ide
has the following advantages:
- Automatically recognize the editor by running processes, you don't need to configure the editor path.
- Launch the ide by the executable file of the editor, so you don't need to install the command line tools of the editor such as
code
. - Support for more editors such as VSCode, Cursor, Windsurf, WebStorm, etc.
- Compatible with platforms such as Windows, MacOS, and Linux.
- Compatible for Chinese characters in the file path.
🛠️ Installation
npm i launch-ide
🚀 Usage
import { launchIDE } from 'launch-ide';
// Open the file in the current editor and position the cursor at line 10 and column 20
launchIDE({ file: '/Users/zh-lx/Desktop/test.ts', line: 10, column: 20 });
// Open the file with more options
launchIDE({
file: '/Users/zh-lx/Desktop/test.ts', // required: the file path to open
line: 10, // optional: the line number to position the cursor at
column: 20, // optional: the column number to position the cursor at
editor: 'code', // optional: specify the editor with IDE encoding name
});
📖 Parameters
interface LaunchIDEParams {
/**
* @required
* @type: string
* @description: the file path to open
*/
file: string;
/**
* @optional
* @type: number
* @description: the line number to position the cursor at
*/
line?: number;
/**
* @optional
* @type: number
* @description: the column number to position the cursor at
*/
column?: number;
/**
* @optional
* @type: string
* @description: specify the editor with IDE encoding name
*/
editor?: string;
/**
* @optional
* @type: string
* @description: when you use the `editor` outside the supported list, you can specify the format of the file to open
* @default '{file}:{line}:{column}'
*/
format?: string;
/**
* @optional
* @type: string
* @description: reuse or open a new window to open the file
* @default 'auto'
*/
method?: 'reuse' | 'new' | 'auto';
/**
* @optional
* @type: function
* @description: callback function when an error occurs
*/
onError?: (file: string, error: string) => void;
}
🎨 Supported editors
IDE | IDE Encoding Name | MacOS | Windows | Linux |
---|---|---|---|---|
Visual Studio Code | code | ✅ | ✅ | ✅ |
Cursor | cursor | ✅ | ✅ | |
Windsurf | windsurf | ✅ | ✅ | |
Trae | trae | ✅ | ✅ | |
Visual Studio Code - Insiders | code-insiders | ✅ | ✅ | ✅ |
VSCodium | codium | ✅ | ✅ | ✅ |
WebStorm | webstorm | ✅ | ✅ | ✅ |
Atom | atom | ✅ | ✅ | ✅ |
HBuilderX | hbuilder | ✅ | ✅ | |
PhpStorm | phpstorm | ✅ | ✅ | ✅ |
Pycharm | pycharm | ✅ | ✅ | ✅ |
IntelliJ IDEA | idea | ✅ | ✅ | ✅ |
Brackets | brackets | ✅ | ✅ | ✅ |
Appcode | appcode | ✅ | ||
Atom Beta | atom-beta | ✅ | ||
Clion | clion | ✅ | ✅ | |
Rider | rider | ✅ | ✅ | ✅ |
Rubymine | rubymine | ✅ | ✅ | ✅ |
Emacs | emacs | ✅ | ||
Sublime Text | sublime | ✅ | ✅ | ✅ |
Notepad++ | notepad | ✅ | ||
Vim | vim | ✅ | ||
Zed | zed | ✅ | ✅ |
✍️ Custom editor
There are two ways to specify the editor:
Specify the editor with IDE encoding name in
launchIDE
.launchIDE({ file: '/Users/zh-lx/Desktop/test.ts', line: 10, column: 20, editor: 'cursor' });
Specify the editor with IDE encoding name in
.env.local
file byCODE_EDITOR
.CODE_EDITOR=cursor
If you use the editor outside the supported list, you can specify the editor by its executable file path, please refer to Other Editor.