Kas yra greičiausias būdas komentuoti / atšaukti linijas Vim?

Turiu „Ruby“ kodo failą, atidarytą vi, yra eilutės, kurių komentarai # :

 class Search < ActiveRecord::Migration def self.up # create_table :searches do |t| # t.integer :user_id # t.string :name # t.string :all_of # t.string :any_of # t.string :none_of # t.string :exact_phrase # # t.timestamps # end end def self.down # drop_table :searches end end 

Tarkime, aš noriu išbraukti visas eilutes, esančias pirmajame def ... end skyriuje. Kas yra veiksmingas būdas tai padaryti Vime?

Apskritai, aš ieškau paprasto ir sklandaus būdo komentuoti ir suskirstyti eilutes. Čia kalbu apie Ruby kodą, bet tai gali būti „JavaScript“ ( // ) arba „Haml“ ( -# ).

684
05 нояб. nustatė Ethan 05 Nov. 2009-11-05 00:06 '09 - 0:06 2009-11-05 00:06
@ 40 atsakymų
  • 1
  • 2

Aš naudoju NERD komentarų scenarijų . Tai leidžia lengvai komentuoti, atšaukti arba perjungti komentarus kode.

149
05 нояб. Atsakymą pateikė Manuel Ceron 05 lapkričio. 2009-11-05 00:33 '09 0:33 2009-11-05 00:33

Šių užduočių atveju naudoju didžiąją laiko bloko pasirinkimą .

Paspauskite pirmąjį # simbolį, paspauskite „ Ctrl V“ (arba „ Ctrl Q “) ir pereikite prie paskutinės komentarų eilutės ir paspauskite x, kad ištrintumėte visus # simbolius vertikaliai.

Jei norite komentuoti, teksto blokas yra beveik tas pats:

border=0
  • Pirmiausia pereikite prie pirmos eilutės, kurią norite komentuoti, paspauskite Ctrl V. Taip redaktorius bus įjungtas į VISUAL BLOCK režimą.
  • Tada naudokite rodyklių klavišus ir pasirinkite paskutinę eilutę
  • Dabar paspauskite „ Shift I“ , kuris redaktorių INSERT į INSERT režimą, tada paspauskite # . Tai bus pridėta prie pirmos eilutės.
  • Tada paspauskite „ Esc“ (suteikite jį sekundei) ir pridės # simbolį visoms kitoms pasirinktoms eilutėms.

Apipjaustytai vim versijai, kuri pagal nutylėjimą siunčia su debian / ubuntu, trečiajame etape įveskite : s/^/# .

1473
05 нояб. atsakymą pateikė CMS 05 lapkričio. 2009-11-05 00:16 '09 ne 0:16 2009-11-05 00:16

Jei norite komentuoti blokus vim:

  • paspauskite „ Esc“ (palikti redagavimą arba kitą režimą)
  • paspauskite „ Ctrl + v“ (vaizdo blokavimo režimas)
  • naudokite rodyklių aukštyn / žemyn mygtukus, kad pasirinktumėte norimas linijas (tai nebus pasirinkta viskas - tai normalu!)
  • Shift + i (I kapitalas)
  • Įklijuokite norimą tekstą, t. Y. „%“
  • paspauskite „ Esc“

Duokite jam antrą darbo dalį.


Atšaukti blokus vim:

  • paspauskite „ Esc“ (palikti redagavimą arba kitą režimą)
  • paspauskite „ Ctrl + v“ (vaizdo blokavimo režimas)
  • Naudokite rodyklių aukštyn / žemyn mygtukus, kad pasirinktumėte eilutes, kurias norite padalyti.

    Jei norite pasirinkti kelis simbolius, naudokite vieną arba derinkite šiuos metodus:

    • Norėdami pasirinkti daugiau teksto, naudokite rodyklių kairįjį / dešinįjį klavišą.
    • pasirinkti tekstą Shift + kairėn / dešinėn rodyklė
    • Galite pakartotinai paspaudę ištrinti raktus, pvz., Įprastą ištrynimo mygtuką.

  • paspauskite d arba x , jei reikia, pašalinti simbolius

  • paspauskite „ Esc“

Duokite jam antrą darbo dalį.

513
23 марта '13 в 18:54 2013-03-23 18:54 atsakymas pateikiamas Amelia kovo 23 d., 13 val. 18:54 2013-03-23 ​​18:54

Kartais jie užsidega mane nuotoliniame laukelyje, kur mano įskiepiai ir .vimrc negali man padėti, o kartais ir „NerdCommenter“ klysta (pvz., Įterptas „JavaScript“ viduje HTML).

Tokiais atvejais žemos technologijos alternatyva yra integruota norm komanda, kuri vykdo bet kokias savavališkas vim komandas kiekvienoje jūsų nurodyto diapazono eilutėje. Pavyzdžiui:

Komentuodami su # :

 1. visually select the text rows (using V as usual) 2. :norm i# 

Kiekvienos eilutės pradžioje įterpiama „#“. Atkreipkite dėmesį, kad įvedant: diapazonas bus užpildytas, todėl jis atrodys :'<,'>norm i#

Neįtraukti # :

 1. visually select the text as before (or type gv to re-select the previous selection) 2. :norm x 

Tai pašalina pirmąjį kiekvieno eilutės simbolį. Jei naudoju komentarą 2 char, pavyzdžiui, //, tiesiog norėčiau :norm xx pašalinti abu simbolius.

Jei komentarai yra įterpiami kaip ir OP, galite susieti savo ištrynimą taip:

 :norm ^x 

tai reiškia „eiti į pirmąjį ne erdvinį simbolį ir ištrinti vieną simbolį“.

Pastaba Kadangi norm tiesiogine prasme atlieka įprastas vim komandas, neapsiriboja tik komentarais, galite atlikti sudėtingą redagavimą kiekvienai eilutei. Jei jums reikia komandų sekos dalis, kurią reikia pabėgti, įveskite ctrl-v, tada paspauskite evakuacijos klavišą.

2 pastaba: Žinoma, galite pridėti kartografavimą, jei naudojate norm . Pavyzdžiui, įdėjus šią eilutę į ~ / .vimrc, galite įvesti ctrl-n vietoj :norm po vizualaus pasirinkimo

 vnoremap <Cn> :norm 

3 pastaba: „Bare-bones vim“ kartais neturi įprasto norm komandos, todėl būtinai naudokite išplėstinę versiją, tai yra, paprastai / usr / bin / vim, ne / bin / vi

(Ačiū @Manbroski ir @rakslice už šiame atsakyme pateiktus patobulinimus)

182
14 апр. atsakymas pateikiamas Magnus 14 balandžio. 2014-04-14 17:44 '14, 17:44, 2014-04-14 17:44

.vimrc : .vimrc :

 " Commenting blocks of code. autocmd FileType c,cpp,java,scala let b:comment_leader = '// ' autocmd FileType sh,ruby,python let b:comment_leader = '# ' autocmd FileType conf,fstab let b:comment_leader = '# ' autocmd FileType tex let b:comment_leader = '% ' autocmd FileType mail let b:comment_leader = '> ' autocmd FileType vim let b:comment_leader = '" ' noremap <silent> ,cc :<CB>silent <CE>s/^/<CR>=escape(b:comment_leader,'\/')<CR>/<CR>:nohlsearch<CR> noremap <silent> ,cu :<CB>silent <CE>s/^\V<CR>=escape(b:comment_leader,'\/')<CR>//e<CR>:nohlsearch<CR> 

Dabar galite įvesti ,cc , komentuoti eilutę ir ,cu , panaikinti liniją (veikia tiek įprastu, tiek vaizdiniu režimu).

(Prieš daugelį metų pavogau ją iš svetainės, todėl negaliu visiškai paaiškinti, kaip jis veikia daugiau.). Yra komentaras, kur tai paaiškinama.)

91
05 нояб. atsakymas pateikiamas jqno 05 lapkričio. 2009-11-05 00:14 '09 0:14 2009-11-05 00:14

Nurodykite, kurias eilutes norite komentuoti vim:

Spausdinti eilutės numerius:

 :set number 

kad

 :5,17s/^/#/ this will comment out line 5-17 

arba tai:

 :%s/^/#/ will comment out all lines in file 
52
05 нояб. atsakymą pateikė Carlos 05 lapkričio. 2013-11-05 21:07 '13, 21:07 2013-11-05 21:07

Štai kaip tai padaryti:

  • Eikite į pirmąjį simbolį pirmoje eilutėje, kurią norite komentuoti.

  • Paspauskite Ctrl + q , esantį GVIM, arba Ctrl + v VIM, tada eikite žemyn, kad pasirinktumėte pirmąjį simbolį komentarų eilutėse.

  • Tada paspauskite c ir pridėkite komentarą.

Neįtraukimas veikia taip pat, tiesiog vietoj komentaro pobūdžio įveskite erdvę.

43
05 нояб. Atsakymas duotas Marcin 05 lapkričio. 2009-11-05 00:13 '09 0:13 2009-11-05 00:13

Aš atėjau paprastą papildymą prie .vimrc failo, kuris veikia labai gerai ir gali būti lengvai išplėstas. Jūs tiesiog įtraukiate naują failo tipą į comment_map ir jo komentarą.

Aš pridėjau ekraną į įprastą ir vizualinį režimą, bet galite perkelti viską, ką norite. Norėčiau tik „perjungimo“ funkciją. Vienas turi keletą žemėlapių ir tt

 let s:comment_map = { \ "c": '\/\/', \ "cpp": '\/\/', \ "go": '\/\/', \ "java": '\/\/', \ "javascript": '\/\/', \ "lua": '--', \ "scala": '\/\/', \ "php": '\/\/', \ "python": '#', \ "ruby": '#', \ "rust": '\/\/', \ "sh": '#', \ "desktop": '#', \ "fstab": '#', \ "conf": '#', \ "profile": '#', \ "bashrc": '#', \ "bash_profile": '#', \ "mail": '>', \ "eml": '>', \ "bat": 'REM', \ "ahk": ';', \ "vim": '"', \ "tex": '%', \ } function! ToggleComment() if has_key(s:comment_map,  let comment_leader = s:comment_map[ if getline('.') =~ "^\\s*" . comment_leader . " " " Uncomment the line execute "silent s/^\\(\\s*\\)" . comment_leader . " /\\1/" else if getline('.') =~ "^\\s*" . comment_leader " Uncomment the line execute "silent s/^\\(\\s*\\)" . comment_leader . "/\\1/" else " Comment the line execute "silent s/^\\(\\s*\\)/\\1" . comment_leader . " /" end end else echo "No comment leader found for filetype" end endfunction nnoremap <leader><Space> :call ToggleComment()<cr> vnoremap <leader><Space> :call ToggleComment()<cr> 

Pastaba:

Nenaudojau jokių atšaukimų ar perėmimų failų tipams / atsisiuntimams, nes manau, kad jie sulėtina „Vim“ paleidimą daugiau nei statinė funkcija / .vimrc kortelė, tačiau tai tik mano nuostatos. Aš taip pat stengiausi išlaikyti jį paprastą ir vykdomąjį. Jei naudojate automatines komandas, turite įdėti jas į automatinio komandų grupę, priešingu atveju į failo tipą įkeltos rinkmenos bus pridėtos atgalinės kopijos ir dėl to labai sumažės našumas.

22
04 июня '14 в 23:24 2014-06-04 23:24 atsakymą pateikė Corey Prophitt, birželio 14 d., 14 d., 23:24, 2014-06-04 23:24

Naudokite „Control-V“, kad pasirinktumėte teksto stačiakampius: eikite į pirmąjį # simbolį, įveskite Ctrl + V , eikite vieną kartą ir tada žemyn iki komentarų pabaigos. Dabar įveskite x : ištrinsite visus # simbolius ir po to vieną vietą.

21
05 нояб. atsakymą pateikė Arthur Reutenauer, lapkričio 5 d. 2009-11-05 00:11 '09 0:11 2009-11-05 00:11

Perjungti komentarus

Jei jums reikia tik persiųsti komentarus , norėčiau komentuoti komentarą .

2019

21 окт. atsakymas, kurį pateikė Flavio Wuensche spalio 21 d 2016-10-21 06:07 '16 at 6:07 2016-10-21 06:07

Čia yra mano .vimrc :

 "insert and remove comments in visual and normal mode vmap ,ic :s/^/#/g<CR>:let @/ = ""<CR> map ,ic :s/^/#/g<CR>:let @/ = ""<CR> vmap ,rc :s/^#//g<CR>:let @/ = ""<CR> map ,rc :s/^#//g<CR>:let @/ = ""<CR> 

Paprastai ir vizualiai, tai leidžia man spustelėti , ic, jei norite įterpti komentarus, o rc - ištrinti komentarus.

13
05 нояб. atsakymas pateikiamas lapkričio 5 d. 2009-11-05 00:10 '09 ne 0:10 2009-11-05 00:10

Pirmiausia paspauskite → clt + v

Jei reikia, spustelėkite rodyklę aukštyn arba žemyn.

Tada paspauskite → shift + i

Tada įterpkite komentarą naudodami → shift + #

Esc

13
23 окт. Atsakymas pateikiamas Ajinkya_Joshi 23 okt. 2015-10-23 09:01 '15, 9:01 am 2015-10-23 09:01

CLT + V

naudodami rodyklių klavišus

PHS + I

SHIFT + #

Esc

tada laukti ir padaryti

9
12 февр. Atsakymas duotas Mursleen 12 vasario mėn. 2014-02-12 09:43 '14 at 9:43 2014-02-12 09:43

Man patinka naudoti „tcomment“ papildinį: http://www.vim.org/scripts/script.php?script_id=1173

Užfiksavau gc ir gcc, kad galėčiau komentuoti eilutę arba tam skirtą kodo bloką. Jis nustato failo tipą ir veikia labai gerai.

8
05 нояб. atsakymą pateikė Rick 05.11. 2009-11-05 00:31 '09 0:31 2009-11-05 00:31

Aš naudoju „ EnhancedCommentify“ . Jis komentuoja viską, ko man reikia (programavimo kalbos, scenarijai, konfigūracijos failai). Aš naudoju jį su regimuoju režimu. Tiesiog pasirinkite tekstą, kurį norite komentuoti, ir paspauskite co / cc / cd.

 vmap co :call EnhancedCommentify('','guess')<CR> vmap cc :call EnhancedCommentify('','comment')<CR> vmap cd :call EnhancedCommentify('','decomment')<CR> 
6
05 нояб. atsakymas pateikiamas qba 05 lapkričio. 2009-11-05 00:41 '09 0:41 2009-11-05 00:41

Prieš mane atsakydamas 30 atsakymų, bandysiu pateikti dar paprastesnį sprendimą: eilutės pradžioje įrašykite # . Tada nuleiskite eilutę ir spustelėkite tašką ( . ). Jei norite pakartoti, atlikite j , j ir pan Jei norite atšaukti, ištrinkite # (galite paspausti x ant # ) ir padaryti atvirkštinį naudodami k ir pan

5
24 дек. Atsakymas pateiktas vaizduotojuiTai 24 d. 2015-12-24 02:35 '15, 2:35 am 2015-12-24 02:35

Aš pažymiu pirmąsias ir paskutines eilutes (ma ir mb), tada aš: 'a,' bs / ^ # //

5
05 нояб. Atsakymą pateikė SDGator 05 Nov. 2009-11-05 00:46 '09 ne 0:46 2009-11-05 00:46

Jei jau žinote eilutės numerius, tuomet n,ms/# // veiks.

5
05 нояб. atsakymą pateikė uckelman 05 lapkričio. 2009-11-05 00:09 '09 - 0:09 2009-11-05 00:09

Kaip panaikinti šias tris eilutes vi:

 #code code #code #code code code 

Paspauskite viršutinį kairįjį # simbolį ir paspauskite Ctrl + V. Tai leidžia jums vizualiai blokuoti režimą. Paspauskite rodyklę žemyn arba tris kartus, kad pasirinktumėte visas tris eilutes. Tada paspauskite d . Visi komentarai išnyksta. Norėdami atšaukti, paspauskite u .

Kaip komentuoti šias tris eilutes:

 code code code code code code 

Padėkite žymeklį virš viršutinio kairiojo simbolio, paspauskite Ctrl + V. Tai leidžia jums vizualiai blokuoti režimą. Paspauskite rodyklę žemyn arba tris kartus, kad pasirinktumėte visas tris eilutes. Tada spustelėkite:

I// Esc

Tai yra sostinė I, // ir pabėgti.

Kai paspausite „Esc“, visos pasirinktos eilutės gaus jūsų nurodytą komentaro simbolį.

4
08 дек. Atsakyti Ivor Scott 08 Dec 2013-12-08 02:37 '13, 2:37 2013-12-08 02:37

Naudoju „Tim Pope vim-commentary“ papildinį.

4
31 янв. Atsakymą pateikė Jim Stewart sausio 31 d 2014-01-31 22:01 „14 at 10:01 pm 2014-01-31 22:01

Aš naudoju komentarus.vim iš Jasmeet Singh Anand (esantis vim.org),

Jis veikia su c, C ++, java, php [2345], proc, css, html, htm, xml, xhtml, vim, vimrc, sql, sh, ksh, csh, perl, tex, fortran, ml, caml, ocaml, vhdl, haskel ir įprastos rinkmenos

Jis komentuoja ir ignoruoja skirtingų šaltinių failų eilutes tiek įprastu, tiek vaizdiniu režimu.

Naudoti:

  • ctrl-c komentare viena eilutė
  • ctrl-x, kad nebūtų komentuojama vienoje eilutėje
  • shift-v ir pasirinkite kelias eilutes, tada ctrl-c komentuoti pasirinktas kelias eilutes.
  • shift-v ir pasirinkite kelias eilutes, tada ctrl-x atšaukti pasirinktų kelių eilučių komentarą.
3
07 июля '13 в 12:10 2013-07-07 12:10 atsakymą pateikė Ronan liepos 13 d. 13 val. 12:10 2013-07-07 12:10

Aš sujungiau atsakymą į „phyl“ ir „jqno“ ir pateikiau ne pagrindines pastabas su tarpais:

 autocmd FileType c,cpp,java,scala let b:comment_leader = '//' autocmd FileType sh,ruby,python let b:comment_leader = '#' autocmd FileType conf,fstab let b:comment_leader = '#' autocmd FileType tex let b:comment_leader = '%' autocmd FileType mail let b:comment_leader = '>' autocmd FileType vim let b:comment_leader = '"' function! CommentToggle() execute ':silent! s/\([^ ]\)/' . b:comment_leader . ' \1/' execute ':silent! s/^\( *\)' . b:comment_leader . ' \?' . b:comment_leader . ' \?/\1/' endfunction map <F7> :call CommentToggle()<CR> 
3
07 марта '14 в 12:33 2014-03-07 12:33 atsakymas pateikiamas mathewguest kovo 7 d. 14 d. 12:33 2014-03-07 12:33

Tam naudoju vim-multi-kursorius .

  • Norėdami pasirinkti sritį, eikite į pirmos arba paskutinės eilutės, kurią norite komentuoti, pirmąjį simbolį paspausdami 0 (tai yra nulis, o ne „o“ raidė). Tada paspauskite V ir pasirinkite sritį naudodami J , K klavišus arba rodykles aukštyn ir žemyn.
  • Tada padėkite virtualųjį žymeklį ant kiekvienos pasirinkimo eilutės paspausdami Ctrl N.
  • Tada paspauskite I, kad redaguotumėte kiekvieną pasirinkimo eilutę vienu metu.
2
18 марта '15 в 23:40 2015-03-18 23:40 atsakymas pateikiamas nrz kovo 18 d., 15 val. 23:40 2015-03-18 23:40

Greičiausias ir intuityviausias metodas yra perskirstyti ) kad pereitumėte linijas ir tada ( kalbėti be kasimo. Išbandykite ir jūs negrįšite.

Ruby arba Bash su dviem dalimis:

 map ) I# <Esc>j map ( k^2x 

C / C ++ arba PHP su keturiomis įtraukomis:

 map ) I// <Esc>j map ( k^4x 

Trūkumai yra tai, kad jūs prarasite ( ir ) kad perkeltumėte sakinį (bet das gali užpildyti ten), o kartais grįšite nuo pasirinkimo ir pakeitimo arba Ctrl-V ilgalaikio apdorojimo skyrių. Bet tai gana reti.

„C“ stiliui geriausi komentarai yra geriausi

 set cindent set formatoptions=tcqr 

... kuris yra gerai derinamas su V[move]gq naudojimu pakartotiniam žodžių V[move]gq .

2
08 апр. atsakymą pateikė eukras 08 balandžio. 2015-04-08 13:33 '15, 13:33, 2015-04-08 13:33

Šis paprastas mano .vimrc fragmentas:

 function! CommentToggle() execute ':silent! s/\([^ ]\)/\/\/ \1/' execute ':silent! s/^\( *\)\/\/ \/\/ /\1/' endfunction map <F7> :call CommentToggle()<CR> 

Tai skirta // - komentarams, tačiau galite lengvai pritaikyti jį kitiems simboliams. Galite naudoti autocmd, kad nustatytumėte lyderį, kaip siūlo jqno.

Tai labai paprastas ir efektyvus būdas dirbti su juostomis ir vaizdo režimu.

2
09 нояб. Atsakymą pateikė Phil 09 Nov. 2012-11-09 14:39 '12, 14:39 pm 2012-11-09 14:39

Taip, jau yra 33 (dažniausiai pasikartojantys) atsakymai į šį klausimą.

Čia yra dar vienas požiūris į komentarus ant Vim linijų: judėjimas . Pagrindinė idėja yra komentuoti arba atšaukti linijas, naudojant tą patį metodą, kaip užfiksuoti pastraipą, įvesdami yip arba ištrindami 2 eilutes, įvesdami dj .

Šis metodas leis jums atlikti tokius veiksmus:

  • ccj pakomentuoti kitas 2 eilutes ir cuk jas cuk ;

  • cci{ komentuoti bloką ir cui{ ją pašalinti;

  • ccip kad galėtumėte komentuoti visą paragrafą, ir cuipcuip .

  • ccG pakomentuoti kiekvieną paskutinę eilutę ir cugg viską prieš pirmąją eilutę.

Jums tereikia 2 funkcijų, kurios veikia su judėjimais , ir 2 ekranai kiekvienai funkcijai. Pirma, žemėlapiai:

 nnoremap <silent> cc :set opfunc=CommentOut<cr>g@ vnoremap <silent> cc :<cu>call CommentOut(visualmode(), 1)<cr> nnoremap <silent> cu :set opfunc=Uncomment<cr>g@ vnoremap <silent> cu :<cu>call Uncomment(visualmode(), 1)<cr> 

(Žr. g@ operatoriaus vadovą ir operatoriaus funkcijos kintamąjį.)

Ir dabar funkcijos:

 function! CommentOut(type, ...) if a:0 silent exe "normal! :'<,'>s/^/#/\<cr>`<" else silent exe "normal! :'[,']s/^/#/\<cr>'[" endif endfunction function! Uncomment(type, ...) if a:0 silent exe "normal! :'<,'>s/^\\(\\s*\\)#/\\1/\<cr>`<" else silent exe "normal! :'[,']s/^\\(\\s*\\)#/\\1/\<cr>`[" endif endfunction 

Pakeiskite pirmiau pateiktus teisingus žodžius, kad atitiktų jūsų skonį, kur # turėtų būti:

2
04 авг. atsakymas pateiktas Nr 04 rug. 2015-08-04 22:34 '15 , 10:34 pm 2015-08-04 22:34

Labai geras klausimas, bet ne daug gerų atsakymų. Pirma, norėčiau pasakyti, kad bloko įterpimo režimo naudojimas nėra paprastas sprendimas, tiesiog per daug klavišų, todėl akivaizdu, kad ji turėtų dirbti su pasirinktomis linijomis, kad pagerintų kodų redagavimo našumą. Kitas dalykas, kurio niekas nemini: kur turėtų būti pateiktas komentaro ženklas - pačioje linijos pradžioje arba prieš faktinį tekstą? Tai tikriausiai yra skonio klausimas, tačiau, mano nuomone, kodą reikia perskaityti priešais tekstą: kai eilutės pradžioje dedamas komentaro ženklas, jis sulaužo atkuriamojo kodo vizualinį nuoseklumą, todėl jis atrodo kaip sąrašas. Turint tai omenyje, turiu tokį sprendimą (pateikiu # komentarų pavyzdį). Mano vimrc :

 vnoremap 1 :s:^\(\s*\)\([^#\t ]\):\1#\2:e<CR> vnoremap 2 :s:^\(\s*\)#\(\s*\):\1\2:e<CR> 

1 klavišas įterpia # prieš tekstą (po vietos) kiekvienoje pasirinktoje eilutėje. Ji patikrina, ar yra jau # , o ne du kartus įdėkite # . Ji taip pat ignoruoja tuščias eilutes.
2 klavišas pašalina vieną # . Jis taip pat saugo komentarus dešinėje apsaugos linijos pusėje.


Atnaujinimas : čia pateikiamas pavyzdys, kaip padaryti failo tipą priklausomai nuo komentaro komandos. Jei norite daugiau sužinoti apie tai, skaitykite: http://learnvimscriptthehardway.stevelosh.com/chapters/14.html

Kad jis veiktų, į savo .vimrc failą įdėkite šias eilutes.

 " build the whole regex search/replace command function! Build() let b:Comment_ON='''<,''>s:^\(\s*\)\([^\t ]\):\1' . b:cs . '\2:e' let b:Comment_OFF='''<,''>s:^\(\s*\)' . b:cs . '\(\s*\):\1\2:e' endfunction " run this group on Filetype event augroup SetCS autocmd! "default comment sign autocmd FileType * let b:cs='--' "detect file type and assign comment sign autocmd FileType python,ruby let b:cs='#' autocmd FileType c,cpp,java,javascript,php let b:cs = '\/\/' autocmd FileType vim let b:cs='"' autocmd FileType * call Build() augroup END vnoremap 1 :<Cu>execute b:Comment_ON<CR> vnoremap 2 :<Cu>execute b:Comment_OFF<CR> 
1
04 мая '15 в 19:01 2015-05-04 19:01 atsakymas pateikiamas Michailui V 04 gegužės 15 d. 19:01 2015-05-04 19:01

Pradėdamas čia pateikiamas atsakymų idėjas, pradėjau savo komentarų funkciją. Jis įjungia ir išjungia komentarus. Jis gali tvarkyti tokius dalykus kaip //print('blue'); //this thing is blue //print('blue'); //this thing is blue ir tiesiog perjungia pirmąjį komentarą. Be to, ji priduria komentarus ir vieną erdvę, kurioje yra pirmoji ne baltoji erdvė, o ne pačioje linijos pradžioje. Be to, ji nebūtinai kopijuoja erdves, tačiau naudoja skalę (: h h, kad būtų galima naudoti nuorodą), kad būtų išvengta papildomo darbo komentuojant ir įtraukiant. Tikiuosi, kad tai padės kai kuriems minimalistams. Pasiūlymai yra sveikintini.

 autocmd FileType c,cpp,java let b:comment_leader = '\/\/' autocmd FileType arduino let b:comment_leader = '\/\/' autocmd FileType sh,ruby,python let b:comment_leader = '#' autocmd FileType conf,fstab let b:comment_leader = '#' autocmd FileType matlab,tex let b:comment_leader = '%' autocmd FileType vim let b:comment_leader = '"' function! ToggleComment() " help with :h \v or pattern-atoms if exists('b:comment_leader') if getline('.') =~ '\v^\s*' .b:comment_leader " uncomment the line execute 'silent s/\v^\s*\zs' .b:comment_leader.'[ ]?//g' else " comment the line execute 'silent s/\v^\s*\zs\ze(\S|\n)/' .b:comment_leader.' /g' endif else echo 'no comment leader found for filetype' end endfunction nnoremap <leader>c :call ToggleComment()<cr> 
1
09 июля '14 в 14:17 2014-07-09 14:17 Atsakymą mike pateikia liepos 9 d. 14, 14:17 2014-07-09 14:17

Galite naudoti „vim“ komentarą iš „tpop“ ( https://github.com/tpope/vim-commentary ), galite jį naudoti taip:

Paspauskite ant vizualinio režimo

 'v' 

Tada spustelėkite

 'j' repeatedly or eg 4j to select 4 row 

Dabar viskas, ką jums reikia padaryti, yra įvesti raktus:

 'gc' 

Jei norite atrakinti atidėtojo atidarymo klavišus, visa tai bus komentuojama:

 'gc' 
1
14 мая '15 в 9:03 2015-05-14 09:03 atsakymą pateikė Kingsley Ijomah gegužės 15 d. 15 val. 9:03 2015-05-14 09:03

Man patinka (komentarai C ansi), todėl tai yra mano triukas. Žinoma, galite jį pritaikyti naudoti skirtingais atvejais.


Komentuoti su / * ... * /

Pasirinkite tekstą (eikite į pradžią, paleiskite vaizdo bloką, eikite naudodami } ):

 <cV>} 

Įveskite komandą, kuri bus naudojama pasirinkdami

 :norm i 

Ši komanda atrodys taip: :'<,'>norm i

Daugiau informacijos rasite (i *).


Nepriimtas / * ... * /

Pasirinkite tekstą (kaip ir anksčiau, arba kaip norite):

 <cV>}