Skip to content

sindresorhus/open-editor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Dec 22, 2024
d294ee3 · Dec 22, 2024

History

32 Commits
Jul 14, 2024
Apr 16, 2019
Apr 16, 2019
Apr 16, 2019
Apr 16, 2019
Nov 3, 2021
Jul 14, 2024
Dec 22, 2024
Jul 14, 2024
Dec 20, 2020
Dec 22, 2024
Dec 22, 2024
Nov 3, 2021

Repository files navigation

open-editor

Open files in your editor at a specific line and column

Supports any editor, but only the following editors will open at a specific line and column:

  • Sublime Text
  • Atom
  • Zed
  • Visual Studio Code
  • VSCodium
  • WebStorm*
  • TextMate
  • Vim
  • NeoVim
  • IntelliJ IDEA*

*Doesn't support column.

Install

npm install open-editor

Usage

import openEditor from 'open-editor';

openEditor([
	{
		file: 'readme.md',
		line: 10,
		column: 2,
	}
]);

openEditor([
	'unicorn.js:5:3',
]);

API

openEditor(files, options?)

Open the given files in the user's editor at specific line and column if supported by the editor. It does not wait for the editor to start or quit unless you specify wait: true in the options.

files

Type: Array<string | object>

Items should be in the format foo.js:1:5 or {file: 'foo.js', line: 1: column: 5}.

options

Type: object

wait

Type: boolean
Default: false

Wait until the editor is closed.

import openEditor from 'open-editor';

await openEditor(['unicorn.js:5:3'], {wait: true});

console.log('File was closed');
editor

Type: string
Default: Auto-detected

The name, command, or binary path of the editor.

Only use this option if you really have to. Can be useful if you want to force a specific editor or implement your own auto-detection.

getEditorInfo(files, options?)

Same as openEditor(), but returns an object with the binary name, arguments, and a flag indicating whether the editor runs in the terminal.

Example: {binary: 'subl', arguments: ['foo.js:1:5'], isTerminalEditor: false}

Can be useful if you want to handle opening the files yourself.

import {getEditorInfo} from 'open-editor';

getEditorInfo([
	{
		file: 'foo.js',
		line: 1,
		column: 5,
	}
]);
//=> {binary: 'subl', arguments: ['foo.js:1:5'], isTerminalEditor: false}

Related