Я хотел бы узнать, как выбрать все строки, которые начинаются с использования, внутри текущего файла php, а затем отсортировать их. До сих пор: я работал с командой: sort. Также … Я переназначил команду сортировки:
map <Leader>s :sort<CR>
Но я хотел бы создать сложную функцию, которая выбирает все операторы использования внутри php-файла, а после этого сортировать все эти строки.
Я умею сортировать. Но я понятия не имею, как выбрать произвольную группу строк с помощью VimL
function! SortUseStatements()
let g:select='/^use .*$<CR>V' !?!?!?!?!?!?!?!?!?
exec g:select
endfunction
map <F2> :call SortUseStatements()<CR>
Я знаю, что хочу выполнять такие команды, как:
Это можно сделать аккуратно с :help cmdline-ranges
,
Вы хотите, чтобы поиск начинался с начала файла, поэтому ваш начальный адрес 0
(начать до первой строки). Затем найдите первую строку, начинающуюся с use
, Когда разделены с ;
позиция курсора будет установлена на эту строку перед интерпретацией спецификатора следующей строки. Затем вам нужно перейти к последнему из use
заявления (начиная с первого use
линия, поэтому снова разделена ;
). Сначала я выбираю простой способ, который ищет пустую строку, а затем выбирает предыдущую. С :print
Вы можете проверить, что диапазон в порядке, прежде чем заменить команду на :sort
:
:0;/^use /;/^$/-1 print
Если после строки нет use
блок, вы должны использовать более сложный шаблон для любая строка не начинается с use
:
:0;/^use /;/^\(use \)\@!/-1 print
Для чего-то более сложного, одного :range
наверное не подойдет. Затем я бы определил номера начальной и конечной строк отдельно, используя let lnum = search(...)
с соответствующими шаблонами. Затем вы можете вставить числа в команду Ex через :execute startLnum . ',' . endLnum . 'sort'
Других решений пока нет …