diff --git a/src/core/exec.rs b/src/core/exec.rs
index 18198366319c35d048e8894f5cecbfd7d2361920..4cd148ec7206e13686fb8167c48a857978105a3b 100644
--- a/src/core/exec.rs
+++ b/src/core/exec.rs
@@ -124,9 +124,11 @@ impl Editor {
                 self.goto(bounded);
             }
             (Command(Normal), Char('L')) => {
-                let ln_end = (self.buffers.current_buffer()[self.y()].len() - 1, self.y());
-                self.goto(ln_end);
-                mov = true;
+                if self.buffers.current_buffer()[self.y()].len() != 0 {
+                    let ln_end = (self.buffers.current_buffer()[self.y()].len() - 1, self.y());
+                    self.goto(ln_end);
+                    mov = true;
+                }
             }
             (Command(Normal), Char('H')) => {
                 self.cursor_mut().x = 0;
diff --git a/src/edit/insert.rs b/src/edit/insert.rs
index d793ceb99c56683fcb1bdc60eb0d93eb3c43cd0a..851b2bf551140716aebee57a2e1de3d8542d48fc 100644
--- a/src/edit/insert.rs
+++ b/src/edit/insert.rs
@@ -46,6 +46,14 @@ impl Editor {
                 self.goto((begin, y + 1));
             }
             (InsertMode::Insert, Key::Backspace) => self.backspace(),
+            (InsertMode::Insert, Key::Tab) => {
+                for i in 0..4 {
+                    self.buffers.current_buffer_mut()[y].insert(x + i, ' ');
+                }
+                self.redraw_task = RedrawTask::Lines(y..y + 1);
+                let right = self.right(4, false);
+                self.goto(right);
+            }
             (InsertMode::Insert, Key::Char(c)) => {
                 self.buffers.current_buffer_mut()[y].insert(x, c);
 
diff --git a/src/io/parse.rs b/src/io/parse.rs
index f544d2bc0a643e09053b445b421fd9d4b5c1b864..1697bdd7cb54dd14807c970f9e854bfad1ec398c 100644
--- a/src/io/parse.rs
+++ b/src/io/parse.rs
@@ -115,6 +115,10 @@ impl Editor {
                         EventOption::Quit(_) => {
                             return Inst(Parameter::Null, Cmd { key: Key::Quit });
                         }
+                        EventOption::Resize(_) => {
+                            self.redraw_task = RedrawTask::Full;
+                            self.redraw();
+                        }
                         _ => {}
                     }
                 }