<p>I want to read line n1->n2 from file foo.c into the current buffer.</p>

<p>I tried: <code>147,227r /path/to/foo/foo.c</code></p>

<p>But I get: "E16: Invalid range", though I am certain that foo.c contains more than 1000 lines.</p>

The {range} refers to the destination in the current file, not the range of lines in the source file.
After some experimentation, it seems
```
```
:147,227r /path/to/foo/foo.c
```
```
means
insert the contents of
```
/path/to/foo/foo.c
```
after line 227 in this file.
i.e.: it ignores the 147.