Eu queria alcançar basicamente o mesmo, mas para certos caracteres no código do software. Os caracteres podem aparecer em qualquer lugar na linha, mas eu queria que eles (e qualquer coisa à direita deles) aparecessem em uma coluna específica. Por exemplo:
refclkp : in std_logic;
refclkn : in std_logic;
hdinp_ch0 : in std_logic;
hdinn_ch0 : in std_logic;
hdoutp_ch0 : out std_logic;
Eu queria que fosse assim:
refclkp : in std_logic;
refclkn : in std_logic;
hdinp_ch0 : in std_logic;
hdinn_ch0 : in std_logic;
hdoutp_ch0 : out std_logic;
Ou seja. com todo o : em uma coluna específica (coluna 30 neste caso). O acima não fazia sentido para mim (pode funcionar, mas eu não uso o visual), mas me deu a pista para resolvê-lo:
:map H $?:<ctrl+Enter>Di <ctrl+Esc>029lP:s/\s*$//<ctrl+Enter>
Você faz o <ctrl+Enter> e <ctrl+Esc> bits segurando Ctrl + Q e pressionando Enter ou Esc . Aparece no comando como ^M ou ^[ . O acima essencialmente faz isso:
- Ir para o final da linha (
$ )
- olhar para trás no primeiro ":" (
?:<ctrl+Enter> )
- Exclua tudo deste ponto até o final da linha (
D )
- Insira 30 espaços - isso é para que eu saiba que há espaço em branco suficiente para permitir que eu pule para a coluna 30 (
i <ctrl+Esc> )
- Ir para a coluna 30 - não tenho certeza porque preciso usar '29' aqui, deve ser um 'recurso' (
029l )
- Cole o texto excluído da etapa 3 (
P )
- Limpe excluindo todos os espaços em branco finais criados na etapa 4 (
:s/\s*$//<ctrl+Enter> )
Eu criei isso como um mapeamento, então tudo que eu preciso fazer agora é H e a linha atual é modificada!