diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java
index e4148a0..8972102 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java
@@ -297,8 +297,6 @@
       }
     });
     cm.addKeyMap(KeyMap.create()
-        .on("'j'", moveCursorDown(cm, 1))
-        .on("'k'", moveCursorDown(cm, -1))
         .on("'a'", openReplyBox())
         .on("'u'", upToChange())
         .on("'r'", toggleReviewed())
@@ -1076,14 +1074,6 @@
     };
   }
 
-  private Runnable moveCursorDown(final CodeMirror cm, final int numLines) {
-    return new Runnable() {
-      public void run() {
-        cm.moveCursorDown(numLines);
-      }
-    };
-  }
-
   private Runnable openReplyBox() {
     return new Runnable() {
       public void run() {
diff --git a/gerrit-gwtui/src/main/java/net/codemirror/lib/CodeMirror.java b/gerrit-gwtui/src/main/java/net/codemirror/lib/CodeMirror.java
index 2e552ef..4db989c 100644
--- a/gerrit-gwtui/src/main/java/net/codemirror/lib/CodeMirror.java
+++ b/gerrit-gwtui/src/main/java/net/codemirror/lib/CodeMirror.java
@@ -265,10 +265,6 @@
     return this.lineCount();
   }-*/;
 
-  public final native void moveCursorDown(int numLines) /*-{
-    this.moveV(numLines, "line");
-  }-*/;
-
   public final native Element getGutterElement() /*-{
     return this.getGutterElement();
   }-*/;
@@ -311,6 +307,10 @@
     $wnd.CodeMirror.Vim.handleKey(cm, key);
   }-*/;
 
+  public static final native void mapVimKey(String alias, String actual) /*-{
+    $wnd.CodeMirror.Vim.map(alias, actual);
+  }-*/;
+
   public final native boolean hasVimSearchHighlight() /*-{
     return this.state.vim && this.state.vim.searchState_ &&
         !!this.state.vim.searchState_.getOverlay();
diff --git a/gerrit-gwtui/src/main/java/net/codemirror/lib/Loader.java b/gerrit-gwtui/src/main/java/net/codemirror/lib/Loader.java
index 37adf1e..2a515b7 100644
--- a/gerrit-gwtui/src/main/java/net/codemirror/lib/Loader.java
+++ b/gerrit-gwtui/src/main/java/net/codemirror/lib/Loader.java
@@ -90,10 +90,14 @@
   private static void initVimKeys() {
     // TODO: Better custom keybindings, remove temporary navigation hacks.
     KeyMap km = CodeMirror.cloneKeyMap("vim");
-    for (String s : new String[] {"A", "C", "J", "K", "O", "R", "U", "Ctrl-C"}) {
+    for (String s : new String[] {"A", "C", "O", "R", "U", "Ctrl-C"}) {
       km.remove(s);
     }
     CodeMirror.addKeyMap("vim_ro", km);
+    CodeMirror.mapVimKey("j", "gj");
+    CodeMirror.mapVimKey("k", "gk");
+    CodeMirror.mapVimKey("Down", "gj");
+    CodeMirror.mapVimKey("Up", "gk");
   }
 
   private static void error(Exception e) {
