diff --git a/.changeset/neat-flies-eat.md b/.changeset/neat-flies-eat.md
new file mode 100644
index 000000000..1debb9bc1
--- /dev/null
+++ b/.changeset/neat-flies-eat.md
@@ -0,0 +1,5 @@
+---
+'slate': patch
+---
+
+Fix cursor not correct issue after insert multiple nodes with `Transform.insertNodes`
diff --git a/packages/slate/src/transforms/node.ts b/packages/slate/src/transforms/node.ts
index 4bd4ddc3d..00567dfd7 100644
--- a/packages/slate/src/transforms/node.ts
+++ b/packages/slate/src/transforms/node.ts
@@ -228,7 +228,9 @@ export const NodeTransforms: NodeTransforms = {
const path = parentPath.concat(index)
index++
editor.apply({ type: 'insert_node', path, node })
+ at = Path.next(at)
}
+ at = Path.previous(at)
if (select) {
const point = Editor.end(editor, at)
diff --git a/packages/slate/test/transforms/insertNodes/path/multiple-inline-not-end.tsx b/packages/slate/test/transforms/insertNodes/path/multiple-inline-not-end.tsx
new file mode 100644
index 000000000..ccbdb8f30
--- /dev/null
+++ b/packages/slate/test/transforms/insertNodes/path/multiple-inline-not-end.tsx
@@ -0,0 +1,34 @@
+/** @jsx jsx */
+import { Transforms } from 'slate'
+import { jsx } from '../../..'
+
+export const input = (
+
+
+ hel
+
+ lo
+
+
+)
+export const run = editor => {
+ Transforms.insertNodes(editor, [
+
+
+ ,
+ world,
+ ])
+}
+export const output = (
+
+
+ hel
+
+
+
+ world
+
+ lo
+
+
+)
diff --git a/packages/slate/test/transforms/insertNodes/path/multiple-inline.tsx b/packages/slate/test/transforms/insertNodes/path/multiple-inline.tsx
new file mode 100644
index 000000000..e06d71df5
--- /dev/null
+++ b/packages/slate/test/transforms/insertNodes/path/multiple-inline.tsx
@@ -0,0 +1,32 @@
+/** @jsx jsx */
+import { Transforms } from 'slate'
+import { jsx } from '../../..'
+
+export const input = (
+
+
+ hello
+
+
+
+)
+export const run = editor => {
+ Transforms.insertNodes(editor, [
+
+
+ ,
+ world,
+ ])
+}
+export const output = (
+
+
+ hello
+
+
+
+ world
+
+
+
+)