med 1.1.0

MicroEmacs written in D

To use this package, run the following command in your project's root directory:

Manual usage
Put the following dependency into your project's dependences section:

med, Micro Emacs in D

This is my version of MicroEmacs, based on the public domain version by Dave Conroy. I like it because it is small, fast, easilly customizable, and it ports readilly to whatever machine I need to use it on. It's written in the D programming language.

It currently works on Windows and Linux.

To edit myfile.d:

med myfile.d

Cheat Sheet

Command Name         Description                        Keybinding


basic_nextline       Move to next line			F5
gotobol              Move to start of line		^A
forwchar             Move forward by characters		^F, rightarrow
gotoeol              Move to end of line		^E
backchar             Move backward by characters	^B, leftarrow
forwline             Move forward by lines		^N, downarrow
backline             Move backward by lines		^P, uparrow
forwpage             Move forward by pages		^V, PgDn
backpage             Move backward by pages		Esc B, PgUp
gotobob              Move to start of buffer		Esc <, ^Home
gotoeob              Move to end of buffer		Esc >, ^End
gotoline             Move to line number		^X L
word_back            Backup by words			Esc B, ^leftarrow
word_forw            Advance by words			Esc F, ^rightarrow


window_next          Move to the next window		^X N, F6
window_prev          Move to the previous window	^X P
window_only          Make current window only one	^X 1
window_split         Split current window		^X 2
window_mvdn          Move window down			Esc N, End
window_mvup          Move window up			Esc P, Home
window_enlarge       Enlarge display window		^X Z
window_shrink        Shrink window			Esc Z
window_reposition    Reposition window			^X T
window_refresh       Refresh the screen			^L
delwind              Delete a window			^X D


random_deblank       Delete blank lines			^X O
random_forwdel       Forward delete			^D, Del
random_backdel       Backward delete			^H, 0x7F
random_undelchar     Undelete a character		AltF Del
Ddelline             Delete a line			^J
Dundelline           Undelete a line			Esc J, AltF F2
Ddelword             Delete a word
Ddelbword            Delete a word (backwards)
Dundelword           Undelete a word			AltF ^rightarrow, AltF ^leftarrow
delfword             Delete forward word		Esc D
delbword             Delete backward word		Esc H


random_kill          Kill forward			^K
random_yank          Paste from kill buffer		^Y, ^X K, F10
region_kill          Cut region to kill buffer		Esc 9, F9
region_copy          Copy region to kill buffer		Esc 8, F8
basic_setmark        Set mark				F7, Esc .
removemark           Remove mark			^X .
swapmark             Swap dot and mark			Esc X
word_select          Select word			Esc W


filenext             Edit next file			AltF N
fileread             Get a file, read only		AltF R
filevisit            Get a file, read write		AltF V
filewrite            Write a file			AltF W
fileunmodify         Turn off buffer changed bits	AltF U
filesave             Save current file			AltF S
filename             Adjust file name			AltF F
filemodify           Write modified files		AltF M
Dinsertfile          Insert a file at dot		AltF I


ctrlg                Abort out of things		^@, ^G
quit                 Quit				^C, AltF Q
quickexit            low keystroke style exit
normexit             Write modified files and exit	AltF X, AltX


ctlxlp               Begin macro			^X (
ctlxrp               End macro				^X )
macrotoggle          Start/End macro			F12
ctlxe                Execute macro			^X E, F11


forwsearch           Search forward			^S
backsearch           Search backwards			^R
replacestring        Search and replace			Esc R
queryreplacestring   Query search and replace		Esc Q
Dsearch              Search				F4, AltF F4
Dsearchagain         Search for the same string		F2

D, C and C++

search_paren         Toggle over parentheses		^W, F3
random_indent        Insert CR-LF, then indent
random_incindent     increase indentation level		^X ], AltF10
random_decindent     decrease indentation level		^X [, AltF9
random_opttab        optimize tabbing in line		Esc I
Dcppcomment          convert /* */ to //		^X /


display_norm_fg						AltF2
display_norm_bg						AltF1
display_mode_fg						AltF4
display_mode_bg						AltF3
display_mark_fg						AltF5
display_mark_bg						AltF6
display_eol_bg						AltF7
main_saveconfig      Save configuration			AltC


spawncli             Run CLI in a subjob		^Z
spawn                Run a command in a subjob		^X !
spawn_filter         Filter buffer through program	^X #
spawn_pipe           Run program and gather output	^X @, AltZ
Dpause               Pause the program (UNIX only)


listbuffers          Display list of buffers		AltF B
usebuffer            Switch a window to a buffer	^X B
buffer_next          Switch to next buffer		^X W, AltB
killbuffer           Make a buffer go away


random_setfillcol    Set fill column			^X F
word_wrap_line       Word wrap line                     ^X A
random_showcpos      Show the cursor position		^X =
random_twiddle       Twiddle characters			^T
random_tab           Insert tab				^I, Tab
random_hardtab       Set hardware tabs			AltF T
random_newline       Insert CR-LF			^M
random_openline      Open up a blank line		^O, AltF Ins
random_quote         Insert literal			^Q, ^X Q
region_togglemode    Toggle column region mode		Esc T
toggleinsert         Toggle insert/overwrite mode	Ins
line_overwrite       Write char in overwrite mode
getcol               Get current column
misc_upper           Upper case word/region		Esc U
misc_lower           Lower case word/region		Esc L
capword              Initial capitalize word		Esc C
win32toggle43        Toggle hires mode			AltE
ibmpctoggle43        Toggle hires mode			AltE
Dignore              do nothing
Dadvance             Set into advance mode		Esc downarrow
Dbackup              Set into backup mode		Esc uparrow
Dinsertdate          File and date stamp		AltF D
scrollUnicode        Scroll through Unicode variations  ^X U


  • dot current cursor position
  • mark start of a region
  • minibuffer text entry box used for entering file names and search strings
  • region text between "dot" and "mark"


  • ^[ also works as Esc.
  • Names without a keybinding can't be accessed, but they can be called if the keybindings in main.c are updated.
  • Prefixing a command with ^U enables a count to be entered, which executes the command count times.
  • Pressing ^X, AltF, or Esc and then pausing will bring up a menu.
  • The right mouse button will bring up a menu.
  • The left mouse button can be used for setting the dot, marking regions, and adjusting window sizes.
  • The minibuffer has a small history buffer, accessible with the uparrow key.
  • On Win32, by clicking on the title bar, then select [Edit], you can access the Windows clipboard. This is very handy for cutting/pasting text from another window or the web browser.


  • Some of the keybindings make no sense.
  • The Alt function key sequences don't work on Win32.
  • The control numeric pad sequences don't work on Linux.
  • The colors can't be modified on any but the DOS version.
  • The process functionality is flaky.
  • For some reason, the mouse in the Win32 version doesn't work on Win2000, but does on WinNT.
  • Dave G. Conroy
  • Walter Bright
1.1.0 2021-Sep-13
1.0.0 2014-Nov-29
~master 2023-Nov-03
Show all 3 versions
Download Stats:
  • 0 downloads today

  • 0 downloads this week

  • 0 downloads this month

  • 268 downloads total

Short URL: