Я пытаюсь составить функцию сценария Vim, чтобы помочь отформатировать расположение левых фигурных скобок в C, как функциональные блоки.
function! FixLeftBraces()
"Set the cursor to the top of the file
call cursor(1,0)
while search(".\+{",'We') > 0
exe "normal i\n\e"
endwhile
endfunction
В этом примере моя цель - найти левую фигурную скобку, которая находится на той же строке, что и функция, и переместить ее на следующую строку. Параметры We
предотвращают перенос файла и перемещают курсор в конец выбранной области поиска соответственно.
Когда я выполняю поиск в Vim с использованием режима /
, вход в /.\+{
выполняет поиск и выделяет строки, которые, как я ожидаю, будут в исходном коде.
Например, строки C, такие как:
//is highlighted
int main(){
//is not highlighted
void otherFuncion()
{
Когда я использую созданный FixLeftBraces()
после его получения, он не работает. Он просто работает и ничего не делает.
Если я изменю поиск на search("{",'We')
, то FixLeftBraces()
запускается, но добавляет новую строку после каждой левой фигурной скобки. Поэтому я запутался, почему FixLeftBraces()
не работает с search(".\+{",'We')
.