이전 줄에서“=”까지 콘텐츠를 삭제하는 방법은 무엇입니까?


9

자바 스크립트 코드의 예를 사용합니다.

1        var a = 1;
2        var b = |{};

커서가 |(커서 모양이 블록 일 때 문자 "{" 에서) 위치에 a있습니다. 객체에 할당해야한다는 것을 알았 으므로 아래와 같이 수정하고 싶습니다.

1        var a = {};

커서가 "{"에 있는지 알고 싶습니다. "{1 행의"= "기호 뒤에 공백이 될 때까지"{ "앞의 모든 내용을 빠르게 삭제하는 방법은 무엇입니까?

다른 일반 편집기에서는 백 스페이스 키를 눌러 코드를 삭제합니다. 그러나 나는 이것을 vim에서 어떻게 달성하지 못합니다.


i백 스페이스 키를 누르고 사용할 수도 있습니다 . 아무도 당신을 쏘지 않을 것입니다. 내 생각에
elyashiv

1
백 스페이스는 위 줄의 문자를 삭제하지 않습니다
Aaron Shen

3
@AaronShen '백 스페이스'설정에 따라 다릅니다. eol백 스페이스 포함되면 줄 바꿈 삭제됩니다. 또한 start설정에 포함되어야합니다. (참조 :help backspace). 그래도이 방법을 사용하지 마십시오! 아래 답변에 더 빠른 방법이 몇 가지 있습니다.
Rich

답변:


20

질문을 완전히 이해했는지 확실하지 않지만 var a = {};커서 위치에서 만 사용할 수있을 때까지 삭제하려면 커서 위치에서d?1Enter

d모션을 가져 와서 /정방향 검색 또는 ?역방향 검색 과 함께 검색 패턴을 제공 할 수 있습니다 .

다음은 이것을 보여주는 작은 gif입니다.

여기에 이미지 설명을 입력하십시오


1
Enter타이핑 한 후에 적중해야한다고 언급 할 가치가 있습니다 d?1.
Rich

@Rich 정말 감사합니다, 나는 그것을 포함하도록 답변을 업데이트했습니다.
akshay

1
해당 쉘은 어떤 글꼴을 사용합니까?
Chris Burt-Brown

@ ChrisBurt-Brown : Terminus
akshay

10

vim (클래식 vi는 아님)을 사용하는 경우, 예를 들어 vkd(또는 vkx) 할 수 있습니다.

  • v '시각적'(선택) 모드로 전환합니다
  • k 한 줄 위로 올라가 커서를 '1'에 놓고 삭제하려는 부분을 선택하십시오.
  • d또는 x선택을 삭제합니다

5

삭제

이 특정 예의 dgk경우 가장 빠른 방법 중 하나입니다.

d으로 명령은, 하기 Akshay 설명 , 모든 커서가 시작되는 사이의 문자 삭제, 모션 다음과 움직임에 걸리는 경우 할 수 있습니다.

코드에서 커서 위치와 같은 열 사이의 모든 행을 한 행 위로 삭제하려고하므로 gk동작 과 함께 커서를 위쪽으로 이동하면 (연산자와 함께 사용하는 경우 비선형) 목표를 달성합니다.

편집 : BobH 는이 방법 이 설정되어 있을 때만 작동한다는 의견을 지적합니다 'wrap'. 당신이하지 않으면 이와 같이, 항상 랩 세트를 가지고, 당신은 사용 떨어져 아마 더 낫다 dvk또는 vkd이 페이지의 다른 답변에 의해 제안.

거꾸로 단어 삭제

d5b또는 을 사용하여 d4B각각 5 워드 또는 4 워드를 뒤로 삭제합니다. ( 1;하나의 단어이지만 두 개의 정규 단어입니다).


dk가 현재 행과 위 행을 모두 완전히 삭제하는 이유
Aaron Shen

@AaronShen Nope. 시도 해봐.
Rich

1
@Rich 그것이 효과가 있다면 삭제 이동을 가능하게하는 설정이 있습니다. 방금 테스트했으며 vim -u NONE -U NONE두 줄을 모두 삭제합니다.
Vitor

@Vitor 당신이 맞아요. 지금 어떤 설정을하는지 알아 내려고합니다.
Rich

1
BTW gk는 문자 적으로 필요에 따라 :set wrap(어떤 암호로) 사용하는 것으로 나타났습니다 . 나는 이것이 왜 다른 사람들을 위해 일한 것처럼 보이지만 나를 위해 도움이되지 않는 것처럼 보일 수는 없었습니다 gk. 단서의 주요 의미는 gk줄 바꿈과 관련이 있다는 것입니다. 일단 랩을 설정하려고 시도하면 변덕스럽게 작동했습니다.
BobH

1

아직 댓글을 달 수 없으므로 새 답변을 작성해야합니다. d k호환되지 않는 옵션을 사용하는 경우에도 Rich에서 제공 한 키 가 작동하지 않습니다. 그 이유는 모션 k이 vim에 의해 라인 단위로 간주되어 두 라인이 모두 삭제 되기 때문일 수 있습니다 . 보낸 사람 :help d:

d {motion} 명령에 대한 예외 : 모션이 선 방향이 아닌 경우 모션의 시작과 끝이 같은 라인에 있지 않으며 모션 시작 전후에 공백 만 있으면 삭제가됩니다. 선으로. 이는 삭제로 인해 남아있을 것으로 예상되는 공백 행도 제거됨을 의미합니다. | o_v |를 사용하십시오 동작을 문자 적으로 강제하는 연산자

또한 구제책을 보여줍니다. dvk모션을 문자 적으로 강제로 사용 합니다. 이것은 나를 위해 속임수를합니다.

나는 전에 o_v를 몰랐으므로 여기에 있습니다 :help o_v:

V

조작자 뒤, 모션 명령 전에 사용하는 경우 : 동작이 선 방향 일 때에도 문자로 작업하도록 강제하십시오. 모션이 선 방향 인 경우 | exclusive |가됩니다. 모션이 이미 문자로 표현 된 경우 포함 / 배타를 토글합니다. 배타적 모션 포함 및 배타적 모션 독점을 만드는 데 사용할 수 있습니다


'호환되지 않는'것은 완전한 붉은 청어였습니다. 내가 바보이기 때문에 테스트 할 때 엉망이되었습니다.
Rich

또한 dgk를 사용할 수 있습니다. 여기서 gk는 배타적이며 줄 단위가 아닙니다.
MS.Kim
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.