Можно получить доступ к группам фиксации как это:
var myString = "something format_abc";
var myRegexp = /(?:^|\s)format_(.*?)(?:\s|$)/g;
var match = myRegexp.exec(myString);
console.log(match[1]); // abc
И если существует несколько соответствий, можно выполнить итерации по ним:
var myString = "something format_abc";
var myRegexp = /(?:^|\s)format_(.*?)(?:\s|$)/g;
match = myRegexp.exec(myString);
while (match != null) {
// matched text: match[0]
// match start: match.index
// capturing group n: match[n]
console.log(match[0])
match = myRegexp.exec(myString);
}
Включите опцию «вставить» (используя : установить пасту
), а затем нажмите dd i
на каждой строке, к которой вы хотите применить возврат. Это также работает, если вы удаляете несколько строк или даже весь файл.
Ключевым моментом здесь является то, что вы используете
в режиме вставки, чтобы «напечатать» содержимое регистра 1 (где только что были помещены удаленные строки), а опция «вставить» запрещает Vim использовать какие-либо сопоставления или сокращения.
Просто удалите все вхождения. ^ H (где. - интерпретация регулярного выражения.):
:s/.^H//g
(вставьте ^ H буквально, введя Ctrl-V Ctrl-H)
Это будет применяться к текущей строке. Используйте любой диапазон, который хотите, если хотите применить его к другим строкам.
После того, как вы сделали одну : s ...
команду, вы можете повторить ее в другой строке, просто набрав : sg
(вам нужно g в конце, чтобы повторно применить ко всем вхождениям в текущей строке).
Как насчет следующей функции? Я использовал \% x08 вместо ^ H, так как полученный код проще скопировать и вставить. Вы можете ввести его и использовать Ctrl - V Ctrl - H , если хотите, но я подумал, что \% x08 может быть проще. Это также пытается обработать обратное пространство в начале строки (оно просто удаляет их).
" Define a command to make it easier to use (default range is whole file)
command! -range=% ApplyBackspaces <line1>,<line2>call ApplyBackspaces()
" Function that does the work
function! ApplyBackspaces() range
" For each line in the selected lines
for index in range(a:firstline, a:lastline)
" Get the line as a string
let thisline = getline(index)
" Remove backspaces at the start of the line
let thisline = substitute(thisline, '^\%x08*', '', '')
" Repeatedly apply backspaces until there are none left
while thisline =~ '.\%x08'
" Substitute any character followed by backspace with nothing
let thisline = substitute(thisline, '.\%x08', '', 'g')
endwhile
" Remove any backspaces left at the start of the line
let thisline = substitute(thisline, '^\%x08*', '', '')
" Write the line back
call setline(index, thisline)
endfor
endfunction
Использование с:
" Whole file:
:ApplyBackspaces
" Whole file (explicitly requested):
:%ApplyBackspaces
" Visual range:
:'<,'>ApplyBackspaces
Для получения дополнительной информации см .:
:help command
:help command-range
:help function
:help function-range-example
:help substitute()
:help =~
:help \%x
Редактировать
Обратите внимание, что если вы хотите работать с в одну строку, можно сделать что-то вроде этого:
" Define the command to default to the current line rather than the whole file
command! -range ApplyBackspaces <line1>,<line2>call ApplyBackspaces()
" Create a mapping so that pressing ,b in normal mode deals with the current line
nmap ,b :ApplyBackspaces<CR>
или просто:
nmap ,b :.ApplyBackspaces<CR>
Хорошо, вот простое решение.
Скопируйте этот код в файл с именем crush.c:
#include <stdio.h>
// crush out x^H sequences
// there was a program that did this, once
// cja, 16 nov 09
main()
{
int c, lc = 0;
while ((c = getchar()) != EOF) {
if (c == '\x08')
lc = '\0';
else {
if (lc)
putchar(lc);
lc = c;
}
}
if (lc)
putchar(lc);
}
Скомпилируйте этот код с помощью вашего любимого компилятора:
gcc crush.c -o crush
Затем используйте его так, чтобы избавиться от этих надоедливых последовательностей:
./crush <infilename >outfilename
Или используйте его в конвейере («скажем» - это приложение для преобразования речи в текст на Mac)
man date | ./crush | say
Вы можете скопировать crush в свой любимый исполняемый каталог (/ usr / local / bin или что-то подобное), а затем сослаться на него следующим образом
man date | crush | say
Можно поместить LDAP-сервер в аргумент пути к StartEntry, чтобы «LDAP ://» + ldap Server + ldap Query.
Если необходимо выполнить аутентификацию
, используйте элемент (String path, String userId, String password). -121--1206781-Да, это единственное решение. Каждый компилятор создает DCU и BPL, специфичные для его собственной версии. Единственное исключение, о котором я знаю, это то, что Delphi 2006 и 2007 имеют одинаковый формат.
-121--1906192-Я погуглил это, пытаясь вспомнить команду, которую я использовал до этого, чтобы «применить» backspaces, а затем я запомнил его: col -b - вот manpage . (Он делает немного больше и происходит от BSD или более точно AT & T UNIX, как говорится в manpage, поэтому, если вы находитесь в Linux, вам может потребоваться установить дополнительный пакет, на debian его в bsdmainutils .)