diff --git a/bin/runInTerminal.command b/bin/runInTerminal.command
index 89195e3d102ef90dad3ad80935996f845646c8c8..372820c1b110491dff57148375d717eb99a5ba98 100755
--- a/bin/runInTerminal.command
+++ b/bin/runInTerminal.command
@@ -1,7 +1,11 @@
 #!/bin/bash
 osascript >/dev/null 2>&1 <<EOF
     tell application "Terminal"
-    activate
-    do script with command "$@; exit"
+        do script "$1 $2 +$3 +\"normal $4|\"; exit"
+        set currentTab to the result
+        set number of columns of currentTab to $5
+        set number of rows of currentTab to $6
+        set position of windows whose tabs contains currentTab to {$7, $8}
+        activate
     end tell
 EOF
diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp
index 19bbd6fc631cc32030c2bbb5c4f7b69ebc90db43..aa15e462f86c9c00a14619e11a23a8855ef0030e 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.cpp
+++ b/src/plugins/coreplugin/editormanager/editormanager.cpp
@@ -345,7 +345,7 @@ EditorManager::EditorManager(ICore *core, QWidget *parent) :
 
 #ifdef Q_OS_MAC
     m_d->m_externalEditor = m_d->m_core->resourcePath()
-        +QLatin1String("/runInTerminal.command vi %f +%l");
+        +QLatin1String("/runInTerminal.command vi %f %l %c %W %H %x %y");
 #elif defined(Q_OS_UNIX)
     m_d->m_externalEditor = QLatin1String("xterm -geom %Wx%H+%x+%y -e vi %f +%l +\"normal %c|\"");
 #endif