이전에 알고 싶었던 간단한 Vim 명령 [닫기]


378

나는 Vim에서 항상 새로운 명령을 배우고 있지만, 모든 사람들이 가끔 새로운 것을 배우게 될 것입니다. 나는 최근에 이것에 대해 배웠다.

zz, zt, zb- 화면의 중간, 상단 또는 하단에 위치 커서

오래 전에 배우고 싶었던 다른 유용하거나 우아한 명령은 무엇입니까?


46
기술적으로 zz, zt, zb는 커서를 중간 / 상단 / 하단에 놓고 화면 을 배치합니다 . 커서 를 중간 / 상단 / 하단 에 위치 시키 려면 M, H 또는 L을 사용하십시오. 두 명령 세트 모두 유용합니다!
Peter

1
몇 달 또는 1 년 전에이 게시물을 읽은 후 매일 도움이되었습니다. dap는이 게시물 덕분에 한 시간에 여러 번 단락을 이동하는 데 사용하는 것입니다.
Funkodebat

33
나는 건설적이지 않은 것으로 표시된 페이지에서 너무 많은 트릭을 집어 들지 못했습니다 :) 모두 감사합니다.
Tasos Bitsios

답변:


315

삽입 모드를 전환 하는 CtrlC대신 사용할 수 있다는 것을 알고 싶습니다 Esc. 그것은 저에게있어 실질적인 생산성 향상이었습니다.


93
Caps-Lock을 Esc로 다시 매핑했습니다. 일반 Esc와 Ctrl-C보다 쉽습니다.
Kasper

114
이런 세상에. vi의 15 년과 나는 이것을 전혀 몰랐다
Chris K

31
또 다른 인기는 ESC에 'jj'를 사용하는 것입니다. 나는 지금 까지이 접근법을 좋아합니다. :지도! jj <ESC>
claytron

27
CTRL- [을 사용할 수도 있습니다.
Jason Down

42
@claytron의 변형으로 'jk'를 사용하십시오. 당신이 무의식적으로 INSERT 모드에 있다면, jk는 당신이 있던 곳을 떠날 수 있으므로 언제든지 (신용 : 다른 사람 ... 내 생각이 아님) 때릴 수 있습니다.
Kyle

197

내가 배운 가장 최근의 "와우"트릭은 복잡한 검색 및 교체 방법입니다. 과거에는 종종 대체 작업을 수행하는 정규 표현식이 복잡하여 작동하지 않았습니다. 더 좋은 방법이 있습니다.

:set incsearch             " I have this in .vimrc
/my complicated regexp     " Highlighted as you enter characters
:%s//replace with this/    " You don't have to type it again

여기서 "트릭"(더 나은 단어를 원함)은 검색을 사용하여 정규 표현식을 작성하고 문자를 입력 할 때 'incsearch'가 강조 표시 한 다음 대체에 빈 패턴을 사용할 수있는 방법입니다. 패턴의 기본값은 마지막 검색 패턴입니다.

예:

/blue\(\d\+\)
:%s//red\1/

다음과 같습니다.

:%s/blue\(\d\+\)/red\1/

보다:

:help 'incsearch'
:help :substitute

1
와우 ...이 같은 뭔가를 찾고 있었어요
figurassa

1
그래, 나는 이것을 빨리 알기를 바란다. 그러나 다시, 그것이 내가 배우는 모든 것에 대해 내가 말한 것입니다. vim의 새로운 기능입니다.
Robert Massaioli

26
이것을 정말로 좋아하는 사람 <Ctrl-R>/은 마지막 검색 쿼리를 삽입하십시오. (참조 :help i_CTRL-R) 위와 유사하지만 실제로는 검색 결과의 일부를 캡처하려고합니다. (이 같은 %s:/\\([fF]rank\\) and mary/marie and \1/g)
idbrii

4
:%s//...*(커서 아래의 검색 단어) 와도 작동합니다 . visual-star-search라는 플러그인 *은 시각적 선택의 전체 텍스트와 일치 하도록 기능을 확장하여 선택한 텍스트 (예 : v3e3 개의 시각적 단어 선택) *(검색) 및 :%s//replacement/g(모든 발생을 " 바꿔 놓음"). 나는 이것을 너무 자주 사용하여 전역 대체 명령에 대한 매핑을 갖습니다 :nmap <Leader>s :%s///g<left><left>.
패트릭 오스 시티

1
@idbrii 사람들은 빔의 noobs에 (나), (가)있을 수 있습니다 읽기 때문에 %s:해야 :%s하고, 내 시스템에, 내가 필요로 \(\)대신\\(\\)
찰리 Gorichanaz

155

내 친구에게 가장 많이 사용되는 명령에 대한이 참조를 만들었습니다.

select                                   v
select row(s)                            SHIFT + v
select blocks (columns)                  CTRL  + v
indent selected text                     >
unindent selected text                   <
list buffers                             :ls
open buffer                              :bN (N = buffer number)
print                                    :hardcopy
open a file                              :e /path/to/file.txt
                                         :e C:\Path\To\File.txt
sort selected rows                       :sort
search for word under cursor             *
open file under cursor                   gf
  (absolute path or relative)
format selected code                     =
select contents of entire file           ggVG
convert selected text to uppercase       U
convert selected text to lowercase       u
invert case of selected text             ~
convert tabs to spaces                   :retab
start recording a macro                  qX (X = key to assign macro to)
stop recording a macro                   q
playback macro                           @X (X = key macro was assigned to)
replay previously played macro *         @@
auto-complete a word you are typing **   CTRL + n
bookmark current place in file           mX (X = key to assign bookmark to)
jump to bookmark                         `X (X = key bookmark was assigned to
                                             ` = back tick/tilde key)
