"Vim"의 두 판 사이의 차이

ph
이동: 둘러보기, 검색
 
(같은 사용자의 중간 판 11개는 보이지 않습니다)
1번째 줄: 1번째 줄:
 +
==disable focus-in, focus-out event in terminal==
 +
printf "\e[?1004l"
 +
[https://apple.stackexchange.com/a/220625/87063] [https://superuser.com/q/931873/108174]
 +
 +
==paste large text to a file==
 +
Do not use vim. Use <code>here document</code>.[https://stackoverflow.com/a/2954835/766330]
 +
cat << END > targetfile
 +
...
 +
> END
 +
 +
==Insert line numbers==
 +
:%s/^/\=printf('%-4d', line('.’))
 +
<code>\=</code> is the result of evaluating the following expression<br>
 +
<code>%-4d</code> is a left-aligned decimal number(<code>%4d</code> is right-aligned)
 +
 +
or
 +
 +
:%!nl -ba
 +
 +
==Make Vim show ALL white spaces as a character==
 +
:set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:␣
 +
:set list [https://stackoverflow.com/a/29787362/766330]
 +
아래와 같이 하면 탭등 구분은 안되지만 일단 공백이 다른 색으로 보임.
 +
:syntax on
 +
:set syntax=whitespace  [https://stackoverflow.com/a/19012475/766330]
 +
 
==autocomplete에 dash포함==
 
==autocomplete에 dash포함==
 
  :set lisp [http://stackoverflow.com/a/10789559/766330]
 
  :set lisp [http://stackoverflow.com/a/10789559/766330]
71번째 줄: 97번째 줄:
 
  <nowiki>:%s/\(.\{-}\)\( \?([^)]*)\)\?$/[[\1]]\2/</nowiki>
 
  <nowiki>:%s/\(.\{-}\)\( \?([^)]*)\)\?$/[[\1]]\2/</nowiki>
 
‘optional한 마지막 괄호’만 빼고 다른 모든것을 매치하고 싶었는데, stackoverflow에 물어보니 ‘닫는괄호를 제외한 나머지’와 match하는게 핵심 아이디어 였음. 즉, 괄호 match에 다음을 쓰는 것.
 
‘optional한 마지막 괄호’만 빼고 다른 모든것을 매치하고 싶었는데, stackoverflow에 물어보니 ‘닫는괄호를 제외한 나머지’와 match하는게 핵심 아이디어 였음. 즉, 괄호 match에 다음을 쓰는 것.
  ([^)]*)
+
  ([^)]*)[https://stackoverflow.com/a/45581831/766330]
 +
<c>magic</c>을 이용한 방법[https://stackoverflow.com/a/45600892/766330]이 더 깔끔해보이긴 함
 +
/\v(^\w+(\s\w+)?)
 +
<nowiki>:%s,,[[\1]],g</nowiki>
 +
 
 +
==Regexp with <c>magic</c>==
 +
\v
 +
[http://vimdoc.sourceforge.net/htmldoc/pattern.html#/magic vimdoc]참고.
 +
훨씬 깔끔해진다.
 +
 
 +
==vim mode in tmux==
 +
set-window-option -g mode-keys vi
  
[https://stackoverflow.com/a/45581831/766330]
+
그냥 enter로 빠져나오고 space로 selection시작. 움직임은 vim과 동일
 +
[https://sanctum.geek.nz/arabesque/vi-mode-in-tmux/ ref]

2020년 3월 3일 (화) 18:22 기준 최신판

disable focus-in, focus-out event in terminal

printf "\e[?1004l"

[1] [2]

paste large text to a file

Do not use vim. Use here document.[3]

cat << END > targetfile
...
> END

Insert line numbers

:%s/^/\=printf('%-4d', line('.’))

\= is the result of evaluating the following expression
%-4d is a left-aligned decimal number(%4d is right-aligned)

or

:%!nl -ba

Make Vim show ALL white spaces as a character

:set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:␣
:set list [4] 

아래와 같이 하면 탭등 구분은 안되지만 일단 공백이 다른 색으로 보임.

:syntax on
:set syntax=whitespace   [5]

autocomplete에 dash포함

:set lisp [6]

다른 방법으로는,

:set iskeyword+=\- [7]

이용

Auto completion in command line mode

:help wildmode  

I am using

:set wildemode=list:longest

Display line numbers

:highlight LineNr term=bold cterm=NONE ctermfg=DarkGrey ctermbg=NONE gui=NONE guifg=DarkGrey guibg=NONE  

[8]


이미 읽은 파일의 인코딩 변경

:e ++enc=euc-kr

[9]


tab으로 편집

:help tabpage
:help tabe

ref. :Te


temporary ic when searching

insert '\c'(or '\C') at the end. (eg: /example\c will match with 'Example').
ref. :help pattern


Gnu indent

function! GnuIndent()
   setlocal cinoptions=>4,n-2,{2,^-2,:2,=2,g0,h2,p5,t0,+2,(0,u0,w1,m1,//0
   setlocal shiftwidth=2
   setlocal tabstop=8
endfunction
au FileType c,cpp,php call GnuIndent()


Copy using t command

:81,91t.<enter>

Copy the current lines to your present cursor location. [10]

Change tab(\t) to space

:set expandtab
:retab

[11]

Reverse all lines

:g/^/m0

g: reg match인 모든 곳에서 명령실행

혹은 다음과 같이 한다.

:%!tac

[12]

non-greedy match

.\{-}

[13]

Match except last parenthesis

:%s/\(.\{-}\)\( \?([^)]*)\)\?$/[[\1]]\2/

‘optional한 마지막 괄호’만 빼고 다른 모든것을 매치하고 싶었는데, stackoverflow에 물어보니 ‘닫는괄호를 제외한 나머지’와 match하는게 핵심 아이디어 였음. 즉, 괄호 match에 다음을 쓰는 것.

([^)]*)[14]

magic을 이용한 방법[15]이 더 깔끔해보이긴 함

/\v(^\w+(\s\w+)?)
:%s,,[[\1]],g

Regexp with magic

\v

vimdoc참고. 훨씬 깔끔해진다.

vim mode in tmux

set-window-option -g mode-keys vi

그냥 enter로 빠져나오고 space로 selection시작. 움직임은 vim과 동일 ref