마음가짐을 위한 Vim 배우기

오늘 나는 업데이트할 구성 파일이 있다는 것을 깨달았을 때 사무실에 앉아 작업을 마무리하고 있었습니다. 몇 년 전에는 내가 가장 좋아하는 IDE인 PHPStorm에서 파일을 열고 다음과 유사한 작업을 수행했습니다.
  • 신뢰할 수 있는 IDE를 엽니다.
  • 구성 변경을 위해 대상 프로젝트를 엽니다.
  • 파일 트리를 사용하여 대상 파일을 찾아 엽니다.
  • 마우스를 사용하여 변경해야 하는 텍스트를 강조 표시합니다.
  • 텍스트를 삭제합니다.
  • 새 텍스트를 복사하여 붙여넣습니다.
  • 모든 파일에서 다른 필수 변경 사항에 대해 반복합니다.

  • 나는 그 일이 싫었고, 가능한 한 오랫동안 미루고 싶을 정도로 솔직히 눈물이 날 정도로 지루했습니다.

    오늘 저녁으로 넘어가면 내 작업 흐름은 다음과 같습니다.
  • 퍼지가 내 프로젝트를 찾습니다(새 tmux 세션이 자동으로 열립니다).*
  • telescope 으로 대상 파일을 엽니다.
  • /<query>로 변경할 콘텐츠를 검색합니다.
  • ci" 콘텐츠를 삭제하고 삽입 모드로 전환합니다.
  • 새 콘텐츠를 복사하여 붙여넣습니다.
  • 영향을 받는 모든 파일에 대해 헹구고 반복합니다.

  • [*] 과 그의tmux sessionizer에게 큰 감사를 드립니다.

    지금은 이상하게도 그 과정이 즐겁지만 뒷통수를 긁는 듯한 느낌이 들었습니다. 일이 너무 많은 것 같은데, 더 잘할 수 있을까요? 이제 그 생각이 중요하고 다시 돌아와서 더미 파일을 살펴보겠습니다.

    #!/usr/bin/env bash
    ./example \
      -database="example.db-vip.production" \
      -riak="example.riak-vip.production" \
      -elk="example.elk-vip.production" \
      -port=8989 > example-$(date +%s).log &
    

    example.<resource>-vip.production에서 example.<resource>-vip.us-production로 이동한다고 가정해 보겠습니다. 핵심 linux util: sed에 대한 매우 간단한 변경 및 작업이 충분히 쉽습니다.

    sed -i 's/production/us-production/' example.sh
    


    이제 Project A , Project BProject C 로 이름을 지정하는 여러 다른 프로젝트의 모든 bash 파일에 적용하고 싶다고 가정해 보겠습니다. 많은 대규모 프로젝트에서 찾기 및 바꾸기를 위해 IDE를 사용해 본 적이 있습니까? 마지막으로 내가 일어서서 끝날 때까지 기다리는 동안 산책하러 갈 수 있었다고 확신합니다.

    그래서 이것에 대해 생각해 봅시다. 세 가지 다른 프로젝트 내의 모든 sed 파일에 *.sh를 적용하려고 합니다. find가 원하는 파일을 가져온 다음 sed-exec에 전달하여 찾은 모든 파일에 적용하는 작업처럼 들립니다.

    find ~/first/ProjectA ~/second/ProjectB ~/third/ProjectC \
      -type f -name "*.sh" \
      -exec sed -i 's/production/us-production/' {} \;
    


    이와 같은 작업은 사용 가능한 핵심 Linux 유틸리티를 결합하여 간단해지며 해당 지식은 IDE(예: SSH 세션)에 액세스할 수 없는 환경에서 훨씬 더 가치가 있습니다.

    이제 제목 때문에 이 게시물에 있는 것보다 더 많은 vim이 포함될 것이라고 생각했을 수 있습니다. 그래서 무엇을 제공합니까?

    내가 이것을 말했을 때를 기억하십시오.

    A lot of fun, but there was something scratching at the back of my head, this seems like a lot of work, can I do this better?



    나는 진정으로 내가 개발한 이 사고방식이 vim 학습에서 비롯되었다고 믿습니다. 작업이 완료되면 멈추지 않습니다. 항상 더 나은 접근 방식이 있는지 궁금해하는 부분이 있으며 성장하고 배우려는 욕구가 IDE를 고수한다면 내가 생각하는 것보다 훨씬 더 개인적인 성장을 이끌어 냈습니다.

    예, vim은 가혹한 학습 곡선을 가질 수 있지만 클릭할 때 손끝에서 느껴지는 힘은 매혹적입니다. 그 이상으로 명령줄을 강제로 실행합니다. 이렇게 하면 이전에 IDE로 해결했던 많은 문제 영역이 발생하고 대신 일반적으로 명령줄에 도달하게 됩니다. 이렇게 하면 학습한 도구를 개별적으로 또는 서로 함께 사용할 수 있으므로 훨씬 더 많은 유연성을 얻을 수 있습니다. 일반 워크플로 작업을 자동화하기 위해 개인 스크립트로 전환할 수도 있습니다. 이 프로그래밍 기능은 창의성에 의해서만 제한됩니다.

    그렇다면 vim 학습을 제안하는 이유는 무엇입니까? 제 생각에는 - 그것은 당신을 당신의 안락한 영역 밖으로 밀어내는 데 도움이 될 것이고 당신이 처음 깨닫는 것보다 훨씬 더 성장하도록 강요할 것입니다.


    추신. 위의 방법에 대한 수백 가지의 더 나은 접근 방식이 있을 수 있으며 제가 수행하는 다른 모든 것 - 그 잠재력이 저를 정말 흥분시킵니다. 그러니 내가 잘못하고 있는 모든 일을 자유롭게 말해주세요.

    좋은 웹페이지 즐겨찾기