Vim에는 다음과 같은 텍스트가 있습니다.
key => value1
key => value2
key => value1111
key => value12
key => value1122222
각 줄 끝에 “,”를 추가하고 싶습니다. 이전 텍스트는 다음과 같습니다.
key => value1,
key => value2,
key => value1111,
key => value12,
key => value1122222,
누구든지 이것을하는 방법을 알고 있습니까? 이를 위해 시각적 차단 모드를 사용할 수 있습니까?
답변
이것은 파일의 모든 줄에 적용됩니다.
:%s/$/,/
전체 파일 대신 줄의 하위 집합을 수행하려는 경우 %
.
한 가지 방법은 시각적 선택을 수행 한 다음 :
. 그것은 :'<,'>
당신 을 위해 채워질 것입니다, 그리고 당신은 그것의 나머지를 입력합니다 (당신은 추가하기 만하면됩니다 s/$/,/
)
:'<,'>s/$/,/
답변
실제로 시각적 블록 모드를 사용하여이를 수행하는 방법이 있습니다. $A
시각적 블록 모드에서 누르기 만하면 선택 항목의 모든 줄 끝에 추가됩니다. 를 누르면 추가 된 텍스트가 모든 줄에 나타납니다 Esc.
따라서 이것은 가능한 해결책입니다.
vip<C-V>$A,<Esc>
즉, 일반 모드에서 시각적으로 단락을 선택하고 vip
시각적 차단 모드로 전환 한 다음 CTRLV모든 줄 $A
에 쉼표를 추가하고 ,
를 눌러 Esc확인합니다.
설명서는에 :h v_b_A
있습니다. 예제 섹션에는 작동 방식에 대한 설명도 있습니다 :h v_b_A_example
..
답변
또 다른 훌륭한 기능을 사용하는 또 다른 솔루션 :
:'<,'>norm A,
을 참조하십시오 :help :normal
.
답변
ex 모드가 가장 쉽습니다.
:%s/$/,
: - enter command mode
% - for every line
s/ - substitute
$ - the end of the line
/ - and change it to
, - a comma
답변
대체 명령은 시각적 선택에 적용 할 수 있습니다. 변경하려는 줄 위에 시각적 블록을 만들고를 입력 :하면 명령 줄이 다음과 같이 초기화 :'<,'>
됩니다.. 이는 대체 명령이 다음과 같이 시각적 선택에 대해 작동 함을 의미합니다.
:'<,'>s/$/,/
그리고 이것은 당신이 언급 한 것처럼 각 줄의 끝에 쉼표를 정말로 원한다고 가정하면 예제에서 작동 해야하는 대체입니다 . 후행 공백이 있으면 그에 따라 명령을 조정해야 할 수 있습니다.
:'<,'>s/\s*$/,/
이렇게하면 줄 끝 앞의 공백을 쉼표로 대체하여 후행 공백을 효과적으로 제거합니다.
동일한 명령이 일련의 행에서 작동 할 수 있습니다 (예 : 다음 5 개 행 : :,+5s/$/,/
또는 전체 버퍼 🙂 :%s/$/,/
.
답변
‘key’로 시작하는 줄 끝에 ‘,’를 추가하려면 다음을 사용하십시오.
:%s/key.*$/&,
답변
나는이 <M-DOWN>
매핑 (아래쪽 화살표 ALT) <DOWN>.
나는 매우 빠르게 라인의 일련의 마지막 명령을 반복 할 수 있도록합니다. 이 매핑을 사용하여 다음을 수행 할 수 있습니다.
A,<ESC>
그런 다음 Alt 키를 누른 상태에서 반복적으로 눌러 각 줄 끝에 쉼표를 추가합니다.
이것은 라인이 무엇을하고 변화를 얻지 못하는지를 아주 잘 제어 할 수 있기 때문에 저에게 잘 작동합니다.
(또한 쉽게 반복 할 수 있도록 유사한 매핑 된 다른 화살표가 있습니다. .
)
다음은 vimrc에 붙여 넣을 매핑 라인입니다.
map <M-DOWN> <DOWN>.