neovim 플러그인을 파이썬으로 만들기

개요



neovim 플러그인이 파이썬으로 코딩 할 수 있기 때문에 시도해보십시오.

환경


  • mac
  • python3

  • 설치


    brew install neovim
    pip3 install neovim
    

    플러그인 만들기



    파일을 만드는 위치



    neovim runtimepath 폴더 아래 rplugin/python3/에 python 파일 만들기

    자신의 경우
    ~/.config/nvim/rplugin/python3/test_plugin.py
    만든

    Neovim allows python3 plugins to be defined by placing python files or packages in rplugin/python3/(in a runtimepath folder). Python2 rplugins are also supported and placed in rplugin/python/, but are considered depreca
    인용 대상 : htps : // 기주 b. 코 m / 네오 ぃ m / py 텐 - c ぃ

    파일 내용



    공식 샘플을 copipe

    test_plugin.py
    import neovim
    
    @neovim.plugin
    class TestPlugin(object):
    
        def __init__(self, nvim):
            self.nvim = nvim
    
        @neovim.function("TestFunction", sync=True)
        def testfunction(self, args):
            return 3
    
        @neovim.command("TestCommand", range='', nargs='*')
        def testcommand(self, args, range):
            self.nvim.current.line = ('Command with args: {}, range: {}'
                                      .format(args, range))
    
        @neovim.autocmd('BufEnter', pattern='*.py', eval='expand("<afile>")', sync=True)
        def on_bufenter(self, filename):
            self.nvim.out_write("testplugin is in " + filename + "\n")
    

    플러그인 등록



    vim의 명령 행 모드에서 다음을 실행
    :UpdateRemotePlugins
    
  • vim을 다시 시작해야 할 수도 있습니다



  • 플러그인이 등록되어 있는지 확인



    ~/.local/share/nvim/rplugin.vim을 확인하여 작성한 플러그인이 등록되었는지 확인하십시오.



    실행



    우선 TestFunction과 TestCommand를 사용해보십시오.


    자체 제작 플러그인



    파이썬의 강력한 라이브러리를 사용한 명령을 순식간에 할 수 있을 것 같기 때문에, 우선 작성해 본다.
    명령은 testcommand 함수를 응용하여 만들어갑니다.

    testcommand
    @neovim.command("TestCommand", range='', nargs='*')
        def testcommand(self, args, range):
            self.nvim.current.line = ('Command with args: {}, range: {}'
                                      .format(args, range))
    

    이번 커맨드의 처리 내용은 아래와 같은 느낌
    1. 전제로 한 문서를 yank하여 clipboard에 삽입
    2. 명령을 실행하여 클립 보드에 존재하는 문서를 형태소 분석하여 각 형태소와 그 빈도를 계산합니다.
    3. 현재 커서의 위치에서 빈도를 내림차순으로 정렬하여 paste

    조금, 형태소 해석의 곳이 적당하게 쓰여지고 있습니다만, 크게 보아 주세요 ><

    사전 준비


  • 파이썬에서 mecab 사용하기
  • htps : // m / g 등 ch / ms / 4fbc9bf8174c5, b7bd

  • pyperclip install
  • import neovim
    import pyperclip
    import subprocess
    import sys
    import MeCab
    from collections import Counter
    
    @neovim.plugin
    class TestPlugin(object):
    
        def __init__(self, nvim):
            self.nvim = nvim
    
        @neovim.function("TestFunction", sync=True)
        def testfunction(self, args):
            return 3
    
        @neovim.command("TestCommand", range='', nargs='*')
        def testcommand(self, args, range):
            self.nvim.current.line = ('Command with args: {}, range: {}'
                                      .format(args, range))
    
        @neovim.autocmd('BufEnter', pattern='*.py', eval='expand("<afile>")', sync=True)
        def on_bufenter(self, filename):
            self.nvim.out_write("testplugin is in " + filename + "\n")
    
        @neovim.command("WordCount", range='', nargs='*')
        def wordcountcommand(self, args, range):
            m = MeCab.Tagger("-Ochasen")
    
            # クリップボードから文書を取得
            sentence = pyperclip.paste()
    
            # 形態素解析
            out = "\n".join([
                w+"\t"+str(cnt) \
                for w, cnt in \
                    Counter([
                        l.split("\t")[0] for l in m.parse(sentence).strip().split("\n")
                    ]).most_common()
            ])
    
            # クリップボードへ挿入
            pyperclip.copy(out)
    
            # クリップボードからpaste
            self.nvim.command("put")
    

    자체 제작 플러그인 등록



    vim의 명령 행 모드에서 다음을 실행
    :UpdateRemotePlugins
    
  • vim을 다시 시작해야 할 수도 있습니다

  • 자체 제작 플러그인 실행



    wikipedia에서 "오아시스"의 개요를 복사하여 형태소 분석을 걸어 보았습니다.



    감상



    강력한 도구 vim ✖️ 강력한 파이썬 라이브러리 = 무한대 행복 웃음
    세상에는, 사람의 시간을 대량으로 착취하는 무서운 문제가 많이 있으므로, 적당하게 플러그인을 만들어 가면서 싸워 가고 싶네요—

    참고문헌


  • 파이썬 클라이언트의 github
  • htps : // 기주 b. 코 m / 네오 ぃ m / py 텐 - c 엔 t /

  • neovim의 플러그인을 작성하는 방법을 쓰고 있는, 일관된 자료
  • htps : // 기주 b. 코 m / 쟈코 b시 mp 쏘 / 응ぃ ぃ

  • 엄청 도움이 된 이슈
  • 잊어 버렸다.

  • 좋은 웹페이지 즐겨찾기