diff --git a/IPython/terminal/ptshell.py b/IPython/terminal/ptshell.py
index 8c41af7..85c3a89 100644
--- a/IPython/terminal/ptshell.py
+++ b/IPython/terminal/ptshell.py
@@ -14,7 +14,9 @@ from IPython.utils.process import abbrev_cwd
 from traitlets import Bool, Unicode, Dict, Integer, observe, Instance, Type, default
 
 from prompt_toolkit.enums import DEFAULT_BUFFER, SEARCH_BUFFER, EditingMode
-from prompt_toolkit.filters import HasFocus, HasSelection, Condition, ViInsertMode, EmacsInsertMode, IsDone, HasCompletions
+from prompt_toolkit.filters import (HasFocus, HasSelection, Condition,
+    ViInsertMode, EmacsInsertMode, IsDone, HasCompletions)
+from prompt_toolkit.filters.cli import ViMode
 from prompt_toolkit.history import InMemoryHistory
 from prompt_toolkit.shortcuts import create_prompt_application, create_eventloop, create_prompt_layout
 from prompt_toolkit.interface import CommandLineInterface
@@ -271,6 +273,23 @@ class TerminalInteractiveShell(InteractiveShell):
         def _indent_buffer(event):
             event.current_buffer.insert_text(' ' * 4)
 
+        if sys.platform == 'win32':
+            from IPython.lib.clipboard import (ClipboardEmpty,
+                           win32_clipboard_get, tkinter_clipboard_get)
+            @kbmanager.registry.add_binding(Keys.ControlV,
+                                filter=(HasFocus(DEFAULT_BUFFER) & ~ViMode()))
+            def _paste(event):
+                try:
+                    text = win32_clipboard_get()
+                except TryNext:
+                    try:
+                        text = tkinter_clipboard_get()
+                    except (TryNext, ClipboardEmpty):
+                        return
+                except ClipboardEmpty:
+                    return
+                event.current_buffer.insert_text(text.replace('\t', ' ' * 4))
+
         # Pre-populate history from IPython's history database
         history = InMemoryHistory()
         last_cell = u""