텍스트 블록의 각 줄 앞에 #을 추가하는 방법은 무엇입니까?

텍스트 블록의 각 줄 앞에 #을 추가하는 방법은 무엇입니까?

이것은 내 PHP Myadmin 구성 파일의 일부입니다.

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 127.0.0.1
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

<Directory /usr/share/phpMyAdmin/setup/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>

#첫 번째 줄부터 시작하여 각 줄을 <Directory>까지 추가 하고 싶습니다 </Directory>. 어떻게 해야 합니까?

답변1

vim을 사용하여 이를 수행하는 방법은 여러 가지가 있습니다.

1 - 시각적 선택

시각적 선택에 대한 Mikhail Krutov의 의견에 대한 자세한 설명은 다음과 같습니다.

  • /Directory첫 번째 일치 찾기
  • Shift+ v(시각적 모드)
  • /Directory>모두 선택(찾을 때까지 선택Directory>
    • 검색을 사용하는 대신 두 번 클릭하여 2개의 단락을 선택할 수도 있습니다 }.
  • :'<,'>s/^/#/g모든 "줄 첫 번째 문자"를 #으로 바꾸십시오.
    • :'<,'>:Vim은 당신이 선택한 내용으로 무엇인가를 하고 싶어 한다는 것을 알기 때문에 당신이 입력할 때 자동 완성할 수 있습니다 .

2 - 시각적 블록 선택

DopeGhoti와 lgeorget은 다음과 같이 말했습니다.

  • 시각적 블록을 선택하려면 Control+를 클릭하세요 .v
  • }두 번 치다
  • 누르고 I#클릭하세요Esc

3 - 매크로

또 다른 방법은 매크로를 사용하는 것입니다. 유일한 주의 사항은 매크로를 기록한 후 매크로를 몇 번이나 반복해야 하는지 알아야 한다는 것입니다( set nu친구가 정신적으로 줄 수를 세는 데 도움을 줄 수 있습니다).

  • qq- q라는 매크로 기록을 시작합니다.
  • I#- 줄의 시작 부분에 문자를 삽입합니다 #. Esc삽입 모드를 종료 하려면 클릭하세요.
  • jq한 줄을 누르고 녹음을 중지하세요 .
  • 17@q이 매크로를 17번 실행을 누릅니다 .

답변2

Perl을 사용하면 다음과 같이 간단합니다.

perl -pe 'if ((/<Directory/ && !$done) ... /<\/Directory/) { $done = true; s/^/#/; }' < config_file

비결은 점 3개 연산자입니다( 점 2개 연산자는 및 가 같은 줄 <Directory> 에 있지 않은 한 작동합니다).</Directory>

  • /<Directory/ ... /<\/Directory/이 두 정규식 사이의 모든 줄과 일치합니다.
  • /<Directory/ && !$done$done = true;with in a block ( $done처음에는 기본적으로 false)은 <Directory>첫 번째 블록만 일치하도록 보장합니다.
  • -pe$_코드 블록을 실행한 후 표준 입력을 한 줄씩 읽어서 출력합니다.
  • s/^/#/prepend 와 일치하는 각 줄을 수정합니다 #.

관련 정보