어떤 Vim 기능을 사용하십니까? [닫은]


13

나는 Vim 에서 거의 하루 종일 프로그래밍을 보내고 많은 사람들도 그렇게 할 것이라고 확신합니다. 일상적인 코딩을 훨씬 더 잘 만드는 기능은 무엇입니까? 내가 사용하는 것 중 하나는 gv 입니다. 이전에 선택한 텍스트를 다시 선택할 수 있습니다. 다시 들여 쓰기에 좋습니다!


1
역사적으로, 여기에 SO 질문에 대한 링크가 있습니다 : stackoverflow.com/questions/95072/…
Jax

아래에 내 의견을 적어두면 입력 할 필요조차 없습니다 gv. :)
Nathan Long

답변:


9

: % s / x / y / g

이 명령의 모든 인스턴스 대신 X를 사용하여 현재 파일에 y를 . 이것은 기본적으로 찾기 및 바꾸기이지만, 직장에서 그것을 배우고 귀중한 것이 되어서 자주 사용합니다 .

또한 / 검색 문자열

그런 다음 n 을 사용 하여 파일 내 검색 문자열 의 모든 인스턴스를 탐색 하십시오. 특히 전체 파일에 규칙을 적용 할 수없는 경우 수동으로 더 쉽게 조정할 수 있습니다.


실제로 직장에서 코드베이스의 지연 된 섹션을 변환하려고 노력하고 있으며 vim 정규 표현식 (지금까지)으로 완전히하고 있습니다. 정말 잘 작동합니다!
Frew Schmidt

그 끝에 'c'를 추가하여 명령을 대화식으로 만드십시오. 예 : : % s / x / y / gc
sml

1
참고는 것을 %대체 할 곳이다 - %. "현재 파일을"수단을 일부 행과 유형을 시각적으로 강조 표시 :s하면 해당 선택 항목만으로 대체를 수행 할 수 있습니다.
Nathan Long

7

== 현재 줄에서 자동 들여 쓰기를 수행합니다.

그러나 일반적으로 파일의 끝 을 들여 쓰거나 현재의 중괄호 안에 들여 쓰기 =하는 동작을 사용 합니다.=G=i}


2
또한 수동으로 들여 쓰기를 할 수있는 >> 및 <<를 명심하십시오.
Frew Schmidt

@Frew-p. 또한, 추가하는 경우 vmap <Tab> >gvvmap <S-Tab> <gv당신에게 .vimrc, 당신은 들여 쓰기를 할 수 있으며 각각 탭과 쉬프트 탭,와내어 쓰기, 그리고 당신이 들여 쓰기 또는내어 쓰기 추가 할 수 있도록 시각적 선택 모드로 바로 돌아 갈 것이다.
Nathan Long

6

=% 코드 블록 내에서 모든 것을 자동 들여 쓰기


우우! 그것은 나에게 새로운 것입니다!
Frew Schmidt

커서가 시작 부분에 있으면 작동합니다 {. 블록 안에 있다면 =i{"중괄호 안에 들여 쓰기" 를 할 수 있습니다 .
Nathan Long

5

*명령 모드에서 커서 아래의 단어를 검색 하십시오 .


1
그리고 자매 명령 인 #을 잊지 마십시오.이 명령은 같은 일을하지만 앞으로가 아니라 뒤로 이동합니다!
Frew Schmidt

5

:!에 대한 귀중한 - 명령을 ls보내고, 그리고 "sudo는 티"트릭.

티 트릭을 설명하라는 요청을 받았습니다. 기본적으로 VIM을 루트로 시작하지 않은 경우에도 관리자 권한으로 텍스트 파일을 저장할 수 있습니다.

:w !sudo tee %

여기에서 "sudo tee"트릭을 설명하고 싶을 수도 있습니다 :-) 또한 변수 정의와 강조 표시를 강조 표시 한 후 :! 정렬을 수행하고 싶습니다.
Frew Schmidt

다음을 사용하여 Vim을 훌륭한 "스크립트 가능"편집기로 만들 수 있습니다. 그리고 일부 쉘 / 파이썬 / 펄 / 기타 스크립트.
Jonas

실제로 대안이 !ls실행 vnew출력하고, r!ls수평으로 새로운 버퍼를, 그리고 정신과한다. 디렉토리에 3 개가 넘는 디렉토리의 모든 파일을 기억하고 귀찮게 할 수는 없습니다.)
new123456

4
.

때리는. 키는 이전 명령을 반복합니다. 예를 들어을 편집하는 데 적합 .ini합니다.


이것은 놀랍게도 강력하지만 실제로 잘 활용하려면 약간의 vim-ing이 필요합니다.
aaron


2

나는 항상 gq 를 사용하여 전자 메일, 텍스트 파일 등에서 줄 바꿈을 다시 수행합니다. 전자 메일에 회신하고 (나는 pine을 사용) 여러 개의 이전 회신을 편집 할 때 정말 유용합니다.


우, 나는 이것에 대해 완전히 잊었다!
Frew Schmidt

왜 인기 전자 메일 클라이언트가 유사한 기능을 지원할 수 없습니까?
erichui

이 커서 위치 유지하기 때문에 최근에 내가 대신 GQ의 GW를 사용하고
SergioAraujo

2

어디서부터 시작해야합니까? 지난 5 분 동안 사용했던 것들이 여기에 있습니다.

  • NERD 트리 -파일 탐색. VIM을 IDE와 비슷하게 만듭니다.
    • 나를 위해 한 가지 큰 것은 cd디렉토리로 이동 한 다음 쉘 매핑 (아래)을 통해 쉘 프롬프트로 드롭하는 기능 입니다.
  • ci 붙어있는 것을 비우기 위해.
  • :! 표준 앱을 시작합니다.
    • 쉘 프롬프트, MySQL 클라이언트, 아파치 로그 파일 등을 시작하기위한 매핑이 있습니다.
    • Subversion 통합은 항상 좋습니다. 빠른 diffs stat
  • :abbr 큰 블록을 반복해서 입력 할 수 있습니다.
  • 탭. 내가 더 말할 필요가 있습니까?
  • 항상 파일을 분할합니다. :Sex항상 좋습니다.
  • :set paste! 자동 들여 쓰기를하지 않아도됩니다.

나는 abbr를 제외한 모든 것을 사용합니다. 나는 약어보다 더 많은 매크로를 만드는 경향이 있습니다.
Frew Schmidt


1

C / Tcl / Perl 코드를 작성하거나 탐색 할 때 다음 명령을 많이 사용합니다.

복사-붙여 넣기 코드

CTRL-f그리고 블록 단위 CTRL-b순회
%를 위한 페이지 순방향 및 역방향 순회에 대해
^ 라인의 시작으로 이동
$ 마지막 라인의 끝으로 이동

붙여 넣기를 위한 복사를 위해 명령 v(시각 모드) 및 위의 순회 키를 사용하여 코드 선택을 시작하십시오.
y
p

s 문자를 삭제하고 삽입 텍스트를 사용하여 새 텍스트를 입력하십시오.

코드 레벨 순회 (코딩 스타일 규칙 필요)

]]
[[이전 기능 시작을위한 다음 기능 시작

CTRL-] 태그를 사용할 수있는 경우 변수 / 함수 / 매크로의 정의로 이동합니다.

검색

* => 검색 단어 (또는 v를 사용하여 선택한 텍스트)
# => 검색 단어 (또는 v를 사용하여 선택한 텍스트)
n => 역방향으로 이전 검색 명령을
N 실행합니다. => 이전 검색 명령을 역방향으로 실행합니다.

위의 모든 명령 앞에 숫자를 추가하여 실행할 횟수를 나타낼 수 있습니다. 이 추가 차원의 힘의 실현은 vim을 점점 더 많이 사용하고 개선하기 위해 스스로에게 도전함에 따라 서서히옵니다.


아,]]와 [[는 나에게 새롭다. 멋지다!
Frew Schmidt

0

난 그냥 텍스트를 입력합니다. 다른 모든 것은 단지 설탕입니다.


0

저는 TextPad의 이전 사용자이며 해당 프로그램의 단축키 키를 많이 기억했습니다. Vim에서 내가 한 첫 번째 작업 중 하나는 일관성을 유지하기 위해 맵 기능을 배우는 것입니다 (F5 검색, F8 바꾸기 등). 나는 개인 색채를 만들었고 다른 사람들의 vimrc 파일에서 많이 빌렸다. 비바 Vim! 어느 정도 구성 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.