146

On Unix I'd just use vi, but I don't know what the command is on Windows. I am actually trying to edit files over SSH with Windows Server 2008.

6
  • 2
    I think the accepted answer should be changed to squillman's (as it is the only one that will work on most contemporary PCs - and possibly inside Docker containers). Sep 7 '18 at 17:11
  • 1
  • 1
    if you do have a graphic desktop but simply want to edit a file directly from cmd then you can use notepad e.g. with notepad myfile.txt
    – ccpizza
    Aug 16 '19 at 13:25
  • 2
    If you have linux subsystem for windows, you can use 'bash' and then any linux subsystem command (I tried nano and it works). I would post this as answer but I can't for some reason.
    – SajanGohil
    Mar 2 '20 at 9:32
  • @SajanGohil i get the following error when running 'bash nano' from a windows cmd line: "/usr/bin/nano: /usr/bin/nano: cannot execute binary file"
    – BogBody
    Sep 28 '20 at 21:37

11 Answers 11

62

edit filename

I won't vouch for its functionality and outdated GUI but it is installed by default, even on Windows 7.

Edit: Except 64 bit versions of Windows.

11
  • 15
    On all versions of Windows? There is no "edit" on Windows 7 apparently.
    – Snark
    Sep 10 '10 at 3:53
  • 18
    Odd... evidently it's installed by default on Windows 7 32-bit, but not on Windows 7 64-bit. That's sad.
    – nhinkle
    Sep 10 '10 at 4:12
  • 7
    @nhinkle: I seem to recall reading something about 16-bit apps being unavailable under 64-bit windows installs.
    – intuited
    Sep 10 '10 at 4:34
  • 14
    Confirmed NOT working in Win 10... I really cant believe Windows is lacking such basic tools and nobody even seems to care
    – Rafael T
    Aug 30 '17 at 11:59
  • 3
    This is just wrong answer when talking about "Windows" generally. Today, Windows is also Win7-64bit, Win8-64bit, Win8.1-64bit, Win10. "edit" cannot be the correct answer to the question from today's point of view. Nov 9 '17 at 10:40
94

The simplest solution on all versions of Windows is:

C:\> notepad somefile.txt

And, no extra software required.

9
  • 61
    Nice, but not over SSH
    – Casebash
    Sep 10 '10 at 4:10
  • 5
    Ah. Right. Windows doesn't have a command-line editor built in. You'll probably need to install the Gnu version of the editor you want to use. Since you've already installed the ssh server, that should be no problem for you.
    – BillP3rd
    Sep 10 '10 at 4:27
  • 12
    Like OP said... "I am actually trying to edit files over ssh..."
    – daviewales
    Apr 13 '14 at 3:16
  • 16
    useless answer, both for ssh users and for those who wants to edit files IN cmd window, not outside it
    – vladkras
    Feb 14 '16 at 7:10
  • 8
    This will not work in a Docker container based on 'windowsservercore' Aug 28 '18 at 9:17
64

From a Windows command prompt enter copy con followed by the target file name. (copy con c:\file.txt).

Then enter the text you want to put in the file.

End and save the file by pressing CTRL-Z then Enter or F6 then Enter.

If you want to change text in an existing file simply display the text by using the command type followed by the file name and then just copy and paste the text in to the copy con command.

4
  • 13
    Hard core. Try not to make any typos, or you'll have to start over again. Well, backspace does work if you catch the mistake before you press Enter. Dec 3 '13 at 18:57
  • Doesn't seem to work with psexec. Tried to edit my hosts file with copy con hosts but ^Z doesn't save and ^C doesn't cancel! Had to close the cmd window to get out. The file was unchanged. May 27 '14 at 11:17
  • Note: F6 can be used instead of [Ctrl]-[Z] Sep 13 '14 at 9:58
  • 3
    In a Docker container based on 'windowsservercore' (CMD), Ctrl + C worked for the terminating key sequence. Aug 28 '18 at 9:30
26

If you're used to vi and don't want to settle for the built-in editor you can get Vim for Windows. It'll run from a command shell. Or try WinVi.

2
  • 3
    this should me marked as answer because edit has been removed from win 10
    – Luke
    Jun 14 '18 at 18:36
  • 4
    It is much better than that: It also works inside a Windows Docker container (it is easiest to get the "Win32 console executable", e.g. vim81w32.zip - unzip and copy vim.exe to wherever it is accessible in the Docker container). Sep 15 '18 at 23:38
20

If you have git installed for windows then most likely nano and vim are both available at

C:\Program Files\Git\usr\bin\nano.exe
C:\Program Files\Git\usr\bin\vim.exe

To run from a command prompt (cmd.exe)

"c:\Program Files\Git\usr\bin\nano.exe" <filename>

To run in powershell

& 'C:\Program Files\Git\usr\bin\nano.exe' <filename>

They both work great even over ssh.

2
  • 2
    Thank you! Git imo is a more reasonable dependency that's likely already on the server, as opposed to WSL or other 3rd-party text editors.
    – Konafa
    Jul 12 '20 at 1:02
  • This is the perfect answer!
    – Bachi
    Aug 29 at 8:59
12

Believe it or not, EDLIN.EXE is still around <shudder> at least on this Vista system.

Excuse me while I sob softly to myself...

5
  • 7
    It was finally deleted in Windows 7 (at least the 64-bit versions).
    – paradroid
    Sep 10 '10 at 7:11
  • 2
    @jason404: It's still included in 32-bit Windows 7. Sep 10 '10 at 15:08
  • 2
    edlin is a 16-bit program, therefore it is not available in 64-bit versions of Windows. However, I won't be surprised if someone here claims it's still present in the 32-bit version of Windows 10. May 12 '15 at 7:54
  • 1
    @TSJNachos117 It is indeed in x86 Windows 10. Oct 12 '16 at 1:19
  • Not surprised at all. Jan 30 '17 at 21:44
9

I don't know about SSH, or anything (else?) server-related, so forgive me if this "solution" is useless. If you want to edit files in the command prompt, you can get the Windows version of Nano.

As a side note, those little ^ signs at the bottom of the window are supposed to represent the Ctrl button. For instance, ^X Exit means that you can exit the program using Ctrl-X.

Also, Nano will sometimes add extra newlines when saving files. This seems to be some kind of bug with Nano's word wrapping.

I've also seen ports of vi for Windows, although I've used one that just seem to make command prompt window as small as it can be, leaving only a title bar (which means the rest of the window may as well be invisible, since you can't see what you're doing). However, the Windows version of Vim seems to work quite nicely.

2
  • 2
    Before lookig for those "may work but are useless solutions" i thought for a Windows port of Nano. It's using cygwin.dll and nothing more. I've picket the lightest version i can, from netcologne.dl.sourceforge.net/project/nano/nano/1.0.8/…. Thank you.
    – m3nda
    Jan 26 '17 at 16:46
  • As @gman pointed out, if you have git installed, then you already have nano.exe. Also, it's pretty easy to install nano via the command line by using chocolatey ( chocolatey.org/install#individual ). After chocolatey is installed, install nano by typing choco install nano.
    – cowlinator
    Jul 17 '20 at 17:01
5

2020 UPDATE:

On Win10 just enable the linux subsystem then you'll have most of the linux stuff like vim and nano:

c:> bash
$: nano yourfile.txt
2
  • 1
    The linux subsystem? Is that a thing now in W10? Aug 8 '20 at 10:15
  • 1
    OK, just googled this - good idea, but installing an entire linux distro to enable a terminal editor? It's a stretch. Still might try it tho' ;) Aug 8 '20 at 10:30
2

Use vim or nano.

Install vim with with choco install vim using the chocolatey package manager.

(There might be Scoop version available as well, but I haven't checked.)

Although nano also exists as choco package, it is very outdated. Instead manually install this nano. However, when using over SSH, nano control characters get a bit confused, so you may lose some, since windows use it's own API for controlling screen characters, and not POSIX. So although a lot of work is currently in progress for future Win10 compatibility.

Then you can run with: nano -cg some.txt, but the cursor will only show up at the right location when you push CTRL-L. (Which is why vim is preferred.)

2
  • 2
    Of course, this requires having Chocolately installed
    – mic
    May 26 '20 at 15:38
  • Thanks mic, I added that link.
    – not2qubit
    May 31 '20 at 7:25
1

If the remote computer has Windows Subsystem for Linux installed, you can type bash to have the next commands interpreted by WSL. From here, you can type nano FILENAME or vim FILENAME or whatever your preferred Linux text editor is. To exit WSL and return to regular Command Prompt, type exit or logout.

This came in handy when I was accessing a Windows Jupyter Notebook server and wanted to edit .gitattributes, a hidden file which isn't shown in the Jupyter GUI. This answer is based on SajanGohil's comment above.

1

I'm not 100% sure it will work via SSH as they may use some special Windows API for Console Window management, but on Windows there is a console shell called FAR Manager (similar to Norton Commander or Volkov Commander for MS DOS or Midnight Commander for Linux). You can run the FAR Manager editor using the following command line:

far -E <filename>

Another similar solution is to install Midnight Commander as part of the msys2 distro or the standalone app and run

mcedit <filename>

Not the answer you're looking for? Browse other questions tagged or ask your own question.