---
name: "e"
section: "1"
platform: "linux"
package: "e-wrapper"
version: "0.2-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/e"
---

# e(1)

invoke your editor, with optional file:lineno handling

## NAME

e - invoke your editor, with optional file:lineno handling

## SYNOPSIS

**e** \[*\<editor's options\>*\] *\<file\>*\[**:***line*\] \[*\<file\>*...\]\
 *\<pipeline\>* **\| e -:** \[*\<editor's options\>*\]\
 *\<pipeline\>* **\| e -::** \[*\<editor's options\>*\]

## DESCRIPTION

Programs that mention line numbers in messages have mostly standardized on "file:line: Message" or "file:line:col: Message".  Alas, this is not what editors support, which is almost always "+line" "file".

**e** takes a list of file names, optionally followed with **:***line***,** then possibly with **:***column* and/or an additional colon, and gives to your editor.  The line numbers are passed as a separate argument "**+***line*" before the file name which is what editors expect.

Alternatively, you can provide file names on the standard input, and specify **-:** or **-::** as the first argument.  The former allows file names without line numbers, the latter silently ignores anything not in the expected format.

Examples:

-

  git grep FIXME\|e -:

-

  make 2\>&1 \>/dev/null\|grep error:\|e -::

This is roughly a shorthand for "e \`pipeline\|cut -d: -f1-2\`".

**e** is also handy as a general-purpose smart alias for running the editor. If yours has a long name like "jstar" or "emacs", you save four keystrokes on what for a typical Unix user is the most often issued command.

## EDITOR SELECTION

If the environment variable **$EDITOR** is set, **e** will use that. Otherwise, it calls **sensible-editor**, which asks what editor to use then saves your answer.  You can run **select-editor** to get asked again.
