2026-06-03T01:52:46+09:00 [Wed]
--> [日常]
Notepad++ bruderstein / PythonScript用、全角→半角変換
https://github.com/bruderstein/PythonScript/releases/tag/v3.0.25
python2.7用では動きません。っていうかpython3用が出てたので作ってみた。2.xではマルチバイトに触らないっていうか触れなかったので、だいぶ嬉しい。
選択範囲あり→選択範囲のみ。
選択範囲なし→ファイル全体対象
欧文と記号類を半角にします(kaoriya版GVimのzenhan_asciiと同じ動作)
# -*- coding: utf-8 -*-
from Npp import notepad, editor
def zenhan_Ascii(text):
table = str.maketrans({
' ':' ','!':'!','”':'\"','#':'#','$':'$','%':'%','&':'&','’':'\'',
'(':'(',')':')','*':'*','+':'+',',':',','-':'-','.':'.','/':'/',
'0':'0','1':'1','2':'2','3':'3','4':'4','5':'5','6':'6','7':'7',
'8':'8','9':'9',':':':',';':';','<':'<','=':'=','>':'>','?':'?',
'@':'@','A':'A','B':'B','C':'C','D':'D','E':'E','F':'F','G':'G',
'H':'H','I':'I','J':'J','K':'K','L':'L','M':'M','N':'N','O':'O',
'P':'P','Q':'Q','R':'R','S':'S','T':'T','U':'U','V':'V','W':'W',
'X':'X','Y':'Y','Z':'Z','[':'[','¥':'\\',']':']','^':'^','_':'_',
'‘':'`','a':'a','b':'b','c':'c','d':'d','e':'e','f':'f','g':'g',
'h':'h','i':'i','j':'j','k':'k','l':'l','m':'m','n':'n','o':'o',
'p':'p','q':'q','r':'r','s':'s','t':'t','u':'u','v':'v','w':'w',
'x':'x','y':'y','z':'z','}':'}','{':'}','〜':'~'
})
return text.translate(table)
def main():
selected_text = editor.getSelText()
if not selected_text:
rtxt = zenhan_Ascii(editor.getText())
editor.setText(rtxt)
else:
sel_start = editor.getSelectionStart()
sel_end = editor.getSelectionEnd()
editor.setTargetStart(sel_start)
editor.setTargetEnd(sel_end)
insert_text = zenhan_Ascii(selected_text)
editor.replaceTarget(insert_text)
if __name__ == "__main__":
main()