Vim Codewalk через - PullRequest
       1

Vim Codewalk через

0 голосов
/ 07 декабря 2010

Следующий код был взят из этого блога

function! Privatize()
  let priorMethod = PriorMethodDefinition()
  exec "normal iprivate :" . priorMethod  . "\<Esc>=="
endfunction

function! PriorMethodDefinition()
  let lineNumber = search('def', 'bn')
  let line       = getline(lineNumber)
  if line == 0
    echo "No prior method definition found"
  endif
  return matchlist(line, 'def \(\w\+\).*')[1]
endfunction

map <Leader>p :call Privatize()<CR>

Я пытался, но мне не удалось понять метод PriorMethodDefinition.Может ли кто-нибудь провести меня через этот код?

1 Ответ

1 голос
/ 07 декабря 2010

PriorMethodDefinition возвращает имя первого определения метода над курсором.

Это делается путем search обратного хода для строки, содержащей текст 'def'.Функция поиска возвращает номер строки, а getline используется для извлечения содержимого этой строки.

Функция проверяет, что она нашла правильную строку, перед использованием регулярного выражения для получения имени методаи верните его.

Вы можете прочитать больше об этих функциях, если вам интересно узнать о специфике - см .:

:help search
:help getline
:help matchlist

Редактировать : вы также можете прочитать ошаблон регулярного выражения

:help pattern

Но сначала я нашел его немного запутанным, поэтому позвольте мне немного его объяснить.Вот используемое выражение:

'def \(\w\+\).*'

При этом будет выполнен поиск любого текста, соответствующего следующему шаблону: «текст def, за которым следует один или несколько символов« слова »\w\+, за которыми следует ноль или более символов .*».Часть, соответствующая символам слова, помещается в группу (или атом), обозначенную экранированными паренами \( & \).Более подробную информацию об определениях слов и т. Д. Можно найти в приведенной выше ссылке справки.

Функция matchlist возвращает список совпадений, первый из которых [0] - полный текст, соответствующий регулярному выражению,с последующим соответствием (то есть наша группа).Мы заинтересованы в первом подобном совпадении, следовательно, [1].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...