show all bookmarks                       :marks
delete a bookmark                        :delm X (X = key bookmark to delete)
delete all bookmarks                     :delm!
split screen horizontally                :split
split screen vertically                  :vsplit
navigating split screens                 CTRL + w + j = move down a screen
                                         CTRL + w + k = move up a screen
                                         CTRL + w + h = move left a screen
                                         CTRL + w + l = move right a screen
close all other split screens            :only

*  - As with other commands in vi, you can playback a macro any number of times.
     The following command would playback the macro assigned to the key `w' 100
     times: 100@w

** - Vim uses words that exist in your current buffer and any other buffer you may have open for auto-complete suggestions.

이름이 X 인 마크로 이동하기 위해 "~ X"를 나열합니다. 저에게는 효과가 없습니다. 대신 " 'X"(작은 따옴표)를 사용합니다.

와. 당신의 절대적으로 맞습니다. 내가 가이드를 타이핑 할 때, 나는 내 눈이 물결표만을 보았고 등 진드기 위에 광택이 났다고 생각한다. 그에 따라 업데이트하겠습니다. 고마워요
brian newman

5
이 목록은 훌륭하지만 실제로이 표를 어떻게 그렸는지 알고 싶습니다. VIM과 함께? 어떤 플러그인? 나는 현재 하나를 찾고 있습니다.
Kent

6
VIM을 사용했지만 플러그인은 없습니다. 하나; 선택 블록 기능을 사용하면 비교적 쉽습니다. 목록이 유용하다는 것을 알게되어 기쁩니다! ~ brian
brian newman

11
블록 선택을위한 Ctrl-Q는 CTRL-V를 붙여 넣을 수있는 mswin.vim의 고유성입니다. 대부분의 vim 사용자는이 악을 고려하고 mswin.vim을 비활성화합니다. "+ P 또는 Ctrl-R +는 클립 보드 내용을 삽입하기가 어렵지 않습니다.
Benoit

144

gi 는 삽입 모드로 전환하여 이전과 같은 위치에 커서를 놓습니다.


29
내가 g;지금 에 대해 알게되었을 때 나는 너무나 기뻤다 :-)
Patrick Oscity

@longdeqidao는 전혀 없습니다. 마지막 삽입 점으로 돌아갑니다. 따라서 하트 컨텐츠를 스크롤하면 마지막 삽입 위치로 되돌아갑니다.
Cyber ​​Oliveira

9
참고로, g; (@PatrickOscity가 위에서 언급 한) 커서를 편집 한 위치에 놓습니다. 여러 번 사용하여 기록으로 돌아갈 수 있습니다. 내 vim 도움이 이상한 이유로 이것을 언급하지 않기 때문에 여기에 주목하십시오.
PonyEars

13
Vim의 직관성은 결코 감동하지 않습니다. @PonyEars가 언급 했으므로 g;그것의 "반대"가 있고 보라면 시도해 보았습니다 g,. 앞으로 갈 수 있습니다!
Cyber ​​Oliveira

a더 짧습니다. :) 그러나 일반적으로 반대 작업 gi인 매우 직관적 g입니다.
Erwin Rooijakkers

105
:큐!

vi를 처음 시작하기 전에 알고 있었으면 좋겠습니다.


23
이맥스 녀석으로서, 그것은 내가 읽은 가장 재미있는 의견입니다. 확실하지 않다고 생각합니다. 오늘 날 행복하게 했어
pjammer

29
vim과 emacs를 같은 날에 처음으로 시도한 것을 기억하고 종료하는 방법을 모릅니다. 나는 이 사람들에게 도대체 무엇이 잘못인지
physicsmichael

13
+1. vim을 처음 시작할 때 기본 메시지는 "write : q to quit"입니다. 너무 많은 시간을 절약했을 것입니다 lol
José Ramón

2
@ JoséRamón 그러나 않습니다 당신이 파일을 열지 않고 정력 입력하면 기본적으로 화면에 보여줍니다. 최근에 추가 되었습니까? 나는 몇 년 전에 vim을 시도한 것을 분명히 기억할 수 있으며 이미 존재했습니다. 또한 :q!버퍼를 저장하지 않고 종료하려고하면 사용하도록 지시합니다 .
mechalynx

5
@ivy_lynx 예, 당신이 옳을 수도 있지만 파일없이 vim을 열 때만 가능합니다. 일반적으로 vim을 처음 열면 Unix에서 구성 파일을 편집해야하므로 "$ vim file"을 작성하면 나갈 수 없습니다. 아니면 내가 유일한 사람입니까?
José Ramón

56

^ XF 는 현재 디렉토리의 파일 이름 사용을 완료합니다. 더 이상 터미널에서 복사 / 붙여 넣기 또는 고통스러운 이중 점검이 필요하지 않습니다.

^ XP 는 현재 파일에서 단어 사용을 완료합니다

: set scrollbind 는 한 버퍼가 다른 버퍼와 나란히 스크롤하도록합니다. 예를 들어 창을 두 개의 수직 창으로 분할하십시오. 각각 하나의 파일을로드하십시오 (아마도 동일한 파일의 다른 버전). 수행 :set scrollbind각. 이제 하나를 스크롤하면 두 창이 함께 스크롤됩니다. 파일 비교에 이상적입니다.


스크롤 바인드를 활성화 한 후 비활성화하는 방법은 무엇입니까?
Amjith

2
jinxed_coder : :set noscb끄고 켜는 데 사용 :set scb합니다 (아님 :scrollbind). :h scrollbind
jmdeldin

으악. ': set scrollbind'가 수정되었습니다.
Brian Agnew

7
^ XP 는 파일의 이전 단어보다 우선하고 ^ XN 은 파일 의 다음 단어보다 우선합니다.
u0b34a0f6ae 2018 년

file1을 열고 :diffsplit file2vim을 실행 하거나 시작하여 파일을 비교할 수도 있습니다 vim -d file1 file2. Vim은 자동으로 두 파일을 스크롤 바인드합니다.
Brian McCutchon

51

전체 명령 세트를 사용하여 대괄호 / 괄호 / 따옴표 / 태그 안의 텍스트를 변경할 수 있습니다. 그룹의 시작과 끝을 찾지 않아도되는 것이 좋습니다. 시험ci(, ci{, ci<, ci", ci', ct변경하려는 객체의 종류에 따라 . 그리고ca(, ca{, ... 변형은 대괄호 / 따옴표도 삭제합니다.

기억하기 쉬움 : 괄호 안의 내용 변경 / 괄호 안의 내용 변경


16
이것은 단지 아닙니다 c. d삭제 (예 : di (또는 da (), yk 크, v선택 등 )를 사용 하여이 작업을 수행 할 수 있습니다 .
Nathan Fellman

여보세요! 이것에 대한 문서가 사용 중임을 알고 싶습니다 :help. 어디서나 찾을 수 없습니다. > _ <
Matej

1
@Peter 나는 이전에 그것들을 확인했지만 독특한 "내부 + 구분자"행동에 대한 언급을 찾을 수 없었습니다. 에있는 것으로 밝혀졌습니다 :help motion.txt! 감사!
Matej

2
이 팁은 내가 vi에서 처음으로 vi로 전환 한 유일한 이유입니다. :)
Justin L.

1
HTML 또는 XML을 편집 cit하는 경우 현재 태그의 내용을 변경하는 데 사용할 수 있습니다 . 예를 들어에서 <span>Some text</span>커서가 "m"위에 있으면 dit얻을 수 <span></span>있습니다.
Jonathan Potter

47
  1. 절대로 누르지 마십시오 Esc. 이유를 알아 보려면이 답변을 참조하십시오 . 위에서 언급했듯이 Ctrl+ C가 더 나은 대안입니다. Caps Lock탈출을 위해 키를 매핑하는 것이 좋습니다 .

  2. Ctags 호환 언어를 편집하는 경우 태그 파일 및 :ta, Ctrl+ ]등을 사용하면 여러 파일에서 코드를 탐색 할 수 있습니다. 또한 tags 파일을 사용한 Ctrl+ NCtrl+ P완성은 키 입력을 줄이는 좋은 방법입니다.

  3. 버퍼보다 넓기 때문에 줄 바꿈 된 줄을 편집하는 경우 gk 및 gj를 사용하여 위 / 아래로 이동할 수 있습니다.

  4. 나쁜 습관을 배우기 전에 모션 명령을 효과적으로 사용하는 데 집중하십시오. xa 번을 여러 번 누르는 대신 'dt'또는 'd3w'를 사용하는 것과 같은 것. 기본적으로, 같은 키를 반복해서 누를 때마다 같은 일을 수행하는 것이 더 좋고 빠르며 간결한 방법 일 수 있습니다.


11
탈출을 사용하지 않습니까? 이단입니다. 탈출은 직장 안팎에서 가장 친한 친구입니다.
xcramps

28
좋은 친구라면 왜 키보드에서 멀리 떨어져 있습니까?
앤서니

사람들의 99 %가 절대 사용하지 않기 때문입니다.
Stefano Borini

5
키보드에서 이스케이프가 다른 키와 몇 인치 떨어져 있습니다. 당신은 그것을 놓칠 수 없습니다.
Brian Carper

15
# 3는 굉장하다! 그럼에도 불구하고 ... 새로운 것을 배우고
브라이언 뉴먼

45

별표 키 ( *)는 커서 아래에서 단어를 검색합니다.

[+ Tab는 커서 아래에있는 C 함수의 정의로 이동합니다. (그러나 항상 작동하는 것은 아닙니다.)


1
* nix를 사용하여 "m"파일을 생성하는 방법을 배우려면 'man ctags'를 시도하십시오. vim은 C 외에도 많은 언어에서 함수 또는 변수의 정의를 찾는 방법을 vim에 알려줍니다. ctrl +]를 사용하여 정의를 찾으십시오. 커서 아래에있는 토큰을 찾거나 : tag tokenToFind를 사용하여 알고있는 토큰을 찾으십시오. "vim -t tokenToFind"로 vim을 시작하여 적절한 파일을 열고 커서를 편집해야 할 기능에 놓을 수 있습니다.
Adam Liss

23
# 키는 커서 아래의 단어를 역방향으로 검색합니다.
Funkodebat

github.com/bronson/vim-visual-star-search 는 시각적 인 선택을위한 스타 검색을 가능하게합니다. 더 이상 놓치고 싶지 않습니다.
Patrick Oscity

[ + Tab pathset path+=path/to/files
dlmeetei

43

ZZ(처럼 작동 :wq)

커서 위치에 대해 : 항상 화면 중앙에 머무르는 커서가 시원하다는 것을 알았습니다.

set scrolloff=9999

2
몰랐어요 :x수행이 아니라
sa125

18
완전히 정확한 것은 아닙니다. 처럼 작동 합니다. :x변경 사항이있는 경우 파일 만 저장하고 :wq항상 파일을 저장합니다.
Erik B

ZQ (: q!와 같은 방식)
xialu

42

Vim brainstore에 최근 추가 한 것들 중 일부 :

  • ^wi: 창을 분할하여 커서 아래의 태그로 이동합니다.
  • cib/ciB: 현재 괄호 () 또는 중괄호 {} 안의 텍스트를 각각 변경하십시오.
  • :set listchars=tab:>-,trail:_ list: 다른 공간과 시각적으로 다른 탭 / 트레일 공간을 표시합니다. 파이썬 코딩에 많은 도움이됩니다.

4
더 많은 투표가 필요합니다! cib중대하다.
매트 파커

또한 : 현재 단어를 바꾸는 ciw (또는 왼손 만 같은 caw) ciW는 현재 W = o를 바꾸는 ciW입니다. (rd) c 대신 v와 같은 단어를 바꾸지 않고 시각적으로 선택합니다
lajarre

5
cib는 "ci ("를 입력하는 것과 같습니다. 다른 유형의 괄호에 대해 "ci [", "ci {"또는 (vimrc가 올바르게 설정된 경우) "ci <"를 수행 할 수도 있습니다.
Tom Lord

2
또한 "cit"는 태그 안의 텍스트를 변경합니다. XML / HTML로 작업 할 때 매우 유용합니다.
Walter

또한 원하는 경우 닫는 괄호로 접미사를 사용할 수 있다는 점도 언급 할 가치가 있습니다. 또한, 난 그냥 대해 배운 ci}cit와우,이 될 것입니다 - 매우 유용합니다. vi[m]매우 흥미로운 프로그램을 증명하고 있습니다!
underscore_d

37

gv 는 비주얼 모드를 시작하고 이전에 선택한 것을 자동으로 선택합니다.


34

: shell Vim에서 쉘 콘솔을 시작합니다. 예를 들어 Vim을 종료하지 않고 스크립트를 테스트하려는 경우에 유용합니다. 쉘 콘솔로 작업을 마치면 ^ d 를 누르면 Vim과 편집 된 파일로 돌아옵니다.


:!sh너무 힘들 것 같아요 . 현재 버퍼에서 레지스터 / 완료를 사용하여 명령 줄을 작성하는 것이 더 쉽거나 현재 파일 이름 / 디렉토리 등을 위해 %/ %:h를 사용 하는 것이 더
낫습니다

1
이것은 매우 시원합니다. 나는 매일 그것을 사용합니다. 그 전에 : wq, cli 일을하고, 같은 파일로 vim을 다시 엽니 다. 훌륭한 최적화
Flashin

7
Ctrl-Z를 사용하여 쉘로 전환하고 fg <ENTER>를 사용하여 vim으로 돌아갑니다.
마리오 G.

넣어 map <Esc>! :shell<CR>당신의 .vimrc, 당신은 단지 Alt +!, 또는 Alt + 시프트 + 1 쉘을 시작할 수 있습니다. (니모닉 : 쉘로 :!{cmd}실행 {cmd})
musiphil

:shell그래도 새로운 중첩 쉘 레벨을 시작합니다. 반면에 ctrl-z그렇지 않습니다.
wisbucky 2016 년


31

암호 해독

vim -x filename.txt

암호, 편집 및 저장을 요청합니다. 이제 vi에서 파일을 다시 열 때마다 암호를 입력하여 볼 수 있습니다.


보관 용 계정이 동기화 당신은 정말 좋은 암호 관리자 ;-) 얻을
루이스 넬

15
그러나 set cryptmethod=blowfish(7.3 이상에서만 사용 가능 하지 않으면 ) 웃음 강도가있는 알고리즘을 사용합니다. 자세한 내용 help encryption은 참조하십시오 .
AB

3
vim 암호화를 사용하지 말고, 암호화가 양호하지 않으며, 보안이 좋지 않은 경우가 없습니다. 더 많은 정보 : github.com/neovim/neovim/issues/694
rodrigoq

2
dgl.cx/2014/10/vim-blowfish meta-tldr : "Vim 7.4.399에서 수정되었습니다. [ groups.google.com/forum/#!msg/vim_dev/D8FyRd0EwlE/bkBOo-hzTzoJ] , 이전 버전과의 호환성을 위해 필요합니다 새로운 cryptmethod가 되려면 :set cm=blowfish2"
underscore_d

28

Vim에서 코드를 빌드하고 디버그하십시오!

구성

별로. Makefile현재 디렉토리에 필요합니다 .

컴파일하기

Vim에있는 동안 :make쉘을 호출하고 프로그램을 빌드하려면 입력하십시오. 출력이 스크롤 될 때 걱정하지 마십시오. 그냥 누르면EnterVim으로 돌아갈 때 십시오.

마술

Vim으로 돌아가서 다음 명령을 사용할 수 있습니다.

  1. :cl 오류, 경고 및 기타 메시지를 나열합니다.
  2. :cc화면 하단에 현재 오류 / 경고 메시지를 표시하고 코드에서 문제를 일으키는 행 으로 이동합니다.
  3. :cc n받는 사람 점프 n번째 메시지.
  4. :cn 다음 메시지로 넘어갑니다.
  5. :cp 이전 메시지로 이동합니다.

더있다; 관심이 있다면 :help :ccVim에서 입력하십시오 .


1
코드를 컴파일하는 것 이상으로 작동합니다. 즉, makefile로 작성된 모든 작업이이 용도로 많이 사용됩니다.
Dwight Spencer

25

^ P와 ^ N

이전 (^ P) 또는 다음 (^ N) 텍스트를 완성하십시오.

^ O와 ^ I

이전 (^ O- "O"이전 위치) 또는 다음 (^ O- "I"바로 "O"근처)으로 이동하십시오.

검색, 파일 편집 등을 수행 할 때 이러한 "점프"를 앞뒤로 탐색 할 수 있습니다.

점수

ma를 누릅니다 (m- 마크,-마크 이름). 나중에 위치로 돌아가려면 `a를 입력 하십시오 .


1
와우, 나는 ^ O와 ^ I에 대해 몰랐다 : 그것은 굉장하다. :help jump-motions누구나 더 많은 정보를 원할 경우 답변에 등을 포함시킬 가치가 있습니다 .
DrAl

ShowMarks vim.org/scripts/script.php?script_id=152를 확인하십시오 . 버퍼에있는 모든 마크의 위치와 위치를 기억하는 데 도움이됩니다. \ mt
tester

나는 ^ P와 ^ N의 차이를 얻지 못한다.
lajarre

@lajarre 그들은 반대 방향으로 사용 가능한 완료 목록을 순환합니다
Patrick Oscity

2
Vim을 열 때 마지막으로 편집 한 파일을 다시 편집하려는 경우 ^ O ^ O를 자주 사용합니다. 엄청난 시간 절약!
Patrick Oscity

24

%커서가 따옴표, 괄호, 괄호 또는 중괄호에있을 때 누르면 일치하는 항목을 찾습니다.


20
커서가 커서 위에 있지 않으면 커서가 커서 하나를 칠 때까지 오른쪽으로 이동합니다.
Cyber ​​Oliveira

@ 레오 : 보너스 팁 감사합니다!
Adam Liss

22

[문자] ( t) 까지 . 범위를 허용하는 모든 명령에 유용합니다. 나의 마음에 드는 것입니다 ct;또는 ct)후행 세미콜론 / 닫는 괄호로 모든 것을 삭제 한 후 삽입 모드에서 당신을 배치합니다.

또한, Ggg(각각 하단과 상단으로 이동) 유용합니다.


여기에 최고의 하나, 다른 것 중 일부는 유용하지만, 나는 이미 em에 대해 모두 알고 있었다
Funkodebat

1
또한 f그 대신에 그 캐릭터를 통해t [행동] 할 것이다 . 예를 들어, 함수 인수의 시작 부분에 커서를두면 (물론 적절한 언어로) 삭제됩니다. df,
Actorclavilis

t와 f는 camelCase 변수의 일부를 편집하는 데 좋습니다. 예를 들어, 행을 복제하고 firstVariable을 secondVariable로 변경해야하는 경우 firstVariable의 시작 부분에 커서를 놓은 다음 ctV
Greg

1
T와 F도 작동하지만 반대 방향입니다.
Fede

20

^r^w 명령 모드에서 커서 아래에 단어를 붙여 넣습니다.

grep 또는 replace 명령을 사용할 때 정말 유용합니다.


원하는 유일한 단어 인 경우, 일반 모드에서 *는 커서 아래에서 단어를 검색합니다.
idbrii

17

줄 번호를 입력하고 gg그 줄로 이동합니다.


31
: 라인 수에 따라 같은 않습니다 : (42)는 행 번호 42로 이동
안티 Veeranna

12
줄 번호 다음에 G를 입력하면 같은 효과가 있습니다.
Cyber ​​Oliveira

3
<number>go받는 간다 <number>파일에 번째 문자.
Actorclavilis

17

기본 비주얼 블록 모드에 대해 알고 있었으면 좋겠습니다. Vim을 다른 용도로 사용하지 않더라도 일부 블록 작업을 위해 Vim에서 파일을 여는 것이 시간을 절약 할 수 있습니다. 나는 이런 종류의 일을 수동으로하는 데 많은 시간을 낭비했다고 확신합니다.

예를 들어 기호 상수 이름의 목록을 일관되게 리팩토링 할 때 특히 유용한 것으로 나타났습니다.

비주얼 블록 모드로 들어가기 ( Ctrl+ Q대신 Windows의 경우 Ctrl+ V)

커서를 움직여 원하는 블록을 강조 표시하십시오.

그런 다음를 I whatever text눌러 Esc모든 줄의 텍스트를 블록 앞에 삽입하십시오.

모든 줄에서 블록 뒤에 텍스트를 삽입 하려면 A대신 사용하십시오 I.

또한 시각적 선택의 경우를 토글하면 ~시간을 크게 절약 할 수 있습니다.

d물론 열을 삭제 하는 것도 물론입니다.


15

^ y 는 커서 위의 문자를 복사합니다.


6
... 그리고 ^ E 커서 아래의 문자를 삽입합니다
너무 많은 PHP

나를 위해 작동하지 않습니다, 그냥 텍스트의 시작 부분으로 커서를 이동
Alex

14

q <letter>-매크로를 기록합니다.

@ <같은 글자>-재생합니다.

Vim에서 가장 유용한 명령은 컴퓨터가 많은 작업을 수행하도록 할 수 있으며 프로그램이나 아무것도 작성할 필요가 없기 때문입니다.


의 사용을 q단순화 문제,하지만 당신은 그것을 사용할 필요가 없습니다 : 단지라는 이름의 버퍼 명령 버퍼에 저장 "- 예를 들어, 사용 버퍼 a- "ad$...
메이

@Mei q는 매크로를 기록합니다. 매크로는 텍스트뿐만 아니라 명령을 포함 할 수 있으므로와 "ad$는 다릅니다 qa.
Brian McCutchon

@Sortofabeginner 그것은 관련이 없습니다. "ad $ 명령은 텍스트를 버퍼 a에 넣고 qa는 그것을 실행합니다.
Mei

2
@Mei qa는 그것을 실행하지 않습니다. qa기록하고 @a실행합니다. 매크로를 일반 텍스트로 작성하고 a와 같은 레지스터에 저장 "ad$한 다음로 실행할 수 @a있지만 실제로는 더 많은 작업입니다. 잘라 내기 및 붙여 넣기와 기록 및 실행에는 근본적인 차이가 있습니다.
Brian McCutchon

