Как сделать отступ в блоке кода C в Vim? [Дубликат]

Строки в Java неизменяемы. Это означает, что всякий раз, когда вы пытаетесь изменить / изменить строку, вы получаете новый экземпляр. Вы не можете изменить исходную строку. Это сделано для того, чтобы эти экземпляры строк могли кэшироваться. Типичная программа содержит множество ссылок на строки и кеширование этих экземпляров, что может уменьшить объем памяти и увеличить производительность программы.

При использовании оператора == для сравнения строк вы не сравниваете содержимое строки , но фактически сравнивают адрес памяти. Если они равны, в противном случае они вернут true и false. Если значение равно в строке, сравнивает содержимое строки.

Итак, вопрос в том, что все строки кэшируются в системе, как получается == возвращает false, тогда как equals возвращает true? Ну, это возможно. Если вы создадите новую строку, например String str = new String("Testing"), вы создадите новую строку в кеше, даже если в кеше уже содержится строка с тем же содержимым. Короче говоря, "MyString" == new String("MyString") всегда будет возвращать false.

Java также говорит о функции intern (), которая может использоваться в строке, чтобы сделать ее частью кеша, поэтому "MyString" == new String("MyString").intern() вернет true.

Примечание: == оператор намного быстрее, чем равен только потому, что вы сравниваете два адреса памяти, но вы должны быть уверены, что код не создает новые экземпляры String в коде. В противном случае вы столкнетесь с ошибками.

13
задан Community 23 May 2017 в 12:33
поделиться

8 ответов

Я удивлен, что никто еще не придумал =%.
Удостоверяются, что Вы имеете :set cindent,
Место сами на одном из {} из Вашего блока, и просто совершаете нападки:

=%

Весь код в этом блоке будет правильно форматироваться.

37
ответ дан ib. 23 May 2017 в 22:33
поделиться
  • 1
    Выполнил его, и запросы идентичны. Когда я выполняю их в MySQL Workbench непосредственно, я получаю ожидаемые результаты. Это говорит мне, что проблема заключается в некотором фасете способа, которым Laravel обрабатывает полученные данные. – eComEvo 28 April 2014 в 08:05

Используйте'>' для переключения вкладок блока

4
ответ дан Brian 23 May 2017 в 22:33
поделиться

Перейдите к визуальному режиму, выберите к следующей соответствующей скобке, отступу:

V
%
>
6
ответ дан innaM 23 May 2017 в 22:33
поделиться

В дополнение к какой сказанный skinp, если Вы имеете:

   int foo()
   {
   /* line 1 */
       /* line 2 */
       /* line 3 */
       /* line 4 */
   }

и по любой причине хотят, чтобы это было похоже на это (т.е. Вы хотите все, расположил 4 пробелов с отступом* от того, где они были ранее, вместо того, чтобы делать отступ 'правильно' согласно правилам cindent):

   int foo()
   {
       /* line 1 */
           /* line 2 */
           /* line 3 */
           /* line 4 */
   }

где угодно в блоке, сделайте viB> (отступ visualselection innerBlock) **

* или независимо от того, что Ваш shiftwidth установлен по телефону

** vi}, совпадает с viB и может быть легче помнить, так как vi} выбирает в {}, vi) выбирает в (), vi] выбирает в [], и vi> выбирает в <>.

кроме того, va}, va), и т.д. выбор {}, (), и т.д. в дополнение к тому, что содержится в блоке.

0
ответ дан Yewge 23 May 2017 в 22:33
поделиться

В то время как вставьте: C-d, C-t
, В то время как визуальный:>, <
, В то время как нормальный:>>, < <

В любом этом использовании '.' режимов для расположения с отступом далее.

2
ответ дан Mykola Golubyev 23 May 2017 в 22:33
поделиться

Если у Вас есть код нес отступом, который похож на это...

if (foo)
{
/* line 1 */
/* line 2 */
/* line 3 */
}

... устанавливают Ваш курсор на "строку 1" в командном режиме и типе 3==, где 3 количество строк для расположения с отступом.

0
ответ дан Michael Kristofik 23 May 2017 в 22:33
поделиться

Я думаю, что это сделает это без любых устанавливаемых переключателей отступа.

:startRange,stopRange s/^/^\t/g

должен добавить пространство вкладки в начале строки между диапазоном номера строки, с которым Вы обеспечиваете

неотступ:

:startRange,stopRange s/^\t/^/g
0
ответ дан m42 23 May 2017 в 22:33
поделиться

Попробуйте

: cindent

набора Это включит C делающее отступ волшебство в энергии. Таким образом, как только Вы открываете фигурную скобку, она автоматически снабдит вкладками, пока Вы не закроете фигурную скобку.

1
ответ дан Jason Punyon 23 May 2017 в 22:33
поделиться