diff --git a/src/keymap.rs b/src/keymap.rs
index 39e9053afe1994bd4e57c6f0652cb0405af913ba..c341c9a0541ed41a380ae9ca2e81d8e195040641 100644
--- a/src/keymap.rs
+++ b/src/keymap.rs
@@ -193,7 +193,13 @@ impl EditState {
                 }
             }
             KeyPress::Tab => Cmd::Complete,
-            KeyPress::Ctrl('K') => Cmd::Kill(Movement::EndOfLine),
+            KeyPress::Ctrl('K') => {
+                if positive {
+                    Cmd::Kill(Movement::EndOfLine)
+                } else {
+                    Cmd::Kill(Movement::BeginningOfLine)
+                }
+            }
             KeyPress::Ctrl('L') => Cmd::ClearScreen,
             KeyPress::Ctrl('N') => Cmd::NextHistory,
             KeyPress::Ctrl('P') => Cmd::PreviousHistory,
@@ -511,7 +517,13 @@ impl EditState {
             KeyPress::Ctrl('R') => Cmd::ReverseSearchHistory,
             KeyPress::Ctrl('S') => Cmd::ForwardSearchHistory, // most terminals override Ctrl+S to suspend execution
             KeyPress::Ctrl('T') => Cmd::TransposeChars,
-            KeyPress::Ctrl('U') => Cmd::Kill(Movement::BeginningOfLine),
+            KeyPress::Ctrl('U') => {
+                if positive {
+                Cmd::Kill(Movement::BeginningOfLine)
+                } else {
+                Cmd::Kill(Movement::EndOfLine)
+                }
+            },
             KeyPress::Ctrl('Q') | // most terminals override Ctrl+Q to resume execution
             KeyPress::Ctrl('V') => Cmd::QuotedInsert,
             KeyPress::Ctrl('W') => {