diff --git a/src/channel.c b/src/channel.c
index 94a762c..5a7e2a7 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -1300,11 +1300,16 @@
 	return;
     memcpy((char *)p, (char *)line, len);
 
-    for (i = 0; i < len; ++i)
-	if (p[i] == NL)
-	    p[i] = NUL;
+    if (channel->ch_write_text_mode)
+	p[len] = CAR;
+    else
+    {
+	for (i = 0; i < len; ++i)
+	    if (p[i] == NL)
+		p[i] = NUL;
 
-    p[len] = NL;
+	p[len] = NL;
+    }
     p[len + 1] = NUL;
     channel_send(channel, PART_IN, p, len + 1, "write_buf_line");
     vim_free(p);
diff --git a/src/structs.h b/src/structs.h
index 20b7ef8..6cfb5f2 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -1632,6 +1632,7 @@
     int		ch_last_msg_id;	/* ID of the last message */
 
     chanpart_T	ch_part[PART_COUNT]; /* info for socket, out, err and in */
+    int		ch_write_text_mode; /* write buffer lines with CR, not NL */
 
     char	*ch_hostname;	/* only for socket, allocated */
     int		ch_port;	/* only for socket */
diff --git a/src/terminal.c b/src/terminal.c
index 0a3e1b7..55575d1 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -496,6 +496,24 @@
 	    opt.jo_term_cols = atoi((char *)ep + 1);
 	    p = skiptowhite(cmd);
 	}
+	else if ((int)(p - cmd) == 3 && STRNICMP(cmd, "eof", 3) == 0
+								 && ep != NULL)
+	{
+# ifdef WIN3264
+	    char_u *buf = NULL;
+	    char_u *keys;
+
+	    p = skiptowhite(cmd);
+	    *p = NUL;
+	    keys = replace_termcodes(ep + 1, &buf, TRUE, TRUE, TRUE);
+	    opt.jo_set2 |= JO2_EOF_CHARS;
+	    opt.jo_eof_chars = vim_strsave(keys);
+	    vim_free(buf);
+	    *p = ' ';
+# else
+	    p = skiptowhite(cmd);
+# endif
+	}
 	else
 	{
 	    if (*p)
@@ -3069,8 +3087,6 @@
     if (job == NULL)
 	goto failed;
 
-    /* TODO: when all lines are written and the fd is closed, the command
-     * doesn't get EOF and hangs. */
     if (opt->jo_set & JO_IN_BUF)
 	job->jv_in_buf = buflist_findnr(opt->jo_io_buf[PART_IN]);
 
@@ -3092,6 +3108,9 @@
 	    GENERIC_READ, 0, NULL,
 	    OPEN_EXISTING, 0, NULL));
 
+    /* Write lines with CR instead of NL. */
+    channel->ch_write_text_mode = TRUE;
+
     jo = CreateJobObject(NULL, NULL);
     if (jo == NULL)
 	goto failed;
@@ -3208,8 +3227,15 @@
 
     for (term = first_term; term != NULL; term = term->tl_next)
 	if (term->tl_job == ch->ch_job)
-	    channel_send(ch, PART_IN, term->tl_eof_chars != NULL
-			 ? term->tl_eof_chars : (char_u *)"\004\r\n", 3, NULL);
+	{
+	    if (term->tl_eof_chars != NULL)
+		channel_send(ch, PART_IN, term->tl_eof_chars,
+					(int)STRLEN(term->tl_eof_chars), NULL);
+	    else
+		/* Default: CTRL-D */
+		channel_send(ch, PART_IN, (char_u *)"\004", 1, NULL);
+	    channel_send(ch, PART_IN, (char_u *)"\r", 1, NULL);
+	}
 }
 
 # else
diff --git a/src/version.c b/src/version.c
index b76c2a9..520d46b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1035,
+/**/
     1034,
 /**/
     1033,
