Como aponta @JdeBP, é melhor usar o editor de fluxo sed ou talvez apenas cut :
$ uname -a | cut -d ' ' -f 1-3
OpenBSD box 6.0
Ou, se você cortar a edição completamente,
$ uname -snr
OpenBSD box 6.0
O problema com vi é que ele não tem um modo de edição de fluxo. O editor de linha ex tem um "modo em lote", mas isso raramente é usado e, como qualquer outro editor de linhas, não pode ser feito para "mover o cursor para frente e para trás" em uma linha.
sed é uma versão do editor de fluxo do editor de linhas ed , especificamente adaptada para aplicar scripts de edição aos fluxos. O editor vi é a versão do editor de tela do editor de linha ex , e o editor ex é um desenvolvimento adicional de ed .
A sequência de comandos vi 3f␣ passaria para a 3ª ␣ (espaço) em uma linha e a seguinte D excluiria o restante da linha. Prático, se você tiver recursos de edição de tela.
Em ed , sed e ex , você adiciona linhas, exclui linhas ou altera linhas, com "linhas" significando "linhas inteiras por vez". Para fazer o equivalente em ed ou ex , assumindo que estamos na linha correta no buffer, você diria ... bem, você teria que criar um padrão de expressão regular e uma string de substituição e usá-los com o comando s editing para alterar a linha, que neste caso não é trivial.
Com sed , isso tomaria a forma
$ uname -a | sed 's/PATTERN/REPLACEMENT/'