TL; DR :: :bn et al. always cycle through all buffers,: :n , etc., depend on how the buffers were created.
Explanation
:n abbreviated for :next , which moves in the argument list (which you can view by doing :args )
:bn abbreviated for :bnext , which moves in the buffer list
Opening a file with :sp foo does not change the argument list, but adds a buffer and therefore does not change the behavior of :n , but affects :bn .
On the other hand, if you open a new file with :n foo , which replaces the argument list (also changing the behavior of :n et al., But not that of :bn , etc.).
Session Example:
$ vim /tmp/foo /tmp/bar :args [foo] bar :buffers 1 %a "foo" line 1 2 "bar" line 0
Here the list of buffer and arguments matches
:sp /tmp/sna :args [foo] bar :buffers 1 #a "foo" line 0 2 "bar" line 0 3 %a "sna" line 1
Now there is a new buffer, but the list of arguments is the same
:n /tmp/test /tmp/baz :args [test] baz :buffers 1 a "foo" line 0 2 "bar" line 0 3
And now the argument list has been replaced, and the buffer list has been expanded.
drRobertz
source share