Você pode usar os seguintes mapeamentos para fazer isso. (Pode haver alguns casos de borda que eu não pensei)
nnoremap <leader>d m':exec '/\%' . col(".") . 'c\S'<CR>''n
nnoremap <leader>u m':exec '?\%' . col(".") . 'c\S'<CR>''n
A parte importante é :exec '/\%' . col(".") . 'c' Isso corresponde à coluna atual. Isso é obtido diretamente de :h %c . Então eu adicionei um \S para corresponder aos espaços não brancos. m' e '' é usado para armazenar a posição atual e restaurá-la em torno da instrução de execução. Isso é necessário, pois o uso da execução nos coloca no início da linha, o que poderia levar a um comportamento errático (ignorando muitas linhas em alguns casos). Depois de executar isso, vou para a primeira correspondência com n . A única diferença entre a versão para cima e para baixo é a direção em que procuramos / para baixo e ? para cima.
Se você quisesse fazer isso com colunas virtuais (ou seja, guias), substitua \%c por \%v .