Можно ли захватить или удалить ли между круглыми скобками в vi/vim?

Используйте TThread.Synchronize и передайте ему другую анонимную функцию. Затем вы можете вызвать updateui в анонимной функции:

TThread.CreateAnonymousThread(
  procedure
  begin
    // do whatever you want

    TThread.Synchronize(nil,
      procedure
      begin
        updateui();
      end);

   // do something more if you want
  end
).Start();

Синхронизация обычно дорога (относительно производительности). Только делайте это, когда они действительно необходимы. Вы можете увеличить производительность, если вы расширяете updateui -метод, чтобы уменьшить операции рисования.

Это возможно для вызова SendMessage с помощью WM_SETREDRAW :

procedure StopDrawing(const Handle: HWND);
const
  cnStopDrawing = 0;
begin
  SendMessage(Handle, WM_SETREDRAW, cnStopDrawing, 0);
end;

procedure ContinueDrawing(const Handle: HWND);
const
  cnStartDrawing = 0;
begin
  SendMessage(Handle, WM_SETREDRAW, cnStartDrawing, 0);

  // manually trigger the first draw of the window
  RedrawWindow(Handle, nil, 0,
    RDW_ERASE or RDW_FRAME or RDW_INVALIDATE or RDW_ALLCHILDREN);
end;

Добавить вызов StopDrawing () в верхней части updateui () и вызов ContinueDrawing () в конце updateui () . Вызов ContinueDrawing () должен быть в finally-block . Это гарантирует, что окно будет окрашено даже после возникновения исключения во время выполнения updateui.

Пример:

procedure TMain.updateui;
begin
  try
    StopDrawing(Handle);

    Panel3.Show;

    Label57.Caption := 'Change 1';
    Label59.Caption := 'Change 2';

    // ...
  finally
    // Code under finally gets executed even if there was an error
    ContinueDrawing(Handle);
  end;
end;

117
задан Nathan Fellman 24 June 2009 в 13:53
поделиться

4 ответа

Различные Движения: %

% команда переходит к соответствию объекта под курсором. Расположите курсор на открытие (или закрытие) paren и используйте y% для того, чтобы дергать или d% для удаления всего от курсора до соответствия paren.

Это работает, потому что % "команда движения", таким образом, она может использоваться где угодно, энергия ожидает такую команду. От [1 120] :help y :

["x]y{motion}       Yank {motion} text [into register x].  When no
                    characters are to be yanked (e.g., "y0" in column 1),
                    this is an error when 'cpoptions' includes the 'E'
                    flag.

По умолчанию, "объект" включает скобки, фигурные скобки, parens, комментарии C-стиля и различные операторы предварительного компилятора (#ifdef, и т.д.).

существует плагин для "расширенного %, соответствующего", который можно найти на домашняя страница Vim .

можно прочитать документацию относительно [1 110] и связанные команды движения путем ввода :help various-motions в командном режиме.

объектный выбор

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

Для решения определенной проблемы Вы сделали бы следующее:

printf("%3.0f\t%6.1f\n", fahr, ((5.0/9.0) * (fahr-32)));
                                   ^

Скажем, Ваш курсор расположен в [1 112]. Введите следующую последовательность для выбора части, которую Вы ищете:

v2a)

Первый v переходит к режиму Visual, тогда Вы определяете, что хотите пойти 2 уровни parens. Наконец эти a) выбирает "блок". После этого можно использовать d или x для удаления, и т.д.

, Если Вы не хотите включать внешний parens, можно использовать "внутренний блок" вместо этого:

v2i)

См. :help object-select для полного списка связанных команд.

160
ответ дан 24 November 2019 в 02:00
поделиться

Что относительно dib или di( .

Это удалит внутренний (...) блок, где курсор.

я люблю текстовый объект движения и выборы!

195
ответ дан CMS 24 November 2019 в 02:00
поделиться

Можно использовать d % для удаления и y % для того, чтобы дергать.

16
ответ дан Jonathan Leffler 24 November 2019 в 02:00
поделиться

Установите свой курсор на первую круглую скобку, затем нажмите v%y или v%d.

10
ответ дан ib. 24 November 2019 в 02:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: