2015-04-03 5 views
1

Я хочу сделать глобальную замену в диапазоне строк в Vim:Vim regex - шестнадцатеричный символ на замену?

:s/pattern/replacement/g 

The «шаблон» является один символ в наборе, например, [BEINS], а «замена» - один символ. Однако морщина заключается в том, что единственный символ предоставляется мне как двухзначное шестнадцатеричное представление символа в ASCII/Unicode. Очевидно, что я мог бы найти шестнадцатеричную диаграмму ASCII, чтобы увидеть, что, например, 5F является символом подчеркивания, тогда я мог бы ввести _ в заменяющей части регулярного выражения.

Есть ли способ вместо этого ввести шестерку в правой части регулярного выражения?

Вещи, которые я пробовал, что не работает, включают:

:%s/[BEINS]/\x5F/g 
:%s/[BEINS]/\\x5F/g 

На моей Linux рабочей станции можно ввести Ctrl - сдвиг - U следует шестнадцатеричный код, затем Enter но Мне было интересно, существует ли какой-либо Vim-способ поместить шестнадцатеричный код в замещающую часть регулярного выражения.

ответ

4

Вы можете попробовать использовать Ctrl + v

:%s/[BEINS]/<ctrl>-vx5F/gc 

Вот ВИМ страница помощи на Ctrl + v:

С CTRL + V в десятичной, восьмеричной или шестнадцатеричной l значение символа может быть введено . Таким образом, вы можете ввести любой символ, кроме разрыва строки (, значение 10). Существует пять способов ввести значение символа:

first char  mode   max nr of chars max value 
(none)   decimal   3   255 
o or O   octal    3   377  (255) 
x or X   hexadecimal  2   ff  (255) 
u    hexadecimal  4   ffff  (65535) 
U    hexadecimal  8   7fffffff (2147483647) 
Смежные вопросы