Я не могу найти решение короткий ВИМ стиль для этого. Вот почему вот сценарий vim.
function! s:escape(line)
return escape(a:line, '[]*')
endfunction
function! s:highlight_similar(pattern, extraction)
let sorted = sort(getline(1, '$'))
let matched_lines = {}
let pattern = '^\s*\(\w\+\)\s\+\(\w\+\).*$'
let previous_part = ''
let previous_line = ''
for i in range(0, line('$') - 1)
let line = sorted[i]
if line !~ a:pattern
continue
endif
let part = substitute(line, a:pattern, a:extraction, '')
if empty(part)
continue
endif
if part == previous_part
let matched_lines[s:escape(line)] = i
let matched_lines[s:escape(previous_line)] = i
else
let previous_part = part
let previous_line = line
endif
endfor
let @/ = join(keys(matched_lines), '\|')
endfunction
И команды определение, которое должно быть в том же файле
command! -nargs=0 HighlightTwoWords
\call <SID>highlight_similar('^\s*\(\w\+\)\s\+\(\w\+\).*$', '\1 \2')
command! -nargs=0 HighlightTwoRows
\call <SID>highlight_similar('^\s*\(.*\)\s*$', '\1')
И затем после использования команды «HighlightTwoWords» вы будете иметь возможность использовать «п» и «N», чтобы перемещаться по линии вы вас интересует. Или, используя команду «hls [earch]», вы можете выделить эти строки.
Спасибо за ваш ответ! Матч: sort/^ \ s * \ zs \ w \ + \ s \ + \ w \ +/r почти идеально. Знаете ли вы, как игнорировать совпадения, которые начинаются с if и заканчиваются на endif? –
Мои комментарии кажутся проблемой в моем vimrc по адресу http://dpaste.com/35562/. Мне нужно как-то связать их с соответствующими кодами. –