![새 줄의 함수, 조건문 및 루프에 대해 괄호 형식을 지정하도록 VIM에 어떻게 지시합니까?](https://linux55.com/image/192055/%EC%83%88%20%EC%A4%84%EC%9D%98%20%ED%95%A8%EC%88%98%2C%20%EC%A1%B0%EA%B1%B4%EB%AC%B8%20%EB%B0%8F%20%EB%A3%A8%ED%94%84%EC%97%90%20%EB%8C%80%ED%95%B4%20%EA%B4%84%ED%98%B8%20%ED%98%95%EC%8B%9D%EC%9D%84%20%EC%A7%80%EC%A0%95%ED%95%98%EB%8F%84%EB%A1%9D%20VIM%EC%97%90%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%A7%80%EC%8B%9C%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
새 줄에 vim 형식 괄호를 만드는 방법이 있습니까?
예를 들어:
public class Foo {
private Foo(int a) {
if (a > 30) {
// do stuff
}
for (int i = 0; i < a; i++) {
// more stuff
}
}
}
다음과 같아야 합니다:
public class Foo
{
private Foo(int a)
{
if (a > 30)
{
// do stuff
}
for (int i = 0; i < a; i++)
{
// more stuff
}
}
}
왜 이런가요? zc
코드 블록의 형식이 두 번째 예와 같이 지정된 경우 VIM을 누르면 코드 블록이 보기 좋게 접혀지기 때문입니다 . 이 경우 VIM은 대괄호 안의 콘텐츠만 축소합니다. 첫 번째 예와 같이 코드 형식이 지정되면 VIM은 괄호 안의 내용뿐만 아니라 , if (...)
, for (....)
등도 접 습니다 function f()
.
class Foo()
그래서 VIM에게 두 번째 예와 같이 파일 형식을 지정하도록 지시하는 방법이 있는지 궁금합니다.
또 다른 옵션은 VIM에게 대괄호 앞에 오는 내용을 축소하지 않도록 지시하는 것입니다.
답변1
$
예, 이 작업은 매우 쉽게 수행할 수 있습니다. line() 끝의 기존 "{" 문자를 캐리지 리턴() 및 새 "{" 으로 바꾼 \r
다음 내용의 형식을 적절하게 지정하려면 다음 두 명령을 수행할 수 있습니다. 극단적인 경우에 대한 답변 끝의 편집):
:%s/{$/\r{
:%norm ==
첫 번째 명령은 다음을 수행합니다.
public class Foo
{
private Foo(int a)
{
if (a > 30)
{
// do stuff
}
for (int i = 0; i < a; i++)
{
// more stuff
}
}
}
두 번째 명령은 다음을 달성합니다.
public class Foo
{
private Foo(int a)
{
if (a > 30)
{
// do stuff
}
for (int i = 0; i < a; i++)
{
// more stuff
}
}
}
( %
위 명령의 표기법은 파일의 모든 줄에 적용된다는 의미입니다. 대신에 와 같이 범위를 지정하거나 :5,10s/{$/\r{
와 같은 상대 줄 번호를 사용하거나 -2,+3s/{$/\r{
, 시각적 모드에서 줄을 선택하고 을 클릭하고 :
, 바꾸기 명령을 사용할 수 있습니다. 이 라인에 적용됩니다).
( 문단 서식을
=ap
지정 하기 위해 서식을 적용할 수도 있습니다. 자세한 내용을 참조하세요.)a
p
:help =
편집하다
@blackyellow의 의견: 이것은 좋은 해결책이지만 한 가지 문제는 이미 올바른 형식의 줄을 "}"로 대체한다는 것입니다. 더 나은 패턴은 :%s/[^( |\t)]}$/\r{
"}" 앞에 두 개의 공백이나 탭이 있는 경우 줄 끝을 "}"로 바꾸지 않는 것 입니다 . 이는 올바르게 들여쓰기될 수 있음을 나타냅니다.