나는 그것으로부터 배웠다이 스택 오버플로 질문vi
/를 사용하여 vim
지정된 범위의 행 번호를 주석 처리 할 수 있습니다 . 예를 들어 다음과 같은 bash 스크립트가 있다고 가정해 보겠습니다.
#!/bin/bash
This
is
my
very
very
great
script
이제 주석 문자를 사용하여 6~8행(단어 및 및 포함)을 주석 처리 very
한다고 very
가정 great
합니다 #
. vi
/ 에 입력하면 다음을 얻습니다 vim
.:6,8s/^/#
#!/bin/bash
This
is
my
#very
#very
#great
script
6~8행은 주석 처리되어 있습니다.
내 질문은 다음과 같은 라이너를 입력하는 것이 가능합니까?제거하다6~8행의 주석 문자 #
(파일의 다른 주석 행은 제외)?
vi
하지만 실제로 vim
. 실제로는 script.sh
이 명령을 사용하여 파일을 엽니다 vi script.sh
. 또한 명령을 입력하면 이 which vi
표시됩니다 /usr/bin/vi
. 그러나 간단히 입력 vi
하고 키를 누르면 Enter다음과 같은 결과가 표시됩니다.
~ VIM - Vi IMproved
~
~ version 7.2.330
~ by Bram Moolenaar et al.
~ Vim is open source and freely distributable
~
~ Sponsor Vim development!
~ type :help sponsor<Enter> for information
~
~ type :q<Enter> to exit
~ type :help<Enter> or <F1> for on-line help
~ type :help version7<Enter> for version info
이것은 내가 실제로 사용하고 있는 것을 나타내는 것 같습니다 vim
. SSH를 사용하여 내 PC에서 원격 Ubuntu Linux 클러스터에 액세스하고 있습니다. 저는 Ubuntu Linux GUI를 사용하고 있지 않습니다.
답변1
당신은 그것을 사용할 수 있습니다 :
:6,8s/^#//
그러나 Block Visual 선택 모드를 사용하는 것이 훨씬 쉽습니다. 6행의 시작 부분으로 이동하여 을 누르고 Ctrl-v
8행으로 내려가서 를 누르십시오 x
.
게다가"너드 평론가"끼워 넣다.
답변2
vi
귀하의 질문에 or 사용이 지정되어 있다는 것을 알고 있지만 vim
파일을 수동으로 열지 않고도 이 작업을 수행할 수 있는 몇 가지 다른 옵션은 다음과 같습니다.
진주
perl -ne 'if($. <=8 && $. >= 6){s/^\s*#//;}print' foo.sh
펄 버전>=5.10
perl -ne '$. ~~ [6..8] && s/^\s*#//;print' foo.sh
그러면 파일 내용이 인쇄되어 다른 파일(
> new_file.sh
)로 리디렉션하거나i
파일의 내부 편집을 사용할 수 있습니다.perl -i -ne '$. ~~ [6..8] && s/^\s*#//;print' foo.sh
sed
sed '6,8 s/^ *#//' foo.sh
마찬가지로 원본 파일을 제자리에서 편집하려면 다음을 사용하십시오
i
.sed -i '6,8 s/^ *#//' foo.sh
awk
/gawk
등:gawk '(NR<=8 && NR>= 6){sub("^ *#","")}{print}' foo.sh
순수한
bash
:c=1; while read line; do if [ $c -ge 6 ] && [ $c -le 8 ]; then echo "${line/\#/}" else echo $line fi let c++; done < foo.sh
답변3
vi
는 대부분의 GNU/Linux 배포판에서 심볼릭 링크이므로 입력할 때 vim
실제로는 .vim
vi
주석을 제거하려면 다음을 입력하거나 :6,8s/^#//
기호 앞의 일부 선행 공백을 :6,8s/^\s*#//
제거하십시오 .#
답변4
을(를) 사용 중일 수 있습니다 vim.tiny
. 어쨌든 다음 방법으로 원래 댓글을 삭제할 수 있습니다.
:6,8s/^#//
물론, 다르게 삽입하는 경우(예: 추가 공백 사용), 그 안의 다른 콘텐츠를 제거해야 할 수도 있습니다. 전체 vim을 사용하면 시각적으로 열을 선택하고 문자를 삽입/제거하는 것이 동일한 작업을 수행하는 더 쉬운 방법입니다.