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!