diff --git a/keymap/vim.js b/keymap/vim.js
index c3375a743c88e1caf8342a1c9686a22f62438d53..2763b5134f4ba3c52cd34f95b60632e00471028b 100644
--- a/keymap/vim.js
+++ b/keymap/vim.js
@@ -2188,7 +2188,9 @@
       enterMacroRecordMode: function(cm, actionArgs) {
         var macroModeState = vimGlobalState.macroModeState;
         var registerName = actionArgs.selectedCharacter;
-        macroModeState.enterMacroRecordMode(cm, registerName);
+        if (vimGlobalState.registerController.isValidRegister(registerName)) {
+          macroModeState.enterMacroRecordMode(cm, registerName);
+        }
       },
       toggleOverwrite: function(cm) {
         if (!cm.state.overwrite) {
diff --git a/test/vim_test.js b/test/vim_test.js
index 7d8f16fe83f78939a1e0c74d85a976c2cb038112..d107e82cac9214b1548cef99a974f2ad1e52cebe 100644
--- a/test/vim_test.js
+++ b/test/vim_test.js
@@ -2582,6 +2582,14 @@ testVim('macro_search_2f', function(cm, vim, helpers) {
   helpers.doKeys('@', 'a');
   helpers.assertCursorAt(0,9);
 }, { value: 'The quick brown fox jumped over the lazy dog.'});
+testVim('macro_yank_tick', function(cm, vim, helpers) {
+  cm.setCursor(0, 0);
+  // Start recording a macro into the \' register.
+  helpers.doKeys('q', '\'');
+  helpers.doKeys('y', '<Right>', '<Right>', '<Right>', '<Right>', 'p');
+  helpers.assertCursorAt(0,4);
+  eq('the tex parrot', cm.getValue());
+}, { value: 'the ex parrot'});
 testVim('yank_register', function(cm, vim, helpers) {
   cm.setCursor(0, 0);
   helpers.doKeys('"', 'a', 'y', 'y');