--- lib/stdlib/src/edlin.erl.orig	2008-09-22 22:13:25.655714000 -0400
+++ lib/stdlib/src/edlin.erl	2008-09-22 22:12:29.601824000 -0400
@@ -69,6 +69,17 @@
 
 edit([C|Cs], P, Line, {blink,_}, [_|Rs]) ->	%Remove blink here
     edit([C|Cs], P, Line, none, Rs);
+edit([27,91,51,126|Cs], P, {Bef,Aft}, _Prefix, Rs0) -> % `Del' key
+    case do_op(forward_delete_char, Bef, Aft, Rs0) of
+    {blink,N,Line,Rs} ->
+        edit(Cs, P, Line, {blink,N}, Rs);
+    {Line,Rs} ->
+        edit(Cs, P, Line, none, Rs)
+    end;
+edit([91,49,59,53,68|Cs], P, {Bef,Aft}, Prefix, Rs0) -> % ^<-  move left one word
+    edit([$B|Cs], P, {Bef,Aft}, Prefix, Rs0);
+edit([91,49,59,53,67|Cs], P, {Bef,Aft}, Prefix, Rs0) -> % ^->  move right one word
+    edit([$F|Cs], P, {Bef,Aft}, Prefix, Rs0);
 edit([C|Cs], P, {Bef,Aft}, Prefix, Rs0) ->
     case key_map(C, Prefix) of
 	meta ->
@@ -162,7 +173,7 @@
 key_map($\^K, none) -> kill_line;
 key_map($\r, none) -> new_line;
 key_map($\^T, none) -> transpose_char;
-key_map($\^U, none) -> ctlu;
+key_map($\^U, none) -> kill_full_line;
 key_map($\^], none) -> auto_blink;
 key_map($\^X, none) -> ctlx;
 key_map($\^Y, none) -> yank;
@@ -182,6 +193,7 @@
 key_map($y, meta) -> yank_pop;
 key_map($\177, none) -> backward_delete_char;
 key_map($\177, meta) -> backward_kill_word;
+key_map($\^W, none) -> backward_kill_word;
 key_map($[, meta) -> meta_left_sq_bracket;
 key_map($D, meta_left_sq_bracket) -> backward_char;
 key_map($C, meta_left_sq_bracket) -> forward_char;
@@ -242,6 +254,9 @@
 do_op(kill_line, Bef, Aft, Rs) ->
     put(kill_buffer, Aft),
     {{Bef,[]},[{delete_chars,length(Aft)}|Rs]};
+do_op(kill_full_line, Bef, Aft, Rs) ->
+    put(kill_buffer, reverse(Bef)++Aft),
+    {{[],[]},[{delete_chars,-length(Bef)},{delete_chars,length(Aft)}|Rs]};
 do_op(yank, Bef, [], Rs) ->
     Kill = get(kill_buffer),
     {{reverse(Kill, Bef),[]},[{put_chars,Kill}|Rs]};
