비주얼 블록 모드 일 때 텍스트 교체


10

어쩌면 내가 잘못된 방법을 찾고 있지만 어떻게 해야하는지 찾지 못했습니다.

시나리오는 다음과 같습니다. 텍스트 파일에 동일한 단어를 여러 줄에 삽입하려는 목록이 있습니다. 여기에 예제 텍스트가 있습니다.

12.1 항목 1
12.2 항목 2
12.3 항목 3

이제 밑줄로 표시된 8 번째 열을 시각적으로 표시 Done하고 항목 열을 이동하지 않고 공백의 일부를 바꾸려고합니다 .

12.1 _ 품목 1
12.2 _ 항목 2
12.3 _ 항목 3

교체 모드로 전환 할 수있을 것으로 예상했지만 insert ( I), append ( A) 또는 change-mode ( c) 만 입력 할 수 있습니다 . 변경 모드는 내가 원하는 것에 가깝습니다. 단어의 길이를 알고 있으면 블록을 같은 너비로 설정할 수 있습니다.

내가 여기서 놓친 것이 있습니까?

답변:


18

왜 4 개의 열을 선택하고 누르지 c않습니까?

<C-v>
2j
3l
cDone
<Esc>

또한 다음을 사용할 수 있습니다 :h normal.

V
2j
:'<,'>norm 7lRDone
<Esc>

1
그것은 작동 Done하지만 다른 것을 쓰려면 가능한 한 문자를 세지 않고 싶습니다.
Thor

1
:norm그렇다면 당신의 친구입니다.
romainl

네, 두 번째 솔루션은 편리한 매핑을 위해 사용될 수 있습니다. 감사합니다.
Thor

1

시각적 블록 내에서 대체하려는 경우 vis.vim플러그인을 사용할 수 있습니다 .

http://vim.wikia.com/wiki/Applying_substitutes_to_a_visual_block

설치하기 위해서:

http://www.drchip.org/astronaut/vim/index.html#VIS 에서 vis.vba.gz를 다운로드 하십시오.

# Open vis.vba.gz in Vim 7.1 or later.
vim vis.vba.gz

# Source the open file.
:so %

# Quit Vim
:q

설치 한 후 :

ctrl-v to enter visual-block mode
Move to select the block you want
:B s/pattern/newtext/

더 좋은 방법은 대체물뿐만 아니라 시각적 블록에서 Ex 명령을 수행 할 수 있다는 것입니다. 예를 들어 :B !sort.


좋은 플러그인, 나는 그것을 사용할 것이다 :-). 그러나 임의의 열을 대체하는 데 어떻게 사용할 수 있습니까?
Thor

그래도 여전히 임의의 너비 열과 일치하도록 시각적 블록 너비를 빠르게 설정해야하는 문제가 있습니다. 일반적으로 <count>를 수행 w하거나 e여러 열을 빠르게 선택한 다음 h또는 로 조정합니다 l.
Christian Long
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.