Я хотел добиться в основном того же, но для определенных символов в программном коде. Символы могут появляться в любом месте строки, но я хотел, чтобы они (и все справа от них) появлялись в определенном столбце. Например:
refclkp : in std_logic;
refclkn : in std_logic;
hdinp_ch0 : in std_logic;
hdinn_ch0 : in std_logic;
hdoutp_ch0 : out std_logic;
Я хотел, чтобы это выглядело так:
refclkp : in std_logic;
refclkn : in std_logic;
hdinp_ch0 : in std_logic;
hdinn_ch0 : in std_logic;
hdoutp_ch0 : out std_logic;
Т.е. со всеми :
по конкретному столбцу (столбец 30 в данном случае). Вышеупомянутое не имело смысла для меня (это может работать, но я не использую визуальные вещи), но это дало мне ключ к решению:
:map H $?:<ctrl+Enter>Di <ctrl+Esc>029lP:s/\s*$//<ctrl+Enter>
Вы делаете биты <ctrl+Enter>
и <ctrl+Esc>
, удерживая Ctrl+Q и затем нажимая Enter или Esc. Появляется в команде как ^M
или ^[
. Выше по существу делает это:
- Перейти в конец строки (
$
)
- посмотрите назад для первого ":" (
?:<ctrl+Enter>
)
- Удалите все с этой точки до конца строки (
D
)
- Вставьте 30 пробелов - так что я знаю, что достаточно пробелов, чтобы я мог перейти к столбцу 30 (
i <ctrl+Esc>
)
- Перейти к столбцу 30 - не уверен, почему мне нужно использовать «29» здесь, должно быть «функция» (
029l
)
- Вставьте удаленный текст из шага 3 (
P
)
- Очистите, удалив все конечные пробелы, созданные на шаге 4 (
:s/\s*$//<ctrl+Enter>
)
Я создал это как отображение, поэтому все, что мне нужно сейчас сделать, это нажать H, и текущая строка будет изменена!