There's a reason why wildcard/selective[1] imports are favored in Nim. It's because of the uniform function call syntax[2]. In short, this:
split("a string", " ")
is
exactly the same thing as this:
"a string".split(" ")
`split` here is a normal function, not any kind of method. This means that you can chain normal functions as if they were methods on objects:
"a string".split(" ").join("\n")
now, if you imported modules instead of functions themselves, how would that look like?
sequtils.join(strutils.split("a string", " ") "\n")
or, if you wanted to keep uniform call syntax, you'd have to invent some new syntax:
"a string".split<strutils>(" ").join<sequtils>("\n")
Which also doesn't look very appealing.
So, there are trade-offs here, and you obviously might not like the choices made by Nim, which is fine! But, there are reasons for the design decisions made by the language implementers, and they are almost never predicated on a single feature: all the features of a language interact with each other, sometimes in very strange and unpredictable ways. So it makes sense to consider the features your interested in the proper context :)
[1] `import modname` and `from modname import fun1, fun2`
[2] https://en.wikipedia.org/wiki/Uniform_Function_Call_Syntax