2015-11-06 2 views
0

Я пытаюсь написать команду в Vim, которая может удалить 9-й и 11-й символы в третьей строке. Я сделал это 3s/.{9,11}//, но это не сработало. Было бы признательно сделать это с вашими предложениями. Вот пример. У меня есть три линииКоманда для замены n-го символа в vim

три метра над уровнем моря

три метра ниже моря

нужна помощь в Vim

Так что я хочу, чтобы удалить 9-й символ в третьей линии, является буквой «e» в слове «некоторый» и 11-й символ, который является буквой «h» в слове «помощь».

+1

для Vim, многие из регулярных выражений O для каждого элемента требуется обратный слэш. И% c - столбец совпадений op. '3s/\% 9c .//' заменит любой символ в столбце 9 ничем. –

+0

Вы также можете объединить замены. В этом случае позиция 11 упадет до 10 после первого изменения, поэтому ': 3s/\% 9c .// | s/\% 10c .//' –

+0

это классное решение! Как я могу выполнить эту команду дважды? Я имею в виду, что я хочу заменить любого символа в столбце 9 и в столбце 11 в одной команде. – fuser

ответ

2

Переехал комментарий к ответу

Для Vim, многие из регулярных выражений событий требуют обратного слеш. % c - совпадение столбцов op. Таким образом,

:3s/\%9c.// 

заменит символ «любой символ» в положении 9 ничем. Вы также можете объединять замены, но вещи будут меняться между каждым выражением. В этом случае, после удаления колонки 9, 11 (далее 'ч' в помощь) будет фактически в положении 10.

:3s/\%9c.//|s/\%10c.// 
4

только на 3-й линии:

:3norm! 9|x10|x 

или

:norm! 3G9|x10|x 

Нанести на весь буфер:

:%norm! 9|x10|x 
+0

Я получил ответ, но спасибо, Кент. И теперь, будучи старыми, ссылаясь на давно прошедшее телешоу вместе с моим часто используемым валидностью. Привет, Норм! –

Смежные вопросы