레이블이 tool인 게시물을 표시합니다. 모든 게시물 표시
레이블이 tool인 게시물을 표시합니다. 모든 게시물 표시

2015년 6월 15일 월요일

스크랩 :: VIM 활용 :: 복수의 문자열의 하나의 문자열로 바꾸기 혹은 복수의 문자열로 바꾸기


4. 복수의 문자열을 하나의 문자열로 바꾸기

이것은 결국 위의 정규표현식을 사용한 패턴을 특정한 문자열로 바꾸는 것이다. 웬만한 vi 기초 문서에서 간단하게라도 다루는 내용이다.
:%s/[vV]i//g   - vi 또는 Vi 를 null string 으로 치환한다. 즉 삭제한다.
:%s/<.*>//g    - html 화일에서 태그를 제거하는 경우인데, 이렇게 쓰면 내용 라는 줄이 있을 때 죄다 지워질 것이다. 
                 따라서 <.*> 대신에 <.\{-}> 를 쓰는 게 낫다.
::%s/\(gnu\|Gnu\)/GNU/g  - gnu 또는 Gnu 를 GNU 로 치환
간단한 것이니 이 정도로 통과.

[edit]5. 복수의 문자열의 복수의 문자열로 바꾸기

사실 이 얘기를 하고 싶었던 것인데... 이것만 덜렁 쓰기가 뭣해서 서론이 장황해졌다.
핵심은, 괄호를 사용하여 찾는 문자열 쪽에 그룹을 지정한 후에, 바꿀 문자열 쪽에서 그 그룹을 부를 수 있다는 것이다.
\0 은 찾은 문자열 전체
\1 은 첫번째 괄호
\2 는 두번째 괄호
\3 은 세번째 괄호
...
괄호의 순서는 여는 괄호 "(" 의 순서로 따진다. 또 . 나 [list] 등이 괄호안에 있을 경우는 실제로 검색된 문자열을 의미한다는 것에 유의. 즉 abef 라는 스트링이 있고 \(ab\|cd\)ef 로 검색했다면 \1 은 ab 가 된다.
다음과 같은 경우를 생각해 보자. html 화일 안에 수십개의 링크가 다음과 같이 나열되어 있다.
  • aaa
  • bbb
  • ccc ...
  • 이것을 내가 위키위키 페이지에 옮기려 한다. (사실 위처럼 깔끔하게 되어 있으면 그냥 html 코드를 써도 되겠지만)
    * [http://www.aaa.com aaa]
    * [http://www.bbb.com bbb]
    * [http://www.ccc.com ccc]
    ...
    
    다음의 한 줄로 만사형통.
    :%s/
    
  • \(.\{-}\)<\/a>/* [\1 \2]/g

  • 관련 링크:

    2015년 4월 30일 목요일

    Vim 학습일지 15-04-30 Session의 중요성. 정규식(regex)의 적극적인 사용에 대한 부족함을 느낌.

    기회가 좋게도 현재 맡은 업무에서 터미널 작업을 많이 하게 되는데 덕분에 vim을 마음껏 써볼 수 있게 되었다. 공부는 조금씩 했었지만 개발에 적극적으로 써보진 못했던 상황이었어서 물론 아직은 이클립스가 더 친숙하긴 하다.

    아직 vim에서 해본게 새 발의 피이긴 하지만 벌써 몇가지 커맨드들과 이동방식에는 친숙해져 버려서 이클립스나 Aptana 상에서도 '/'라던지 'i'라던지를 누르게 되어버렸다;;;

    아직은 커맨드 한 번 입력하려면 익숙해진 yy,dd,w 등의 아주 많이 쓰는 커맨드들 외에는 검색을 한 번 해봐야 쓸 수 있다.


    그 중에서 정말 유용한 건 탭 나누기와 세션을 적극적으로 활용하는 방법이다.

    vim에 강력한 기능이 정말 많지만 지금까지 느낀 것으론 탭 나누기가 정말 유용한 것 같다. 특히 한 파일이 정말 긴 경우에는 왔다갔다 하면서 봐야 하는 이클립스 등에서는 생산성이 극히 떨어지는데 vim에서는 :vs, :sp 등으로 화면을 분할해서 하나의 파일을 다각도로 볼 수 있는 것이 정말 유용했다. 그런데 처음 며칠은 신나게 분할하고 탭 열고 해서 환경을 잡아놔도 다음날이 되면 다시 그짓을 하려니 귀찮음과 비효율적이란 느낌을 받았다.

    그러던 중 세션 저장이란 걸 알게되어 써보니 어제 작업하던 환경을
    :mks! 를 이용해서 작업하고 shell 상에서
    vim -S Session.vim 하여 여니 어제와 같은 환경을 유지할 수 있었다.

    더 다양한 활용법이 있겠지만 일단은 이 정도만으로도 큰 도움이 되었다.


    vim에서 느끼는 또하나의 강점은 검색.
    물론 아직은 이클립스에서 쌓아온 노하우 정도까지는 따라가지 못한다. 하지만 현재 작업 방식 자체가 원격에 있는 소스를 보며 작업하는 상태라서 이클립스의 전역 검색(Ctrl-H)이 제대로 되지 않는 상태이다. 그래서 vim에서의 검색이 더 빛을 발하는 환경이기 때문에 학습하기 좋은 환경(?)이 된 것 같다.

    다양한 방법으로 원하는 부분을 찾아서 작업을 하곤 하는데 아쉬운 부분은 정말 잘 쓰시는 분들이 regex를 적극적으로 사용해서 문자 치환이나 전역 검색등을 아주 강력하게 사용하시는데 반해 나는 아직까지는 이클립스의 Ctrl-F 정도의 검색밖에는 못하고 있다는 점이다.
    regex를 좀 더 적극적으로 활용한다면 개발 속도도 더 빨라지지 않을까란 생각이 든다..


    일지이지만 사실상 근 한달간의 학습(?) 결과이니 월지라고 해야 하려나..ㅎㅎ

    크롬 에서 번역 옵션 뜨는 거 막는 방법

    버그 같은게 아니고 저 옵션의 기본 값이 제공으로 바뀐듯... 번역 옵션 제공을 비활성화하면 안 뜸. Chrome에서 웹페이지 번역 모르는 언어로 작성된 페이지를 방문할 때 다음 단계에 따라 Chrome이 페이지를 번역하도록 할 수 있습...