diff --git a/keymap/vim.js b/keymap/vim.js
index 0310baded7d2571bae6c30d8a41111ec8b5114d3..336f1a7cc0cca25b472de7ac9f0df5eb82b57d7d 100644
--- a/keymap/vim.js
+++ b/keymap/vim.js
@@ -1835,16 +1835,16 @@
         var ch = cursor.ch;
         var lineText = cm.getLine(line);
         var symbol;
-        do {
-          symbol = lineText.charAt(ch++);
+        for (; ch < lineText.length; ch++) {
+          symbol = lineText.charAt(ch);
           if (symbol && isMatchableSymbol(symbol)) {
-            var style = cm.getTokenTypeAt(Pos(line, ch));
+            var style = cm.getTokenTypeAt(Pos(line, ch + 1));
             if (style !== "string" && style !== "comment") {
               break;
             }
           }
-        } while (symbol);
-        if (symbol) {
+        }
+        if (ch < lineText.length) {
           var matched = cm.findMatchingBracket(Pos(line, ch));
           return matched.to;
         } else {