about summary refs log tree commit diff
path: root/Functions/Zle/edit-command-line
diff options
context:
space:
mode:
Diffstat (limited to 'Functions/Zle/edit-command-line')
-rw-r--r--Functions/Zle/edit-command-line9
1 files changed, 6 insertions, 3 deletions
diff --git a/Functions/Zle/edit-command-line b/Functions/Zle/edit-command-line
index ab2134caf..89ce6741b 100644
--- a/Functions/Zle/edit-command-line
+++ b/Functions/Zle/edit-command-line
@@ -3,15 +3,18 @@
 #   autoload edit-command-line
 #   zle -N edit-command-line
 #   bindkey -M vicmd v edit-command-line
-# will give ksh-like behaviour for that key.
+# will give ksh-like behaviour for that key,
+# except that it will handle multi-line buffers properly.
 
 local tmpfile=${TMPPREFIX:-/tmp/zsh}ecl$$
 
-print -R - "$BUFFER" >$tmpfile
+print -R - "$PREBUFFER$BUFFER" >$tmpfile
 exec </dev/tty
 ${VISUAL:-${EDITOR:-vi}} $tmpfile
-BUFFER="$(<$tmpfile)"
+zle kill-buffer
+BUFFER=${"$(<$tmpfile)"/$PREBUFFER/}
 CURSOR=$#BUFFER
 
 command rm -f $tmpfile
 zle redisplay
+