vim
생산성 향상을위한 팁과 트릭
수색…
통사론
- : 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 / x 와 Ctrl + f 를 누르면 편집기가 /home/
으로 패턴을 완료합니다. 이는 /h
패턴이 고유하기 때문입니다.
이제 /home/ubuntu/
안에 /home/ubuntu/
my_folder_1
my_folder_2
라는 두 개의 폴더가 있다고 가정합니다.
그리고 /home/ubuntu/my_folder_2
경로를 원한다.
평소대로 :
삽입 모드로 들어갑니다.
쓰기 /h
다음과 Ctrl 키 x와 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
또한 위의 바로 가기가 있습니다. nu
는 number
와 같습니다.
:set nonu
줄 번호를 숨기려면
:set nu!
삽입 모드를 종료하기위한 매핑
많은 Vim 사용자는 Esc를 찾기가 너무 어려워 집에서 쉽게 접근 할 수있는 다른 매핑을 찾습니다. Ctrl - [ 영어 키보드의 Esc 와 같을 수 있으며 더 쉽게 접근 할 수 있습니다.
j k
inoremap jk <ESC>
이 것은 트리거하기 쉽습니다. 같은 시간에 홈 행에 처음 두 손가락을 부셔 버리십시오. "jk"가 어떤 영어 단어에도 나타나지 않으므로 우발적으로 트리거하기가 어렵습니다. 그리고 정상 모드에 있다면 아무 것도하지 않습니다. "blackjack"을 너무 많이 입력하지 않으면 inoremap kj <ESC>
추가하여 두 키의 타이밍에 대해 걱정할 필요가 없습니다.
Caps Lock
리눅스
Linux에서는 xmodmap
을 사용하여 Caps Lock 이 Esc 와 동일한 작업을 수행 할 수 있습니다. 이것을 파일에 넣으십시오.
!! No clear Lock
clear lock
!! make caps lock an escape key
keycode 0x42 = Escape
그런 다음 xmodmap file
실행 xmodmap file
. 그러면 Caps Lock 이 Esc로 다시 매핑됩니다.
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>
이제 n
과 p
를 눌러 블록 내의 일치 항목간에 이동할 수 있습니다. 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