도! 나는 그것을 알고 있었다. 수정 주셔서 감사합니다
Mei

13

탭을 사용하여 여러 파일 열기

:tabe filepath

열린 파일 간 탐색

gt and gT or :tabn and :tabp

나중에 열린 파일 목록으로 돌아갈 수 있도록 열린 세션을 저장하십시오.

:mksession session_file_name.vim

생성 된 세션을 엽니 다

vim -S session_file_name.vim

한 번에 모든 파일을 닫습니다

:qa

내가 최근에 배운 또 다른 명령

autocmd

이벤트에서 명령을 실행할 수 있으므로 다음과 같은 파일을 사용하여 파일을 저장할 때 make 명령을 실행할 수 있습니다.

:autocmd BufWritePost *.cpp :make

12

qx 는 키 입력 기록을 시작합니다. 거의 모든 편집 작업을 수행 할 수 있으며 Vim은이를 기억합니다. 히트 Q 작업을 마친 후 다시 눌러 @x는 키 입력을 재생합니다. 매핑을 작성하기에는 너무 복잡한 반복 편집에 유용합니다. x 이외의 문자를 사용하여 많은 레코딩을 가질 수 있습니다 .


5
또한 'q'레코드 매크로 명령과 명명 된 클립 보드 ( "x ...) 사이에 동일한 문자 'x'가 공유됩니다. 매크로 조각을 파일 주위에두고 명명 된 클립 보드에 복사 할 수 있습니다 (예 :"xyy )를 재생 한 다음 재생합니다 (@x).
Cyber ​​Oliveira

그리고 굉장한 매크로를 만들면 'let @x = ""'(매크로를 ""에 넣음)로 클립 보드를 _vimrc에 붙여서 영원히 저장할 수 있습니다!
Kearns

11

필자가 가장 좋아하는 것 중 하나가 도움말 창을 새 탭에 넣는 것입니다.

:tab help <help_topic>

이것은 새로운 탭에서 도움을 주며, Vim 탭을 좋아하는 누군가에게 이것은 엄청나게 유용합니다.


2
버퍼는 vim의 탭입니다. vim 워크 플로우에서 더 잘 지원됩니다. 너무 많은 사람들이 버퍼를 이해하지 못했기 때문에 탭이 vim에만 추가되었다고 생각합니다.
still_dreaming_1

그렇게 말한 직후에 vim에서 탭을 사용하는 것을 발견했습니다. 탭당 하나의 버퍼를 사용하는 경우 버퍼에 대해 알아야합니다. 이것이 vim에서 탭을 사용하려는 방식이 아닙니다. 대부분의 고급 vim 사용자는 대부분의 프로그램에서 탭이 사용되는 방식으로 버퍼를 사용합니다. 많은 사람들은 탭이 vim에서 레이아웃으로 명명되어야한다고 생각합니다. 주로 다른 탭에서 다른 창 컬렉션을 열 때 사용됩니다. 특정 버퍼를 한 탭에서 다시 열어 놓고 다른 탭을 사용하여 다른 모든 버퍼를 볼 수도 있습니다.
still_dreaming_1

9

cw

단어 변경-커서 아래의 단어를 삭제하고 삽입 모드로 전환하여 새 단어를 입력합니다. 물론 이것은 다른 이동 키와 함께 작동하므로 c $ 와 같은 작업을 행의 끝으로 변경할 수 있습니다.

f + 캐릭터

현재 줄에서 다음에 나오는 문자를 찾습니다. 따라서 vft 를 사용하여 현재 줄에서 다음 "t"까지 모든 텍스트를 선택할 수 있습니다 . 다른 이동 키이므로 다른 명령과도 작동합니다.


9

:b [any portion of a buffer name]버퍼를 전환합니다. 따라서 "somefile1.txt"와 "someotherfile2.txt"의 두 버퍼가있는 경우 간단히 두 번째 버퍼로 전환 할 수 있습니다 ":b 2.t<enter>". 필수는 아니지만 탭 완성도 지원합니다.

탭 완성에 대해 말하면 설정 :set wildmode=full wildmenu도 매우 유용합니다. 명령 모드에 대한 완전한 탭 완성 기능과 사용시 가능한 모든 일치 항목의 매우 유용한 ncurses 스타일 메뉴를 사용할 수 있습니다.


9

: % s, / 검색, / 대체,

/(슬래시) 이외의 문자를 사용 하여 대체 패턴을 분리 할 수 있습니다 . 이렇게하면 파일 경로의 슬래시를 피할 필요가 없습니다.


2
오 예. 나는 이것을 알았지 sed만 그렇지 않았다 vim. 더 많이 알면 ♒ ☆
beerbajay
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.