문제

VIM의 행 범위에 줄 번호를 추가하려면 어떻게해야합니까? ": set nu"에서와 같이 아님 - 숫자 만 표시되지만 파일에 추가하지는 않습니다.

도움이 되었습니까?

해결책

와 함께

:%s/^/\=line('.')/

편집 : 주석을 요약합니다.

이 명령은 원하는만큼 조정할 수 있습니다.


시각적 선택에서 라인 앞에 숫자를 추가하고 싶다고 가정 해 봅시다 (V + 이동), 당신은 42에서 번호를 시작하기를 원합니다.

:'<,'>s/^/\=(line('.')-line("'<")+42)/

라인에서 숫자와 이전 텍스트 사이에 문자열을 추가하려면 ( . viml)에서는 숫자 표현으로 :

:'<,'>s/^/\=(line('.')-line("'<")+42).' --> '/

텍스트로 정렬하기 위해 이것을 필요로하는 경우 결과를 제로 채우고 싶을 수도 있습니다. printf ~을 위한 0001, 0002 ... 대신에 1, 2... 예 :

:%s/^/\=printf('%04d', line('.'))/

어쨌든, 더 많은 정보를 원한다면 VIM 도움말을 열어주십시오. :h :s 그리고 링크를 따르십시오 (|subreplace-special|, ..., |submatch()|)

다른 팁

cat -n 입력에 줄 번호를 추가합니다. 현재 파일을 파이프 할 수 있습니다 cat -n 전류 버퍼를 Stdout에 인쇄 한 내용으로 바꾸십시오. 다행히도이 복잡한 솔루션은 VIM에서 10 자 미만입니다.

 :%!cat -n

또는 하위 선택 만하려면 시각적으로 영역을 선택하고 다음을 입력하십시오.

 :!cat -n

그러면 시각적 선택 마커를 자동으로 넣고 입력 한 후에는 다음과 같습니다.

 :'<,'>!cat -n

줄 번호를 지우려면 사용하는 것이 좋습니다. control-v, 사각형을 시각적으로 선택할 수 있으면 해당 사각형을 다음과 함께 삭제할 수 있습니다. x.

GNU 시스템에서 : 외부 nl 이진 :

:%!nl

UNIX와 같은 환경을 사용하면 CAT 또는 AWK를 사용하여 VIM이 쉘과 친숙한 인터페이스를 가지고 있기 때문에 모든 것이 vim과 쉘에서 작동하기 때문에 선 번호를 쉽게 생성 할 수 있습니다.
에서 vim tip28:

:%!cat -n

또는

:%!awk '{print NR,$0}'

그러나 Win9X, Win9X의 MS-DOS에서 VIM을 사용하면이 툴킷을 잃어 버립니다. 다음은 VIM에 의해서만 이것을 보관하는 매우 간단한 방법입니다.

fu! LineIt()
  exe ":s/^/".line(".")."/"
endf

또는 알파벳으로 구성된 시퀀스는 위와 같이 쉽습니다.

exe "s/^/".nr2char(line("."))."/" 

당신은 또한 보체를 사용할 수 있습니다 :

:g/^/exe ":s/^/".line(".")."^I/"

파일에 추가하지 않고도 라인을 인쇄 할 수도 있습니다.

"때로는 종이에 줄 번호를 인쇄하기 위해 대형 소스 파일을 편집하는 것이 유용 할 수 있습니다.
그렇게하려면 옵션을 사용할 수 있습니다 :set printoptions=number:y 활성화 및 :set printoptions=number:n 이 기능을 비활성화합니다.
줄 번호를 항상 인쇄 해야하는 경우 라인을 놓습니다. set printoptions=number:y 에서 vimrc."

먼저 필요한 경우 기존 줄 번호를 제거 할 수 있습니다.

:%s/^[0-9]*//

그런 다음 줄 번호를 추가 할 수 있습니다. NR 현재 라인 번호가 하나부터 시작되므로 원하는 번호를 얻기 위해 수학을 할 수 있습니다. 다음 명령은 네 자리 줄 번호를 제공합니다.

:%!awk '{print 1000+NR*10,$0}'

그만큼 "Visincr" 플러그인은 일반적으로 숫자를 증가시키는 열을 삽입하는 데 좋습니다 (또는 문자, 날짜, 로마 숫자 등). 숫자 형식, 패딩 등을 제어 할 수 있습니다. 따라서 모든 라인 앞에 "1"을 삽입하십시오 ( :s 또는 :g 또는 Visual-Block Insert), 해당 열을 Visual-Block 모드에서 강조 표시하고 플러그인에서 명령 중 하나를 실행하십시오.

누군가가 이 훌륭한 대답, 여기 방법이 있습니다. 탈출 모드로 들어간 후 :

:%s/^/\=line('.').'    '/

^ 선의 시작을 의미합니다 %s 대체 지침입니다. 따라서 각 선의 시작 부분에 줄 번호를 넣고 4 개의 공간을 추가 한 다음 선의 내용을 대체하기 전에 놓고 파일의 모든 줄에 대해이 작업을 수행한다고 말합니다.

이것은 자동으로 그것을 대체합니다. 또는 명령이 귀하의 확인을 요청하도록하려면 다음을 수행하십시오.

:%s/^/\=line('.').'    '/igc

추신 : 힘 정력 :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top