수색…


통사론

  • : relativenumber 설정
  • : 세트 번호
  • : 세트 번호 / : 세트 nonu
  • : pwd

비고

이 자동 재 장전은 autocmd 를 지원하는 vim의 정식 버전에서 vimrc 를 편집하는 경우에만 발생합니다.

빠른 "폐기"매크로

당신의 vimrc에 이것을 추가하십시오 :

nnoremap Q @q

"폐기"매크로 기록을 시작하려면 qq 사용하십시오. 녹음을 끝내려면 q 누르십시오 (둘 다 정상 모드에서).

기록 된 매크로를 실행하려면 Q 사용하십시오.

이 매크로는 한 번에 여러 번 반복해야하지만 나중에 다시는 사용하지 않는 매크로에 유용합니다.

Vim 내부의 경로 완성 기능 사용하기

이것은 매우 일반적이며, 파일이나 폴더의 경로를 암기하고, Vim을 열고 암기 한 내용을 쓰려고 시도하지만 이것이 정확하다고 100 % 확신하지 못하므로 편집기를 닫고 다시 시작해야합니다.

경로 완성 기능을 원할 때 /home/ubuntu/my_folder/my_file 파일이 있고 이전 파일의 경로를 참조하는 다른 파일을 편집하는 경우 :

삽입 모드로 들어가기 : 원하는대로 삽입 하거나 실행하십시오. 다음으로 /h 씁니다. 커서가 h 아래에있을 때 Ctrl / xCtrl + f 를 누르면 편집기가 /home/ 으로 패턴을 완료합니다. 이는 /h 패턴이 고유하기 때문입니다.

이제 /home/ubuntu/ 안에 /home/ubuntu/ my_folder_1 my_folder_2 라는 두 개의 폴더가 있다고 가정합니다.

그리고 /home/ubuntu/my_folder_2 경로를 원한다.

평소대로 :

삽입 모드로 들어갑니다.

쓰기 /h 다음과 Ctrlx와 Ctrl 키의 F를. 이제 /home/ 다음에 /home/ 다음에 u를 추가하고 Ctrl x 를 누른 다음 Ctrl f 를 누릅니다. 이제는 경로가 고유하기 때문에 /home/ubuntu/ 가 있습니다. 이제, 쓰기 my/home/ubuntu/ 후와 Ctrl 키의 X와 Ctrl F를. 편집기는 my_folder_ 까지 단어를 완성하고 디렉토리 트리를 보게되므로 화살표 키를 사용하여 원하는 것을 선택하십시오.

상대 회선 번호 켜기

삭제할 행의 수를 모를 때 텍스트 줄을 삭제하려면 모든 줄을 제거 할 때까지 10dd , 5dd , 3dd 를 시도하십시오.

상대 라인 번호는이 문제를 해결합니다. 다음을 포함하는 파일이 있다고 가정 해보십시오.

sometimes, you see a block of 
text. You want to remove 
it but you 
cannot directly get the 
exact number of 
lines to delete 
so you try 
10d , 5d 
3d until 
you
remove all the block.

NORMAL 모드로 들어가기 : Esc

이제 실행 :set relativenumber . 완료되면 파일이 다음과 같이 표시됩니다.

3 sometimes, you see a block of
2 text. You want to remove
1 it but you
0 cannot directly get the
1 exact number of
2 lines to delete
3 so you try
4 10d , 5d
5 3d until
6 you
7 remove all the block.

여기서 0 은 현재 줄의 줄 번호이고 또한 실제 줄 번호를 상대 번호 앞에 표시하므로 현재 줄에서 줄 수를 추정하거나 줄이거 나 삭제할 필요가 없습니다. 하나씩.

이제 6dd 와 같은 일반적인 명령을 실행할 수 있으며 줄 수에 대해 확신합니다.

동일한 명령의 간단한 형식을 사용할 수도 있습니다 :set rnu 상대 번호를 켜 :set nornu:set nornu 하고 :set nornu 는 같은 번호를 끄도록 :set nornu 하십시오.

또한 :set number 또는 have :set number 이미 :set number 한 경우 커서가있는 행의 행 번호가 표시됩니다.

3 sometimes, you see a block of 
2 text. You want to remove 
1 it but you 
4 cannot directly get the 
1 exact number of 
2 lines to delete 
3 so you try 
4 10d , 5d 
5 3d until 
6 you 
7 remove all the block. 

줄 번호보기

기본보기에서 회선 번호를 보려면 다음을 입력하십시오.

:set number

줄 번호를 숨기려면

:set nonumber

또한 위의 바로 가기가 있습니다. nunumber 와 같습니다.

:set nonu

줄 번호를 숨기려면

:set nu!

삽입 모드를 종료하기위한 매핑

많은 Vim 사용자는 Esc를 찾기가 너무 어려워 집에서 쉽게 접근 할 수있는 다른 매핑을 찾습니다. Ctrl - [ 영어 키보드의 Esc 와 같을 수 있으며 더 쉽게 접근 할 수 있습니다.

j k

inoremap jk <ESC> 

이 것은 트리거하기 쉽습니다. 같은 시간에 홈 행에 처음 두 손가락을 부셔 버리십시오. "jk"가 어떤 영어 단어에도 나타나지 않으므로 우발적으로 트리거하기가 어렵습니다. 그리고 정상 모드에 있다면 아무 것도하지 않습니다. "blackjack"을 너무 많이 입력하지 않으면 inoremap kj <ESC> 추가하여 두 키의 타이밍에 대해 걱정할 필요가 없습니다.

Caps Lock

리눅스

Linux에서는 xmodmap 을 사용하여 Caps LockEsc 와 동일한 작업을 수행 할 수 있습니다. 이것을 파일에 넣으십시오.

!! No clear Lock 
clear lock
!! make caps lock an escape key
keycode 0x42 = Escape

그런 다음 xmodmap file 실행 xmodmap file . 그러면 Caps LockEsc로 다시 매핑됩니다.

Windows

Windows에서는 SharpKey 또는 AutoHotkey를 사용할 수 있습니다.

맥 OS

macOS 10.12.1 이상을 사용하는 경우 시스템 환경 설정을 사용하여 Caps Lock을 Escape로 다시 매핑 할 수 있습니다. 키보드를 선택하고 키보드 탭으로 이동 한 후 수정 자 키를 클릭하십시오.

키보드 환경 설정

편집중인 파일의 디렉토리 및 / 또는 경로를 확인하는 방법

파일이있는 디렉토리의 경로를 확인하려면 다음을 사용할 수 있습니다.

Esc눌러 명령 모드로 들어갑니다.

:pwd

이렇게하면 편집기의 맨 아래에있는 디렉토리 경로가 출력됩니다.

I'm a ninja
~
~
~
~
~
/home/ubuntu/myfolder                                                1,5         All

이제 vim 작업 디렉토리에 상대적으로 편집하고있는 파일 이름을 알고 싶다면 다음을 사용할 수 있습니다 :

Esc눌러 명령 모드로 전환합니다. CTRL G

I'm a ninja
~
~
~
~
~
"myfile"[Modified][New file] 1 line --100%--                         1,5         All

마지막으로 편집중인 파일의 절대 경로를 얻으려면 다음을 사용하십시오.

Esc눌러 명령 모드로 들어가 십시오 .

1 을 누른 다음 CTRL G

I'm a ninja
~
~
~
~
~
"~/myfolder/myfile"[Modified][New file] 1 line --100%--              1,5         All

기능 블록 내에서 검색

커서를 둘러싼 {} 블록 내에서 텍스트 foo 를 검색하려면 다음 명령을 사용하십시오 ( <ESC> - 이스케이프 키, <CR> - 엔터 키).

vi{<ESC>/\%Vfoo<CR>

이제 np 를 눌러 블록 내의 일치 항목간에 이동할 수 있습니다. hlsearch 옵션을 사용하면 모든 일치 항목을 강조 표시합니다. \%V 는 vim이 시각적으로 선택된 영역에서만 검색하도록 지시하는 특별한 검색 패턴 부분입니다. 다음과 같은 매핑을 만들 수도 있습니다.

:vnoremap g/ <ESC>/\%V

이 후 위의 명령은 다음과 같이 단축됩니다.

vi{g/foo<CR>

또 다른 유용한 트릭은 패턴을 포함하는 모든 줄을 인쇄하는 것입니다.

vi{
:'<,'>g/foo/#

'<,'> 범위가 자동으로 삽입됩니다.

참조 :help range:help :g .

찾은 행 복사, 이동 또는 삭제

많은 사용자가 줄을 빠르게 복사, 이동 또는 삭제하고 원래 위치로 돌아가고 싶은 상황에 처해 있습니다.

보통, 현재 줄 아래에 lot 라는 단어가 들어있는 줄을 옮기고 싶다면 다음과 같이 입력하십시오.

/lot<Esc>dd<C-o>p

그러나 생산성을 높이려면 다음과 같은 경우에이 바로 가기를 사용할 수 있습니다.

" It's recommended to turn on incremental search when doing so
set incsearch

" copy the found line
cnoremap $t <CR>:t''<CR>
" move the found line
cnoremap $m <CR>:m''<CR>
" delete the found line
cnoremap $d <CR>:d<CR>``

그래서 다음과 같은 검색 :

/lot$m

검색을 시작할 때 커서가 있던 행 아래에 lot 포함 된 행을 이동시킵니다.

vim을 시작하기 전에`sudo`를 잊어 버리면 파일을 작성하십시오.

이 명령은 열린 파일을 sudo 권한으로 저장합니다.

:w !sudo tee % >/dev/null

지도를 w!! 수도 있습니다 w!! 파일을 루트로 쓰려면

:cnoremap w!! w !sudo tee % >/dev/null

저장시 vimrc를 자동으로 다시 불러옵니다.

자동으로 다시로드 vimrc 저장에, 당신의에 다음을 추가 vimrc :

if has('autocmd') " ignore this section if your vim does not support autocommands
    augroup reload_vimrc
        autocmd!
        autocmd! BufWritePost $MYVIMRC,$MYGVIMRC nested source %
    augroup END
endif

마지막으로 다음을 입력하십시오.

:so $MYVIMRC

다음에 vimrc 를 저장하면 자동으로 다시로드됩니다.

nested 는 vim-airline을 사용하는 경우 유용합니다. 항공사를로드하는 과정에서 일부 자동 명령이 실행되지만 자동 명령을 실행하는 중이므로 건너 뜁니다. nested 있으면 중첩 된 자동 명령이 트리거되어 항공사가 제대로로드 될 수 있습니다.

명령 행 완료

명령 줄에 대한 완료 제안을 설정 wildmenu 를 설정 wildmenu .
다음을 실행하십시오.

set wildmenu
set wildmode=list:longest,full

이제 말하면, :color tab ,

당신은 얻을 것이다

256-jungle  Benokai  BlackSea  C64  CandyPaper  Chasing_Logic  ChocolateLiquor  
:color 0x7A69_dark


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow