Vim
cevap
bu çözümün tür olup olmadığını bilmiyorum Aradığınız ... ama bu kullandım: ... keepcase.vim
aksi vim hiçbir destek yok
u can
:s/\cbad/\= strpart(submatch(0), 0 ,1) == toupper(strpart(submatch(0), 0, 1)) ? "GOOD" : "good"/
ps emin olun. Ben sanırım keepcase.vim bazı benzer mantık kapsüller :)
Evet, 2007'den beri çalışıyor::% SubstituteCase/\ cbadjob/GoodJob/g ^^ –
gVim 7.2'den beri mi? GVim 7.1'de (12-Mayıs-2007) denedim ve işe yaramadı :( –
Hayır, 2007'de eklentiye SubstituteCase komutunu ekledim. Hepsi bu. Eklentiyi vim.org adresinde bulabilirsiniz. ve en eklentileri ile her zamanki gibi vim ile gönderilmez. –
muhafaza eklentisine bir alternatif SmartCase - replacing words while keeping original case'dur. (Kendini kötü değerlendirmesi tarafından vazgeçirmek olmasına izin verme.)
's:% s/file \ A \ gibi komutları yazmak için zor ve sıkıcı olanlar kısaltmak için bir hile var mı "size/\ = SmartCase (" LastModifiedTime ")/ig'? –
@ MichaelHärtl:' 'SmartCase' komutunu kullanabilirsiniz. Bunu kendi çatalıma göre genişlettim (https://github.com/in karkat/SmartCase). Bunun bir bağımlılık olarak [kütüphane içi] (http://www.vim.org/scripts/script.php?script_id=4433) gerektirdiğini unutmayın. –
Sadece yapıştırın ve bu uyarlayabilirsiniz:
(Tabii ki, zaman bunu yaparsanız için zaman, bunun yerine bu canavarlığın bir eklenti isteyeceklerdir. Ama acele ve sadece bir kez ihtiyaç duyan bazıları için, bu yapıştırma zevk için hızlı kesmek :)
:%s/\cbad\zejob/\= (submatch(0)[0] is# toupper(submatch(0)[0]) ? 'G' : 'g') . (submatch(0)[1] is# toupper(submatch(0)[1]) ? 'OOD' : 'ood')
dışında arama deseni dışında, yedek kodunda dört '
dizeleri '
düzenlemek zorunda: kalın parçaları düzenleyin:
:% s/\ c kötü \ ze iş/\ =
(gönderim (0) [0] # toupper (eşleşmeli (0) [0]) nedir? 'G': 'g').
bu 'turuncu' kullanmayın:
(? 'ood' submatch (0) [1] # toupper (submatch (0) [1]) 'OOD' dir) linebreak karakterleri de komutları kıracaktır çünkü, yapıştırmanın sürümü.
/\ze
bir pozitif ileri yönlü işaretleme vim normal ifade sözdizimsel şeker: \ze
sonra desen için kontrol ama yer değiştirmiş değildir.
is#
?? Açıklamama izin verin… (İlgiliyse.
#
(ayrıca ==#
ve others) büyük/küçük harf duyarlılığı zorlar. Aksi halde, :set ignorecase
ile (kullanıyorum, bu yararlı :set smartcase
için gereklidir), vim 'a' == 'A'
düşünecektir! Olduğu gibi
Çılgın, biz gerçekten bunun için hesap edilmelidir: o kullanıcı ayarları bağımlı olduğundan, ==
nevar kullanılmalıdır! http://learnvimscriptthehardway.stevelosh.com/chapters/22.html#code-defensively
is#
yerine ==#
savunmaya kodlama başka bir yoludur: tamsayılar karşılaştırırken (. Aslında ne istediğinizi nerede olacağını hariç) Hatta ==#
kullanmak tavsiye takip edecek O tip geliştirir güvenliği: http://google.github.io/styleguide/vimscriptguide.xml?showone=Type_checking#Type_checking
Bir dize değişmeziyle karşılaştırılırken kullanılmalıdır. http://google.github.io/styleguide/vimscriptguide.xml?showone=Strings#Strings
HT @fc:
'single-quoted'
yerine "double quoted"
strings
, başka bir olasılık ise:
:s/abc/\={'abc':'xyz','Abc','Xyz'}[submatch(0)]/i
Bu vim özelliği olmalıdır. Çok mantıklı geliyor. – Bach