2017-01-31 16 views
0

Я использую vi в качестве редактора по выбору для программирования Fortran. Иногда я хочу заменить 6-й и 80-й символы определенной строки &. Например, в Фортране:Как поместить символ «&» в 6-й столбец и 80-й столбец в vi

 Program Test 
     real*8 x 
c 
     write(*,*) 
    1 'Hello World' 
    2 , x 
     end 

символы 1 и 2 предполагается быть заменены & не весь файл, а на «текущей строки». Могу ли я создать функцию или «горячую клавишу» для этого? Кроме того, я хочу поставить еще & в 80-й столбец.

+0

Вы имеете в виду 7-ю колонку? «1» и «2» выше находятся в столбце 7 (vim, как и большинство редакторов, подсчитывает столбцы, начинающиеся с 1). –

+0

О, это проблема форматирования во время типизации вопроса. Я имею в виду, что 1 и 2 должны быть в 6-м – wander95

ответ

1

Два подхода

:s/\v(.){79}\zs./\& 

Или

80|r& 

Где 80| переходит на 80-й колонке.

Большинство будет хранить эту последнюю возможность в макрос. Он также может быть сохранен в картографии (:nnoremap µ 80|r&).

Однако, если их не так много, вам нужно либо закончить линию, либо, проще говоря, с опцией 'virtualedit' установить на all.

+0

, хотя это легко, можно ли назвать '80 | r &' более читаемым именем в vimrc или что-то еще? – wander95

+0

80 | перескакивает до конца строки, которая находится перед столбцом 80 – wander95

+0

Вам решать, что вы будете помнить. В моем ответе я предложил 'μ'. Это может быть то, что вы хотите. Что касается конца строки, самым простым решением является ': set virtualedit = all'. В противном случае нам придется добавить 'repeat ('', 80-col ('$')). '&'' Или заменить его в зависимости от значения 'col ('$')'. –

0

Вы можете перейти в колонку с | и заменить один символ на r. Предположим, вы хотите изменить столбец «6» на «&». Вы можете сделать 6|r&.

Вы можете сделать то же самое, чтобы изменить 80-й столбец на '&', учитывая, что существует 80-й столбец. Я бы рекомендовал вместо этого использовать «A &» (добавление «&» добавить конец строки).

Для быстрой функции в .vimrc:...

nnoremap <silent> <F8> 06 r&3<ESC>A &<ESC> 

(Карты F8 горячую клавиша «0» идет в начало строки Затем 6 пространства Заменить символ под курсором с «&», чтобы закончить. первая часть. «А» добавить «&» в конце и еще раз).

Затем просто нажмите F8 на нужную линию.

+0

do Я печатаю '<-E-S-C->' или ключ перехода? – wander95

+0

Вам нужно «» (все это) в вашем .vimrc.«<>» Указывает vim использовать конкретный ключ при выполнении функции. Вы можете вставить (или скопировать пасту) всю строку в .vimrc. –