Vim түрінде автоформаны / шегініс C кодын қалай жасауға болады?

Кодты басқа файлдан көшіргенде, пішімдеу шатастырылады, мысалы:

 fun() { for(...) { for(...) { if(...) { } } } } 

Бұл кодты vim түрінде автоматты түрде қалай пішімдеуге болады?

189
01 марта '10 в 15:50 2010-03-01 15:50 Yongwei Xing 01 наурыз күні сағат 15: 50-де орнатылды . 2010-03-01 15:50
@ 10 жауап

Келесі пернені басып көріңіз:

 gg=G 

Түсіндіру: gg файлдың басына өтеді, = - шегінісін түзету үшін пәрмен және G файлдың соңында әрекетті орындау туралы айтады.

427
01 марта '10 в 15:52 2010-03-01 15:52 Жауап Әмір Рахуммен 01 наурызда сағат 15: 52-де 2010-03-01 15:52

Мен көркемдік стильді қолдануды ұнатамын. Өз веб-сайтына сәйкес:

Көркемдік стиль C, C ++, C # және Java бағдарламалау тілдері үшін бастапқы коды индексін, пішімдеуді және бастапқы кодты декодерін білдіреді.

Терезе, Linux және Mac жүйесінде жұмыс істейді. Ол шегіністер сияқты әрекеттерді орындайды, қойындыларды кеңістіктермен ауыстырады немесе керісінше, қажет болғанда айналадағы бос орындарды орналастырады ( if(x<2) егер ( x<2 ) болса), егер сіз оны ұнатсаңыз) функция анықтамалары сияқты жолды немесе оларды төмендегі жолға жылжытыңыз және т.б. Барлық параметрлер команда жолының параметрлері арқылы бақыланады.

Оны vim ішіне пайдалану үшін, оны жай пішімдеу параметрін орнатыңыз, содан кейін gq пәрменін пайдаланыңыз. Мәселен, мысалы, менің .vimrc:

 autocmd BufNewFile,BufRead *.cpp set formatprg=astyle\ -T4pb 

сондықтан .cpp файлын ашқан кезімде, formatprg маған ұнайтын параметрлермен орнатылады. Содан кейін файлдың басына өту үшін gg басып шығара аламын және бүкіл файлды менің стандарттарыма сәйкес пішімдеу үшін g q g . Егер бір функцияны ғана қайта пішімдеу қажет болса, онда мен функцияның басталуына кіре аламын, содан кейін g q ] теріңіз [ және ол нақты функцияны қайта пішімдейді.

border=0

Мен тұрып қалатын опцияларым, -T4pb , менің артықшылықтарым ғана. Сіз өздерінің құжаттарын көре аласыз және қалағандай кодты пішімдеу үшін параметрлерді өзгерте аласыз.

Мұнда демонстрация. Клиенттің алдында:

 int main(){if(x<2){x=3;}} float test() { if(x<2) x=3; } 

Астилден кейін (gggqG):

 int main() { if (x < 2) { x = 3; } } float test() { if (x < 2) x = 3; } 

Бұл көмектеседі деп үміттенемін.

71
02 марта '10 в 16:46 2010-03-02 16:46 Жауап Дарек 02.03.2010 4:46 уақытында 2010-03-02 16:46

ОР автоматты пішімдеуді сұрады, бірақ тек автоматты индекстеудің жауапты қабылдады.

Міне, айырмашылық:

ORIGINAL

 int main(){if(x<2){x=3;}} float test() { if(x<2) x=3; } 

автострока

 int main(){if(x<2){x=3;}} float test() { if(x<2) x=3; } 

Автопішімдеу

 int main() { if (x < 2) { x = 3; } } float test() { if (x < 2) x = 3; } 
50
21 нояб. жауап лазермен берілген . 2010-11-21 10:46 '10 сағат 10:46 2010-11-21 10:46

Дұрыс код шегінісі туралы кіріктірілген пәрмен бұрын айтылған ( gg=G ). Егер сіз кодты безендіргіңіз келсе, шегініс сияқты сыртқы бағдарламаны пайдалануыңыз қажет. Себебі ағымдағы файлды ex-режимде білдіреді, оны келесідей пайдалануға болады:

 :!indent % 
23
01 марта '10 в 16:04 2010-03-01 16:04 Жауап 1- ші наурызда сағат 16: 00-де 16:00

Vim-autoformat плагині тек бір түймені буферге пішімдеуге мүмкіндік береді: https://github.com/Chiel92/vim-autoformat . Ол осы мақсат үшін сыртқы форматты бағдарламаны пайдаланады, ол vim шегінісі функциясынан кетеді.

12
02 дек. Жауап беру: Chiel ten Brinke 02 Dec 2012-12-02 23:09 '12 at 23:09 2012-12-02 23:09

Мен c> жақсы жұмыс істейтінін білемін.

C> кілт сөздердің бірнеше мысалы бар .

Мен equalprg байланыстыруды пайдаланғым келеді. Бұл G=gg немесе басқа indent parameters = бар c> шақыруға мүмкіндік береді.

Жай ғана сіздің .vimrc файлыңызға төмендегілерді қойыңыз:

 autocmd FileType c,cpp setlocal equalprg=c> 
4
27 окт. Daniel 27 oct. 2016-10-27 05:34 '16 сағат 05:34 дейін 2016-10-27 05:34

Жоғарыда айтылғандай, маған ұнайды, бірақ көбінесе жұмыс істеп жатқан файлдың тек шағын бөлігін ғана пішімдеуді қалаймын. indent stdin кодын қабылдай алатындықтан, оның шынымен қарапайым:

  • V немесе сол сияқты пішімдеу керек кодтың блогын таңдаңыз.
  • Теру арқылы пішімдеу :!indent

astyle қатар, stdin қабылдайды, сондықтан сіз сол astyle пайдалана аласыз.

3
13 февр. жауап dsummersl 13 ақпан берілді 2015-02-13 17:41 '15 at 17:41 pm 2015-02-13 17:41

Мүмкін, келесі $ indent -rr -i8 * .c деп көріңіз

Сізге бұл пайдалы болады деп үміттенемін!

2
23 сент. Жауап 23 сағатқа созылады . 2011-09-23 08:59 '11 at 8:59 2011-09-23 08:59

Олардың құралы indent деп аталады. Сіз оны apt-get indent арқылы жүктеп apt-get indent , содан кейін indent my_program.c .

0
06 февр. жауап 06 ақпанда n0va_sa берілді. 2017-02-06 11:44 '17 at 11:44 2017-02-06 11:44

Мен толтыруды болдырмас үшін, ең алдымен тере аласыз :set paste қоймаңыз. Кірістіргеннен кейін, сіз теруіңізге болады :set nopaste js-beautify және қайтадан жұмыс істеу үшін :set nopaste арналған :set nopaste .

0
02 февр. жауап 02-ші ақпанда өтеді. 2017-02-02 12:01 '17 сағат 12 : 00-де 2017-02-02 12:01

Тегтер туралы басқа сұрақтар немесе Сұрақ қою