나는 DSL의 버전이 다른 도구(예: ) ed
에 나타나기 때문에 DSL을 더 잘 이해 하려고 노력하고 있습니다 .sed
vim
현재 줄에서 시작하여 4줄 아래로 확장되는 명시적 범위를 사용 ed
하여 다음 4줄을 인쇄하려면 이 옵션을 사용합니다 ..,+4n
.,+4
그러나 문맥을 파악하기 위해 현재 줄 주위에 몇 줄을 인쇄하는 것은 중요해 보이며 약간의 구문적 설탕이 필요합니다.
현재 행을 기준으로 행 범위에 대한 약어가 있습니까 ed
?
예를 들어, 아래 내용은 .,+4n
상당히 길어 보입니다.
$ touch ~/foo
$ ed '-p* ' ~/foo
0
* 0a
1
2
3
4
5
6
7
8
9
10
11
.
* 5
5
* .,+4n
5 5
6 6
7 7
8 8
9 9
답변1
-4,+4n
처음 네 줄, 현재 줄, 다음 네 줄(번호가 매겨져 있음)이 인쇄됩니다.
같은 내용을 작성하는 또 다른 방법은 약간 더 짧은 것입니다 -4z8n
. 먼저 지정된 줄(여기 )로 이동한 다음 해당 줄과 추가 줄(여기)을 표시한다는 점을 z
제외하면 명령이 적용됩니다 . 행에 번호를 매기십시오 . 실제 차이점은 명령을 내리면p
-4
8
n
zn
다시(지금은 숫자가 없습니다) 표시됩니다다음8줄(또는 z
초기 명령 다음에 입력한 숫자)
두 명령 모두 "현재 행"을 변경하므로 수동으로 뒤로 이동하거나 -4
이동하기 전에 표시를 설정한 다음(예를 사용하여 ka
) 해당 표시로 다시 이동해야 합니다(예를 사용 'a
). 불행하게도 편집기는 ed
동시에 주어진 여러 명령을 허용하지 않습니다...
이 z
명령은 그렇지 않습니다.기준ed
ed
명령이지만 ed
GNU 및 BSD 시스템 모두에서 지원됩니다.
를 사용하면 ex
이 명령은 .z.5
현재 라인을 가운데에 두고 현재 버퍼의 5개 라인을 표시합니다. 여기서 커서를 마지막으로 표시된 줄 아래로 이동할 수도 있습니다.