.vimrc에 무엇입니까? [닫은]


157

Vi와 Vim은 일반적으로 .vimrc파일 내에 저장되는 정말 멋진 사용자 정의를 허용 합니다. 프로그래머의 일반적인 기능은 구문 강조, 스마트 들여 쓰기 등입니다.

.vimrc에 숨겨져있는 생산적인 프로그래밍을위한 다른 비법은 무엇입니까?

주로 리팩토링, 자동 클래스 및 유사한 생산성 매크로, 특히 C #에 관심이 있습니다.


11
사람들에게 주석이 달린 vim 구성 파일 을 게시하도록 요청해야한다고 생각 합니다.
innaM

왜 이것을 github에서 공유하지 않습니까? git 아래에 전체 .vim 폴더가 있으며 여기에서 모두 볼 수 있습니다. github.com/lsdr/vim-folder
lsdr

1
전체 .vimrcs가 유용하다고 생각하지 않습니다. 많은 사람들이 대답을 찬성한다면, 당신은 단지 모든 것을 취해서 그것을 당신의 시스템에 going을 것입니까? 유용한 별칭 또는 함수 목록이 전체. (bash | z) rc 파일보다 훨씬 낫기 때문에 스 니펫은 훨씬 유용합니다.
Xiong Chiamiov 2009

답변:


104

당신은 그것을 요구했습니다 :-)

"{{{Auto Commands

" Automatically cd into the directory that the file is in
autocmd BufEnter * execute "chdir ".escape(expand("%:p:h"), ' ')

" Remove any trailing whitespace that is in the file
autocmd BufRead,BufWrite * if ! &bin | silent! %s/\s\+$//ge | endif

" Restore cursor position to where it was before
augroup JumpCursorOnEdit
   au!
   autocmd BufReadPost *
            \ if expand("<afile>:p:h") !=? $TEMP |
            \   if line("'\"") > 1 && line("'\"") <= line("$") |
            \     let JumpCursorOnEdit_foo = line("'\"") |
            \     let b:doopenfold = 1 |
            \     if (foldlevel(JumpCursorOnEdit_foo) > foldlevel(JumpCursorOnEdit_foo - 1)) |
            \        let JumpCursorOnEdit_foo = JumpCursorOnEdit_foo - 1 |
            \        let b:doopenfold = 2 |
            \     endif |
            \     exe JumpCursorOnEdit_foo |
            \   endif |
            \ endif
   " Need to postpone using "zv" until after reading the modelines.
   autocmd BufWinEnter *
            \ if exists("b:doopenfold") |
            \   exe "normal zv" |
            \   if(b:doopenfold > 1) |
            \       exe  "+".1 |
            \   endif |
            \   unlet b:doopenfold |
            \ endif
augroup END

"}}}

"{{{Misc Settings

" Necesary  for lots of cool vim things
set nocompatible

" This shows what you are typing as a command.  I love this!
set showcmd

" Folding Stuffs
set foldmethod=marker

" Needed for Syntax Highlighting and stuff
filetype on
filetype plugin on
syntax enable
set grepprg=grep\ -nH\ $*

" Who doesn't like autoindent?
set autoindent

" Spaces are better than a tab character
set expandtab
set smarttab

" Who wants an 8 character tab?  Not me!
set shiftwidth=3
set softtabstop=3

" Use english for spellchecking, but don't spellcheck by default
if version >= 700
   set spl=en spell
   set nospell
endif

" Real men use gcc
"compiler gcc

" Cool tab completion stuff
set wildmenu
set wildmode=list:longest,full

" Enable mouse support in console
set mouse=a

" Got backspace?
set backspace=2

" Line Numbers PWN!
set number

" Ignoring case is a fun trick
set ignorecase

" And so is Artificial Intellegence!
set smartcase

" This is totally awesome - remap jj to escape in insert mode.  You'll never type jj anyway, so it's great!
inoremap jj <Esc>

nnoremap JJJJ <Nop>

" Incremental searching is sexy
set incsearch

" Highlight things that we find with the search
set hlsearch

" Since I use linux, I want this
let g:clipbrdDefaultReg = '+'

" When I close a tab, remove the buffer
set nohidden

" Set off the other paren
highlight MatchParen ctermbg=4
" }}}

"{{{Look and Feel

" Favorite Color Scheme
if has("gui_running")
   colorscheme inkpot
   " Remove Toolbar
   set guioptions-=T
   "Terminus is AWESOME
   set guifont=Terminus\ 9
else
   colorscheme metacosm
endif

"Status line gnarliness
set laststatus=2
set statusline=%F%m%r%h%w\ (%{&ff}){%Y}\ [%l,%v][%p%%]

" }}}

"{{{ Functions

"{{{ Open URL in browser

function! Browser ()
   let line = getline (".")
   let line = matchstr (line, "http[^   ]*")
   exec "!konqueror ".line
endfunction

"}}}

"{{{Theme Rotating
let themeindex=0
function! RotateColorTheme()
   let y = -1
   while y == -1
      let colorstring = "inkpot#ron#blue#elflord#evening#koehler#murphy#pablo#desert#torte#"
      let x = match( colorstring, "#", g:themeindex )
      let y = match( colorstring, "#", x + 1 )
      let g:themeindex = x + 1
      if y == -1
         let g:themeindex = 0
      else
         let themestring = strpart(colorstring, x + 1, y - x - 1)
         return ":colorscheme ".themestring
      endif
   endwhile
endfunction
" }}}

"{{{ Paste Toggle
let paste_mode = 0 " 0 = normal, 1 = paste

func! Paste_on_off()
   if g:paste_mode == 0
      set paste
      let g:paste_mode = 1
   else
      set nopaste
      let g:paste_mode = 0
   endif
   return
endfunc
"}}}

"{{{ Todo List Mode

function! TodoListMode()
   e ~/.todo.otl
   Calendar
   wincmd l
   set foldlevel=1
   tabnew ~/.notes.txt
   tabfirst
   " or 'norm! zMzr'
endfunction

"}}}

"}}}

"{{{ Mappings

" Open Url on this line with the browser \w
map <Leader>w :call Browser ()<CR>

" Open the Project Plugin <F2>
nnoremap <silent> <F2> :Project<CR>

" Open the Project Plugin
nnoremap <silent> <Leader>pal  :Project .vimproject<CR>

" TODO Mode
nnoremap <silent> <Leader>todo :execute TodoListMode()<CR>

" Open the TagList Plugin <F3>
nnoremap <silent> <F3> :Tlist<CR>

" Next Tab
nnoremap <silent> <C-Right> :tabnext<CR>

" Previous Tab
nnoremap <silent> <C-Left> :tabprevious<CR>

" New Tab
nnoremap <silent> <C-t> :tabnew<CR>

" Rotate Color Scheme <F8>
nnoremap <silent> <F8> :execute RotateColorTheme()<CR>

" DOS is for fools.
nnoremap <silent> <F9> :%s/$//g<CR>:%s// /g<CR>

" Paste Mode!  Dang! <F10>
nnoremap <silent> <F10> :call Paste_on_off()<CR>
set pastetoggle=<F10>

" Edit vimrc \ev
nnoremap <silent> <Leader>ev :tabnew<CR>:e ~/.vimrc<CR>

" Edit gvimrc \gv
nnoremap <silent> <Leader>gv :tabnew<CR>:e ~/.gvimrc<CR>

" Up and down are more logical with g..
nnoremap <silent> k gk
nnoremap <silent> j gj
inoremap <silent> <Up> <Esc>gka
inoremap <silent> <Down> <Esc>gja

" Good call Benjie (r for i)
nnoremap <silent> <Home> i <Esc>r
nnoremap <silent> <End> a <Esc>r

" Create Blank Newlines and stay in Normal mode
nnoremap <silent> zj o<Esc>
nnoremap <silent> zk O<Esc>

" Space will toggle folds!
nnoremap <space> za

" Search mappings: These will make it so that going to the next one in a
" search will center on the line it's found in.
map N Nzz
map n nzz

" Testing
set completeopt=longest,menuone,preview

inoremap <expr> <cr> pumvisible() ? "\<c-y>" : "\<c-g>u\<cr>"
inoremap <expr> <c-n> pumvisible() ? "\<lt>c-n>" : "\<lt>c-n>\<lt>c-r>=pumvisible() ? \"\\<lt>down>\" : \"\"\<lt>cr>"
inoremap <expr> <m-;> pumvisible() ? "\<lt>c-n>" : "\<lt>c-x>\<lt>c-o>\<lt>c-n>\<lt>c-p>\<lt>c-r>=pumvisible() ? \"\\<lt>down>\" : \"\"\<lt>cr>"

" Swap ; and :  Convenient.
nnoremap ; :
nnoremap : ;

" Fix email paragraphs
nnoremap <leader>par :%s/^>$//<CR>

"ly$O#{{{ "lpjjj_%A#}}}jjzajj

"}}}

"{{{Taglist configuration
let Tlist_Use_Right_Window = 1
let Tlist_Enable_Fold_Column = 0
let Tlist_Exit_OnlyWindow = 1
let Tlist_Use_SingleClick = 1
let Tlist_Inc_Winwidth = 0
"}}}

let g:rct_completion_use_fri = 1
"let g:Tex_DefaultTargetFormat = "pdf"
let g:Tex_ViewRule_pdf = "kpdf"

filetype plugin indent on
syntax on

78
그러나 왜 3, shiftwidth = 3을 설정하고 softtabstop = 3을 설정하십시오. 아마도 2 또는 4이지만 왜 3입니까?
Johan

1
궁금한 점이 있지만 삽입 모드에서 j를 눌렀을 때 jj를 <Esc>에 매핑하면 약간의 지연이 발생하지 않습니까?
sykora 2012 년

1
@ sykora : 예, 그러나 다른 문자 (j가 아닌)를 입력하자마자 나타납니다. 나는 jk를 치는 것이 jj를 치는 것보다 빠르다고 생각하기 때문에 똑같은 일을하지만 대신 jk를 사용합니다. 이것이 나에게 영향을 준 시간 만 알파벳을 입력하는 것이므로 kj가 더 좋을 것입니다.
David Miani

2
@Johan : '3은 마법의 숫자'이기 때문입니다. :) 실제로, 그것은 단지 자전거 흘리기이지만 3도 선호합니다. :)
Robert Massaioli

4
진짜 남자가 gcc를 사용한다면, 왜 그렇지 않습니까? (컴파일러 GCC는 주석!)
Abdulsattar 모하메드

73

이것은 내 .vimrc 파일에 없지만 어제 ]p명령 에 대해 배웠습니다 . 버퍼의 내용을 그대로 붙여 p넣지 만 커서가있는 줄과 일치하도록 들여 쓰기를 자동으로 조정합니다! 이것은 코드를 옮기는 데 탁월합니다.


이것은 : set paste, p, : set nopaste?
hyperboreean

3
내가 아는 한 : set paste 옵션은 p 명령에 영향을 미치지 않으며 삽입 모드에서 입력하거나 터미널을 통해 붙여 넣은 텍스트에만 영향을 미칩니다. 아니요, 다른 기능입니다.
Greg Hewgill

1
질문에 대답하지 않기 때문에 이것에 대해
찬성해서는 안되지만

53

다음을 사용하여 모든 임시 및 백업 파일을 한 곳에 보관하십시오.

set backup
set backupdir=~/.vim/backup
set directory=~/.vim/tmp

모든 장소에서 복잡한 작업 디렉토리를 저장합니다.

이 디렉토리를 먼저 작성해야하고 , vim은이를 작성 하지 않습니다 .


2
나는 당신이 그 디렉토리를 직접 만들어야한다고 언급해야한다. vim은 당신을 위해 그것을하지 않을 것이다.
Harley Holcombe

이것은 여러 개의 동일한 파일을 올바르게 처리합니까? (예 : 동일한 코드의 여러 가지 분기를 편집하는 경우)
yungchin

아니요, 동일한 이름의 이전 백업 파일을 덮어 씁니다. 누구 든지이 문제를 해결하려면 알려주세요.
Harley Holcombe

3
이것을보십시오 : au BufWritePre * let & bex = '-'. strftime ( "% Y % m % d- % H % M % S"). '.vimbackup'(한 줄입니다.) 그리고 이것도 언급해야합니다 : vim.wikia.com/wiki/VimTip962
Zsolt Botykai

1
또한 여러 시스템에서 Dropbox 동기화 파일을 열 때 Vim이 불평하지 않도록합니다.
코디 헤스

31

위에 게시 한 사람 (viz. Frew)은 다음 줄을 가졌습니다.

"파일이있는 디렉토리로 자동 cd :"

autocmd BufEnter * execute "chdir ".escape(expand("%:p:h"), ' ')

내장 된 설정으로 동일한 일을 수행 할 수 있음을 발견 할 때까지 나 자신과 같은 일을하고있었습니다.

set autochdir

몇 번이나 비슷한 일이 일어났다 고 생각합니다. Vim에는 내장 된 설정과 옵션이 너무 많아서 내장 문서를 검색하는 방법보다 문서를 검색하는 것보다 쉽고 빠르게 롤업 할 수 있습니다.


좋은 발견! 나는 내장 된 물건을 더 ^ _ ^ 사용하는 것을 좋아합니다. 플러스가 있으면 더 이상 실패하지 않습니다 | 파일 이름에.
Javed Ahamed

2
autochdir에는 결코 해결할 수없는 약간의 성가심이 있습니다 (명령 줄에 주어진 파일을로드하기 전에 디렉토리 변경). 그리고 나는 여기서 다른 곳에서 autocmd BufEnter * silent! lcd %:p:h:gs/ /\\ /같은 기본적인 일을하지만 명령 줄을 손상 시키지는 않습니다.
dash-tom-bang

선택 사항으로
만들고이

28

최근에 추가 한 것은 현재 행강조 표시하는 것입니다

set cul                                           # highlight current line
hi CursorLine term=none cterm=none ctermbg=3      # adjust color

2
더 많은 색상 중에서 선택할 수있는 방법이 있습니까?
Fzs2

세트 컬과 세트 커서 라인의 차이점은 무엇입니까?
putolaruan

"set cul"을 사용하여 현재 행 아래에 줄을 가져옵니다. 커서 라인 설정이 내 취향에 맞는 구문 강조 표시로 너무 엉망입니다.
Claes Mogren

2
사용 가능한 색상을 얻으려면 이 스크립트 ( vim.org/scripts/script.php?script_id=1349 )를 참조하십시오 . 다양한 색상을 얻으려면 vim에 256 색 지원을 켜야 할 수도 있습니다.
Brian Wigginton

1
@Claes는 사실 set culset cursorline정확히 같은 일을.
Gerardo Marset

24

2012 업데이트 : 현재 누락 된 몇 가지 기능이 누락되었지만 이전 상태 표시 줄 스크립트를 대체 한 vim-powerline 을 확인하는 것이 좋습니다 .


내 vimrc 의 상태 표시 줄 내용 은 아마도 vimrc 저자 와 여기 에서 해당 블로그 게시물 에서 추출한 것 중에서 가장 흥미롭고 유용 할 것입니다 .

스크린 샷 :

상태 표시 줄 http://img34.imageshack.us/img34/849/statusline.png

암호:

"recalculate the trailing whitespace warning when idle, and after saving
autocmd cursorhold,bufwritepost * unlet! b:statusline_trailing_space_warning

"return '[\s]' if trailing white space is detected
"return '' otherwise
function! StatuslineTrailingSpaceWarning()
    if !exists("b:statusline_trailing_space_warning")

        if !&modifiable
            let b:statusline_trailing_space_warning = ''
            return b:statusline_trailing_space_warning
        endif

        if search('\s\+$', 'nw') != 0
            let b:statusline_trailing_space_warning = '[\s]'
        else
            let b:statusline_trailing_space_warning = ''
        endif
    endif
    return b:statusline_trailing_space_warning
endfunction


"return the syntax highlight group under the cursor ''
function! StatuslineCurrentHighlight()
    let name = synIDattr(synID(line('.'),col('.'),1),'name')
    if name == ''
        return ''
    else
        return '[' . name . ']'
    endif
endfunction

"recalculate the tab warning flag when idle and after writing
autocmd cursorhold,bufwritepost * unlet! b:statusline_tab_warning

"return '[&et]' if &et is set wrong
"return '[mixed-indenting]' if spaces and tabs are used to indent
"return an empty string if everything is fine
function! StatuslineTabWarning()
    if !exists("b:statusline_tab_warning")
        let b:statusline_tab_warning = ''

        if !&modifiable
            return b:statusline_tab_warning
        endif

        let tabs = search('^\t', 'nw') != 0

        "find spaces that arent used as alignment in the first indent column
        let spaces = search('^ \{' . &ts . ',}[^\t]', 'nw') != 0

        if tabs && spaces
            let b:statusline_tab_warning = '[mixed-indenting]'
        elseif (spaces && !&et) || (tabs && &et)
            let b:statusline_tab_warning = '[&et]'
        endif
    endif
    return b:statusline_tab_warning
endfunction

"recalculate the long line warning when idle and after saving
autocmd cursorhold,bufwritepost * unlet! b:statusline_long_line_warning

"return a warning for "long lines" where "long" is either &textwidth or 80 (if
"no &textwidth is set)
"
"return '' if no long lines
"return '[#x,my,$z] if long lines are found, were x is the number of long
"lines, y is the median length of the long lines and z is the length of the
"longest line
function! StatuslineLongLineWarning()
    if !exists("b:statusline_long_line_warning")

        if !&modifiable
            let b:statusline_long_line_warning = ''
            return b:statusline_long_line_warning
        endif

        let long_line_lens = s:LongLines()

        if len(long_line_lens) > 0
            let b:statusline_long_line_warning = "[" .
                        \ '#' . len(long_line_lens) . "," .
                        \ 'm' . s:Median(long_line_lens) . "," .
                        \ '$' . max(long_line_lens) . "]"
        else
            let b:statusline_long_line_warning = ""
        endif
    endif
    return b:statusline_long_line_warning
endfunction

"return a list containing the lengths of the long lines in this buffer
function! s:LongLines()
    let threshold = (&tw ? &tw : 80)
    let spaces = repeat(" ", &ts)

    let long_line_lens = []

    let i = 1
    while i <= line("$")
        let len = strlen(substitute(getline(i), '\t', spaces, 'g'))
        if len > threshold
            call add(long_line_lens, len)
        endif
        let i += 1
    endwhile

    return long_line_lens
endfunction

"find the median of the given array of numbers
function! s:Median(nums)
    let nums = sort(a:nums)
    let l = len(nums)

    if l % 2 == 1
        let i = (l-1) / 2
        return nums[i]
    else
        return (nums[l/2] + nums[(l/2)-1]) / 2
    endif
endfunction


"statusline setup
set statusline=%f "tail of the filename

"display a warning if fileformat isnt unix
set statusline+=%#warningmsg#
set statusline+=%{&ff!='unix'?'['.&ff.']':''}
set statusline+=%*

"display a warning if file encoding isnt utf-8
set statusline+=%#warningmsg#
set statusline+=%{(&fenc!='utf-8'&&&fenc!='')?'['.&fenc.']':''}
set statusline+=%*

set statusline+=%h "help file flag
set statusline+=%y "filetype
set statusline+=%r "read only flag
set statusline+=%m "modified flag

"display a warning if &et is wrong, or we have mixed-indenting
set statusline+=%#error#
set statusline+=%{StatuslineTabWarning()}
set statusline+=%*

set statusline+=%{StatuslineTrailingSpaceWarning()}

set statusline+=%{StatuslineLongLineWarning()}

set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*

"display a warning if &paste is set
set statusline+=%#error#
set statusline+=%{&paste?'[paste]':''}
set statusline+=%*

set statusline+=%= "left/right separator

function! SlSpace()
    if exists("*GetSpaceMovement")
        return "[" . GetSpaceMovement() . "]"
    else
        return ""
    endif
endfunc
set statusline+=%{SlSpace()}

set statusline+=%{StatuslineCurrentHighlight()}\ \ "current highlight
set statusline+=%c, "cursor column
set statusline+=%l/%L "cursor line/total lines
set statusline+=\ %P "percent through file
set laststatus=2

그중에서도 일반적인 표준 파일 정보의 상태 표시 줄에 정보를 제공하지만 : set paste, 혼합 들여 쓰기, 후행 공백 등에 대한 경고와 같은 추가 정보도 포함합니다. 특히 코드 형식에 대해 항문 인 경우 매우 유용합니다.

또한 스크린 샷에서 있듯이 , 그것을 syntastic결합 하면 구문 오류를 강조 표시 할 수 있습니다 (선택한 언어에 구문 검사기가 번들로 있다고 가정하면).


위의 문제가 있습니다. LongLines ()에 누락 된 조건이 있습니다. 나는 그것을 "while i <threshold"로 변경했지만 len도 그 조건 안에서 호출되는 것이 누락되었습니다. len에 대한 아이디어가 있습니까?
알리

괜찮습니다, 여기서 진짜 발견했습니다 : dotfiles.org/~gregf/.vimrc
Ali

@pug 내부 서버 오류가 발생했습니다. = (어딘가에 .vimrc의 관련 부분을 힌트 나 붙여 넣기 할 수 있습니까?
Anton Strogonoff

@Anton은 코드 형식으로 인해 엉망인 페이스트를 수정했습니다. 지금은 좋아야합니다. 또한 plugin / statusline.vim 파일에 고정하여 .vimrc를 사용하지 못하게하는 것이 좋습니다.
Gavin Gilmour

@Gavin Works 우수, 수정 및 팁 주셔서 감사합니다! autocmd BufEnter *.py match OverLength /\%81v.\+/긴 줄을 강조 표시하기 위해 .vimrc 와 같은 것을 사용 했지만 접근 방식이 덜 산만 할 수 있습니다. 또한 상태 표시 줄의 구문 검사 결과는 매우 멋진 것 중 하나입니다!
Anton Strogonoff

19

내 미니 버전 :

syntax on
set background=dark
set shiftwidth=2
set tabstop=2

if has("autocmd")
  filetype plugin indent on
endif

set showcmd             " Show (partial) command in status line.
set showmatch           " Show matching brackets.
set ignorecase          " Do case insensitive matching
set smartcase           " Do smart case matching
set incsearch           " Incremental search
set hidden              " Hide buffers when they are abandoned

다양한 장소에서 수집 한 큰 버전 :

syntax on
set background=dark
set ruler                     " show the line number on the bar
set more                      " use more prompt
set autoread                  " watch for file changes
set number                    " line numbers
set hidden
set noautowrite               " don't automagically write on :next
set lazyredraw                " don't redraw when don't have to
set showmode
set showcmd
set nocompatible              " vim, not vi
set autoindent smartindent    " auto/smart indent
set smarttab                  " tab and backspace are smart
set tabstop=2                 " 6 spaces
set shiftwidth=2
set scrolloff=5               " keep at least 5 lines above/below
set sidescrolloff=5           " keep at least 5 lines left/right
set history=200
set backspace=indent,eol,start
set linebreak
set cmdheight=2               " command line two lines high
set undolevels=1000           " 1000 undos
set updatecount=100           " switch every 100 chars
set complete=.,w,b,u,U,t,i,d  " do lots of scanning on tab completion
set ttyfast                   " we have a fast terminal
set noerrorbells              " No error bells please
set shell=bash
set fileformats=unix
set ff=unix
filetype on                   " Enable filetype detection
filetype indent on            " Enable filetype-specific indenting
filetype plugin on            " Enable filetype-specific plugins
set wildmode=longest:full
set wildmenu                  " menu has tab completion
let maplocalleader=','        " all my macros start with ,
set laststatus=2

"  searching
set incsearch                 " incremental search
set ignorecase                " search ignoring case
set hlsearch                  " highlight the search
set showmatch                 " show matching bracket
set diffopt=filler,iwhite     " ignore all whitespace and sync

"  backup
set backup
set backupdir=~/.vim_backup
set viminfo=%100,'100,/100,h,\"500,:100,n~/.viminfo
"set viminfo='100,f1

" spelling
if v:version >= 700
  " Enable spell check for text files
  autocmd BufNewFile,BufRead *.txt setlocal spell spelllang=en
endif

" mappings
" toggle list mode
nmap <LocalLeader>tl :set list!<cr>
" toggle paste mode
nmap <LocalLeader>pp :set paste!<cr>

참고로, 'smartindent'는 더 이상 사용되지 않으며 (cindent를 대체 함) 파일 형식 들여 쓰기를 사용할 때 아무 것도하지 않으며 유용하지 않을 때만 활성화됩니다
graywh

13

때로는 가장 간단한 것들이 가장 가치가 있습니다. 내 .vimrc의 두 줄은 완전히 필수입니다.

노어; :
노어;

내가 그랬어 nore \ ;내가 사용하기 때문에 대신 ,내로<leader>
aehlke

3
그러나 그것은 무엇을합니까? :)
Henrik Bjørnskov

6
세미콜론은 거의 사용되지 않는 명령입니다. 콜론은 매우 일반적인 명령으로 명령 행 모드로 들어가는 데 사용됩니다. 하나를 다른 것으로 다시 매핑하면 Shift 키를 누르지 않고도 명령 줄 모드로 들어갈 수 있으므로 새끼 손가락에 근육이 절약됩니다.
윌리엄 Pursell

7
프랑스어 키보드에서는 ',', ';'을 작성하기 위해 'shift'가 필요하지 않습니다. 그리고 ':'... 그러나 '\', '['및 ']'는 진짜 고통입니다.
Olivier Pons

12

기타 설정 :

  1. 성가신 오류 벨 끄기 :

    set noerrorbells
    set visualbell
    set t_vb=
    
  2. 줄 바꿈으로 커서를 예상대로 움직이십시오.

    inoremap <Down> <C-o>gj
    inoremap <Up> <C-o>gk
    
  3. ctags"태그"를 찾아 디렉토리를 찾을 때까지 파일을 찾습니다 .

    set tags=tags;/
    
  4. Python 구문으로 SCons 파일 표시 :

    autocmd BufReadPre,BufNewFile SConstruct set filetype=python
    autocmd BufReadPre,BufNewFile SConscript set filetype=python
    

#! 추가는 / usr / 빈 / 파이썬을 SConstruct 파일, 그것은 Vim의 파일 형식 탐지 마법에 내장 된 트리거
richq

줄 바꿈으로 예상대로 이동 j/ k이동 하는 더 좋은 방법이 있습니까? g매번 누르기를 원하지 않습니다 .
PUK

8

나는 세계에서 가장 진보 된 바이 머는 아니지만 여기에 내가 선택한 몇 가지가 있습니다.

function! Mosh_Tab_Or_Complete()
    if col('.')>1 && strpart( getline('.'), col('.')-2, 3 ) =~ '^\w'
        return "\<C-N>"
    else
        return "\<Tab>"
endfunction

inoremap <Tab> <C-R>=Mosh_Tab_Or_Complete()<CR>

단어를 자동으로 배치할지 또는 실제 탭을 배치할지 (4 칸) 탭 자동 완성 기능을 만듭니다.

map cc :.,$s/^ *//<CR>

여기에서 파일 끝까지 모든 여는 공백을 제거하십시오. 어떤 이유로 나는 이것이 유용하다고 생각합니다.

set nu! 
set nobackup

줄 번호를 표시하고 성가신 백업 파일을 만들지 마십시오. 어쨌든 오래된 백업에서 아무것도 복원하지 못했습니다.

imap ii <C-[>

삽입 중에 i를 두 번 눌러 명령 모드로 이동합니다. 나는 2 개의 행이있는 단어 나 변수를 결코 보지 못했고, 이렇게하면 손가락이 홈 행을 떠나거나 여러 키를 눌러 앞뒤로 전환 할 필요가 없습니다.


3
ii의 흥미로운 매핑 ... 매우 흥미 롭습니다. 그것은 매우 멋진 아이디어입니다-비록 그것이 'vanilla'vim을 사용하는 나의 능력에 심각하게 영향을 미칠 것이라고 걱정할 것입니다.
thomasrutter

나는;와 같은 일을 해왔다.; 오랫동안 문제가 발생하지 않았습니다. 바닐라 vi / vim을 사용하도록 강요 당했을 때 나는 바보 같은 [esc] 키를 사용하는 것을 즉시 기억합니다. 나에게는이 설정이 절대적으로 필요합니다. 나는 그것이 없으면 vi (m)을 기꺼이 사용하지 않을 것입니다. <br> 그리고 ';;'대신 'ii'를 사용하는 아이디어가 더 좋습니다. 더 직관적이고 토글과 같습니다.
iconoclast

또 다른 가능성은 Ctrl-C를 사용하여 삽입 모드를 종료하는 것입니다. 그것은 거의 탈출과 동일합니다 (시각 블록의 라인에서 작동 할 때 나를 괴롭히는 유일한 차이점).
a3nm 21:50에

8

readline-esque (emacs) 키 바인딩을 사용하여 vimrc를 많이 언급했습니다.

if version >= 700

"------ Meta ------"

" clear all autocommands! (this comment must be on its own line)
autocmd!

set nocompatible                " break away from old vi compatibility
set fileformats=unix,dos,mac    " support all three newline formats
set viminfo=                    " don't use or save viminfo files

"------ Console UI & Text display ------"

set cmdheight=1                 " explicitly set the height of the command line
set showcmd                     " Show (partial) command in status line.
set number                      " yay line numbers
set ruler                       " show current position at bottom
set noerrorbells                " don't whine
set visualbell t_vb=            " and don't make faces
set lazyredraw                  " don't redraw while in macros
set scrolloff=5                 " keep at least 5 lines around the cursor
set wrap                        " soft wrap long lines
set list                        " show invisible characters
set listchars=tab:>·,trail:·    " but only show tabs and trailing whitespace
set report=0                    " report back on all changes
set shortmess=atI               " shorten messages and don't show intro
set wildmenu                    " turn on wild menu :e <Tab>
set wildmode=list:longest       " set wildmenu to list choice
if has('syntax')
    syntax on
    " Remember that rxvt-unicode has 88 colors by default; enable this only if
    " you are using the 256-color patch
    if &term == 'rxvt-unicode'
        set t_Co=256
    endif

    if &t_Co == 256
        colorscheme xoria256
    else
        colorscheme peachpuff
    endif
endif

"------ Text editing and searching behavior ------"

set nohlsearch                  " turn off highlighting for searched expressions
set incsearch                   " highlight as we search however
set matchtime=5                 " blink matching chars for .x seconds
set mouse=a                     " try to use a mouse in the console (wimp!)
set ignorecase                  " set case insensitivity
set smartcase                   " unless there's a capital letter
set completeopt=menu,longest,preview " more autocomplete <Ctrl>-P options
set nostartofline               " leave my cursor position alone!
set backspace=2                 " equiv to :set backspace=indent,eol,start
set textwidth=80                " we like 80 columns
set showmatch                   " show matching brackets
set formatoptions=tcrql         " t - autowrap to textwidth
                                " c - autowrap comments to textwidth
                                " r - autoinsert comment leader with <Enter>
                                " q - allow formatting of comments with :gq
                                " l - don't format already long lines

"------ Indents and tabs ------"

set autoindent                  " set the cursor at same indent as line above
set smartindent                 " try to be smart about indenting (C-style)
set expandtab                   " expand <Tab>s with spaces; death to tabs!
set shiftwidth=4                " spaces for each step of (auto)indent
set softtabstop=4               " set virtual tab stop (compat for 8-wide tabs)
set tabstop=8                   " for proper display of files with tabs
set shiftround                  " always round indents to multiple of shiftwidth
set copyindent                  " use existing indents for new indents
set preserveindent              " save as much indent structure as possible
filetype plugin indent on       " load filetype plugins and indent settings

"------ Key bindings ------"

" Remap broken meta-keys that send ^[
for n in range(97,122) " ASCII a-z
    let c = nr2char(n)
    exec "set <M-". c .">=\e". c
    exec "map  \e". c ." <M-". c .">"
    exec "map! \e". c ." <M-". c .">"
endfor

""" Emacs keybindings
" first move the window command because we'll be taking it over
noremap <C-x> <C-w>
" Movement left/right
noremap! <C-b> <Left>
noremap! <C-f> <Right>
" word left/right
noremap  <M-b> b
noremap! <M-b> <C-o>b
noremap  <M-f> w
noremap! <M-f> <C-o>w
" line start/end
noremap  <C-a> ^
noremap! <C-a> <Esc>I
noremap  <C-e> $
noremap! <C-e> <Esc>A
" Rubout word / line and enter insert mode
noremap  <C-w> i<C-w>
noremap  <C-u> i<C-u>
" Forward delete char / word / line and enter insert mode
noremap! <C-d> <C-o>x
noremap  <M-d> dw
noremap! <M-d> <C-o>dw
noremap  <C-k> Da
noremap! <C-k> <C-o>D
" Undo / Redo and enter normal mode
noremap  <C-_> u
noremap! <C-_> <C-o>u<Esc><Right>
noremap! <C-r> <C-o><C-r><Esc>

" Remap <C-space> to word completion
noremap! <Nul> <C-n>

" OS X paste (pretty poor implementation)
if has('mac')
    noremap  √ :r!pbpaste<CR>
    noremap! √ <Esc>√
endif

""" screen.vim REPL: http://github.com/ervandew/vimfiles
" send paragraph to parallel process
vmap <C-c><C-c> :ScreenSend<CR>
nmap <C-c><C-c> mCvip<C-c><C-c>`C
imap <C-c><C-c> <Esc><C-c><C-c><Right>
" set shell region height
let g:ScreenShellHeight = 12


"------ Filetypes ------"

" Vimscript
autocmd FileType vim setlocal expandtab shiftwidth=4 tabstop=8 softtabstop=4

" Shell
autocmd FileType sh setlocal expandtab shiftwidth=4 tabstop=8 softtabstop=4

" Lisp
autocmd Filetype lisp,scheme setlocal equalprg=~/.vim/bin/lispindent.lisp expandtab shiftwidth=2 tabstop=8 softtabstop=2

" Ruby
autocmd FileType ruby setlocal expandtab shiftwidth=2 tabstop=2 softtabstop=2

" PHP
autocmd FileType php setlocal expandtab shiftwidth=4 tabstop=4 softtabstop=4

" X?HTML & XML
autocmd FileType html,xhtml,xml setlocal expandtab shiftwidth=2 tabstop=2 softtabstop=2

" CSS
autocmd FileType css setlocal expandtab shiftwidth=4 tabstop=4 softtabstop=4

" JavaScript
" autocmd BufRead,BufNewFile *.json setfiletype javascript
autocmd FileType javascript setlocal expandtab shiftwidth=2 tabstop=2 softtabstop=2
let javascript_enable_domhtmlcss=1

"------ END VIM-500 ------"

endif " version >= 500

참고로, 'smartindent'는 더 이상 사용되지 않으며 (cindent가이를 대체 함) 파일 형식 들여 쓰기를 사용할 때 아무 것도하지 않으며 유용하지 않을 때만 활성화됩니다
graywh

7
syntax on
set cindent
set ts=4
set sw=4
set backspace=2
set laststatus=2
set nohlsearch
set modeline
set modelines=3
set ai
map Q gq

set vb t_vb=

set nowrap
set ss=5
set is
set scs
set ru

map <F2> <Esc>:w<CR>
map! <F2> <Esc>:w<CR>

map <F10> <Esc>:qa<CR>
map! <F10> <Esc>:qa<CR>

map <F9>  <Esc>:wqa<CR>
map! <F9>  <Esc>:wqa<CR>

inoremap <s-up> <Esc><c-w>W<Ins>
inoremap <s-down> <Esc><c-w>w<Ins>

nnoremap <s-up> <c-w>W
nnoremap <s-down> <c-w>w

" Fancy middle-line <CR>
inoremap <C-CR> <Esc>o
nnoremap <C-CR> o

" This is the way I like my quotation marks and various braces
inoremap '' ''<Left>
inoremap "" ""<Left>
inoremap () ()<Left>
inoremap <> <><Left>
inoremap {} {}<Left>
inoremap [] []<Left>
inoremap () ()<Left>

" Quickly set comma or semicolon at the end of the string
inoremap ,, <End>,
inoremap ;; <End>;
au FileType python inoremap :: <End>:


au FileType perl,python set foldlevel=0
au FileType perl,python set foldcolumn=4
au FileType perl,python set fen
au FileType perl        set fdm=syntax
au FileType python      set fdm=indent
au FileType perl,python set fdn=4
au FileType perl,python set fml=10
au FileType perl,python set fdo=block,hor,mark,percent,quickfix,search,tag,undo,search

au FileType perl,python abbr sefl self
au FileType perl abbr sjoft shift
au FileType perl abbr DUmper Dumper

function! ToggleNumberRow()
       if !exists("g:NumberRow") || 0 == g:NumberRow
               let g:NumberRow = 1
               call ReverseNumberRow()
       else
               let g:NumberRow = 0
               call NormalizeNumberRow()
       endif
endfunction


" Reverse the number row characters
function! ReverseNumberRow()
       " map each number to its shift-key character
       inoremap 1 !
       inoremap 2 @
       inoremap 3 #
       inoremap 4 $
       inoremap 5 %
       inoremap 6 ^
       inoremap 7 &
       inoremap 8 *
       inoremap 9 (
       inoremap 0 )
       inoremap - _
    inoremap 90 ()<Left>
       " and then the opposite
       inoremap ! 1
       inoremap @ 2
       inoremap # 3
       inoremap $ 4
       inoremap % 5
       inoremap ^ 6
       inoremap & 7
       inoremap * 8
       inoremap ( 9
       inoremap ) 0
       inoremap _ -
endfunction

" DO the opposite to ReverseNumberRow -- give everything back
function! NormalizeNumberRow()
       iunmap 1
       iunmap 2
       iunmap 3
       iunmap 4
       iunmap 5
       iunmap 6
       iunmap 7
       iunmap 8
       iunmap 9
       iunmap 0
       iunmap -
       "------
       iunmap !
       iunmap @
       iunmap #
       iunmap $
       iunmap %
       iunmap ^
       iunmap &
       iunmap *
       iunmap (
       iunmap )
       iunmap _
       inoremap () ()<Left>
endfunction

"call ToggleNumberRow()
nnoremap <M-n> :call ToggleNumberRow()<CR>

" Add use <CWORD> at the top of the file
function! UseWord(word)
       let spec_cases = {'Dumper': 'Data::Dumper'}
       let my_word = a:word
       if has_key(spec_cases, my_word)
               let my_word = spec_cases[my_word]
       endif

       let was_used = search("^use.*" . my_word, "bw")

       if was_used > 0
               echo "Used already"
               return 0
       endif

       let last_use = search("^use", "bW")
       if 0 == last_use
               last_use = search("^package", "bW")
               if 0 == last_use
                       last_use = 1
               endif
       endif

       let use_string = "use " . my_word . ";"
       let res = append(last_use, use_string)
       return 1
endfunction

function! UseCWord()
       let cline = line(".")
       let ccol = col(".")
       let ch = UseWord(expand("<cword>"))
       normal mu
       call cursor(cline + ch, ccol)

endfunction

function! GetWords(pattern)
       let cline = line(".")
       let ccol = col(".")
       call cursor(1,1)

       let temp_dict = {}
       let cpos = searchpos(a:pattern)
       while cpos[0] != 0
               let temp_dict[expand("<cword>")] = 1
               let cpos = searchpos(a:pattern, 'W')
       endwhile

       call cursor(cline, ccol)
       return keys(temp_dict)
endfunction

" Append the list of words, that match the pattern after cursor
function! AppendWordsLike(pattern)
       let word_list = sort(GetWords(a:pattern))
       call append(line("."), word_list)
endfunction


nnoremap <F7>  :call UseCWord()<CR>

" Useful to mark some code lines as debug statements
function! MarkDebug()
       let cline = line(".")
       let ctext = getline(cline)
       call setline(cline, ctext . "##_DEBUG_")
endfunction

" Easily remove debug statements
function! RemoveDebug()
       %g/#_DEBUG_/d
endfunction

au FileType perl,python inoremap <M-d> <Esc>:call MarkDebug()<CR><Ins>
au FileType perl,python inoremap <F6> <Esc>:call RemoveDebug()<CR><Ins>
au FileType perl,python nnoremap <F6> :call RemoveDebug()<CR>

" end Perl settings

nnoremap <silent> <F8> :TlistToggle<CR>
inoremap <silent> <F8> <Esc>:TlistToggle<CR><Esc>

function! AlwaysCD()
       if bufname("") !~ "^scp://" && bufname("") !~ "^sftp://" && bufname("") !~ "^ftp://"
               lcd %:p:h
       endif
endfunction
autocmd BufEnter * call AlwaysCD()

function! DeleteRedundantSpaces()
       let cline = line(".")
       let ccol = col(".")
       silent! %s/\s\+$//g
       call cursor(cline, ccol)
endfunction
au BufWrite * call DeleteRedundantSpaces()

set nobackup
set nowritebackup
set cul

colorscheme evening

autocmd FileType python set formatoptions=wcrq2l
autocmd FileType python set inc="^\s*from"
autocmd FileType python so /usr/share/vim/vim72/indent/python.vim

autocmd FileType c      set si
autocmd FileType mail   set noai
autocmd FileType mail   set ts=3
autocmd FileType mail   set tw=78
autocmd FileType mail   set shiftwidth=3
autocmd FileType mail   set expandtab
autocmd FileType xslt   set ts=4
autocmd FileType xslt   set shiftwidth=4
autocmd FileType txt    set ts=3
autocmd FileType txt    set tw=78
autocmd FileType txt    set expandtab

" Move cursor together with the screen
noremap <c-j> j<c-e>
noremap <c-k> k<c-y>

" Better Marks
nnoremap ' `

6

일반적인 오타에 대한 일부 수정 사항으로 인해 놀라운 시간이 절약되었습니다.

:command WQ wq
:command Wq wq
:command W w
:command Q q

iab anf and
iab adn and
iab ans and
iab teh the
iab thre there

25
나는 이것을 좋아하지 않는다-그것은 단지 오류를 훈련시킨다.
Svante

나는 단어를 위해 그것을 좋아한다 : 그리고, 거기에는 있지만 저장하고 끝내기 위해
sixtyfootersdude

3
@Svante, 일반적으로 동의합니다. 제 명령 에이 기능이 없으면 자주 저장하거나 자주 저장 / 종료하는 경향이 있습니다. 종종 내 새끼 손가락은 Shift 키를 들어 올리는 데 1 초의 속도가 너무 느리며 BAM 중 하나가 대문자로 표시됩니다.
Pharaun

1
vi는 콜론 (:) 용으로 지정된 키가있는 ADM3A 터미널에 쓰여졌으므로 Shift를 누를 필요가 없습니다. 스페이스 바와 같이 보통 / 시각적 모드에서 전혀 사용되지 않는 키를 다시 매핑하면이 문제가 발생하지 않습니다. nnoremap <Space> : 및 vnomap <Space> : en.wikipedia.org/wiki/File:KB_Terminal_ADM3A.svg
aoeu

저장 / 종료 명령에는이 기능이 마음에 들지만 단어에는 적합하지 않습니다. 안전망이 없을 때 실수를하면 Vim이 실수를 알려줍니다. 자동 고침이 없을 때 "teh"로 철자를 쓰면 눈치 채지 못하고 교육받지 못한 것처럼 보일 것입니다.
Robert Martin

5

나는 내 3200 .vimrc 라인 중 얼마나 많은 것이 내 기발한 요구를위한 것인지 몰랐고 여기에 나열하는 것이 꽤 고무적이지 않을 것입니다. 그러나 아마도 Vim이 그렇게 유용한 이유 일 것입니다 ...

iab AlP ABCDEFGHIJKLMNOPQRSTUVWXYZ
iab MoN January February March April May June July August September October November December
iab MoO Jan Feb Mar Apr May Jun Jul Aug Sep Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
iab NuM 12345678901234567890123456789012345678901234567890123456789012345678901234567890 
iab RuL ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0

" Highlight every other line
map ,<Tab> :set hls<CR>/\\n.*\\n/<CR>

" This is for working across multiple xterms and/or gvims
" Transfer/read and write one block of text between vim sessions (capture whole line):
" Write
nmap ;w :. w! ~/.vimxfer<CR>
" Read
nmap ;r :r ~/.vimxfer<CR>
" Append 
nmap ;a :. w! >>~/.vimxfer<CR>

5

내 242 라인 .vimrc은 그다지 흥미롭지 않지만 아무도 언급하지 않았기 때문에 기본 매핑 외에도 작업 흐름을 향상시킨 가장 중요한 두 가지 매핑을 공유해야한다고 생각했습니다.

map <C-j> :bprev<CR>
map <C-k> :bnext<CR>
set hidden " this will go along

정말로, 버퍼를 스위칭하는 것은 자주 할 것. 물론 Windows는 모든 것이 화면에 잘 맞지 않습니다.

빠른 오류 찾아보기 (quickfix 참조) 및 grep 결과에 대한 유사한 맵 세트 :

map <C-n> :cn<CR>
map <C-m> :cp<CR>

간단하고 쉽고 효율적입니다.


Vim이 탭을 지원하기 때문에 버퍼간에 많이 전환하지 않았습니다. 키보드의 "뒤로"및 "앞으로"추가 키가 탭 탐색 명령에 매핑되어 있습니다.
Don Reba

@ Don Reba, 탭은 버퍼의 일부 기능을 복제합니다. 따라서 버퍼 나 탭을 "사용"하는 것과 별 차이가 없습니다. 순수 주의자들은 탭은 지역을 분리하는 작업을 구성하기위한 것이며 더 이상은 아니라고 말합니다. 모든 I의 말은 버퍼가 모든 편의를하고 난 뭔가 더 높은 추상화가 필요로 와야한다 뭔가로 예약, 탭을 사용하여 남아있는 것입니다 :).
nperson325681

4

set nobackup 
set nocp
set tabstop=4
set shiftwidth=4
set et
set ignorecase

set ai
set ruler
set showcmd
set incsearch
set dir=$temp       " Make swap live in the %TEMP% directory
syn on

" Load the color scheme
colo inkpot

4

vim 내에서 cscope를 사용합니다 (여러 버퍼를 잘 활용 함). control-K를 사용하여 대부분의 명령을 시작합니다 (기억할 때 ctags에서 도난 당함). 또한 이미 .cscope.out 파일을 생성했습니다.

만약 가지고 있다면 ( "cscope")

set cscopeprg=/usr/local/bin/cscope
set cscopetagorder=0
set cscopetag
set cscopepathcomp=3
set nocscopeverbose
cs add .cscope.out
set csverb

"
" cscope find
"
" 0 or s: Find this C symbol
" 1 or d: Find this definition
" 2 or g: Find functions called by this function
" 3 or c: Find functions calling this function
" 4 or t: Find assignments to
" 6 or e: Find this egrep pattern
" 7 or f: Find this file
" 8 or i: Find files #including this file
" 
map ^Ks     :cs find 0 <C-R>=expand("<cword>")<CR><CR>
map ^Kd     :cs find 1 <C-R>=expand("<cword>")<CR><CR>
map ^Kg     :cs find 2 <C-R>=expand("<cword>")<CR><CR>
map ^Kc     :cs find 3 <C-R>=expand("<cword>")<CR><CR>
map ^Kt     :cs find 4 <C-R>=expand("<cword>")<CR><CR>
map ^Ke     :cs find 6 <C-R>=expand("<cword>")<CR><CR>
map ^Kf     :cs find 7 <C-R>=expand("<cfile>")<CR><CR>
map ^Ki     :cs find 8 <C-R>=expand("%")<CR><CR>

엔디 프



3

OS X를 사용하고 있으므로 일부 플랫폼은 다른 플랫폼에서 더 나은 기본값을 가질 수 있지만 다음과는 관계없이 다음과 같습니다.

syntax on
set tabstop=4
set expandtab
set shiftwidth=4

1
softtabstop대신 찾아서 사용할 수도 있습니다 tabstop. tabstop기본값 인 8을 그대로 두면 다른 사람이 탭으로 만든 파일을 읽을 때 도움이됩니다.
Greg Hewgill

6
OSX는 탭과 어떤 관련이 있습니까?
aehlke

3
map = }{!}fmt^M}
map + }{!}fmt -p '> '^M}
set showmatch

=는 일반 단락을 다시 포맷하기위한 것입니다. +는 인용 이메일에서 단락을 다시 포맷하기위한 것입니다. showmatch는 닫는 괄호 또는 괄호를 입력 할 때 일치하는 괄호 / 괄호를 깜박이기위한 것입니다.


3

디렉토리 트리에서 사용 가능한 첫 번째 '태그'파일을 사용하십시오.

:set tags=tags;/

왼쪽과 오른쪽은 커서를 움직이지 않고 버퍼를 전환하는 데 사용됩니다.

map <right> <ESC>:bn<RETURN>
map <left> <ESC>:bp<RETURN>

한 번의 키 누르기로 검색 강조 표시를 비활성화하십시오.

map - :nohls<cr>

3
set tabstop=4 softtabstop=4 shiftwidth=4 expandtab autoindent cindent 
set encoding=utf-8 fileencoding=utf-8
set nobackup nowritebackup noswapfile autoread
set number
set hlsearch incsearch ignorecase smartcase

if has("gui_running")
    set lines=35 columns=140
    colorscheme ir_black
else
    colorscheme darkblue
endif

" bash like auto-completion
set wildmenu
set wildmode=list:longest

inoremap <C-j> <Esc>

" for lusty explorer
noremap glr \lr
noremap glf \lf
noremap glb \lb

" use ctrl-h/j/k/l to switch between splits
map <c-j> <c-w>j
map <c-k> <c-w>k
map <c-l> <c-w>l
map <c-h> <c-w>h

" Nerd tree stuff
let NERDTreeIgnore = ['\.pyc$', '\.pyo$']
noremap gn :NERDTree<Cr>

" cd to the current file's directory
noremap gc :lcd %:h<Cr>

나는 당신의 설정에서 일어나는 많은 것을 좋아합니다. 한 줄에 여러 세트if has("gui_running") 및 멋진지도 . 대부분의 구성을 내 것으로 복사했습니다. 감사!
저스틴 포스

3

이것을 vimrc에 넣으십시오.

imap <C-l> <Space>=><Space>

해시 로켓을 다시 입력하는 것에 대해 생각하지 마십시오. 네, 루비 1.9에서는 필요하지 않습니다. 하지만 걱정하지 마십시오.

내 전체 vimrc가 여기 있습니다 .


이것은 좋은 생각이지만 루비 파일에 대해서만 매핑하는 것이 좋습니다.autocmd FileType ruby imap <C-l> <Space>=><Space>
csexton

Ruby를 모르는 Emacs 사용자에게 어떤 역할을하는지 설명해 주시겠습니까?
토마스

이렇게하면 Control-L 단축 키가 Vim의 삽입 모드에 추가되어 공백 (=>)이있는 해시 로켓을 자동으로 입력합니다. 해시 로켓은 해시를위한 Ruby의 키-값 연산자입니다.
dpogg1

2

글쎄, 당신은 내 폐품을해야합니다 CONFIGS에게 자신을. 즐기세요 주로 매핑 및 임의의 구문 관련 항목을 포함하여 접는 설정 및 일부 플러그인 구성, 텍스 컴파일 파서 등 원하는 설정입니다.

BTW, 내가 매우 유용하다고 생각한 것은 "커서 아래 강조 표시된 단어"입니다.

 highlight flicker cterm=bold ctermfg=white
 au CursorMoved <buffer> exe 'match flicker /\V\<'.escape(expand('<cword>'), '/').'\>/'

를 사용하지 않기 때문에 cterm및 만 termfg사용 gvim됩니다. 당신은 일에 있음을 원하는 경우 gvim단지 그들을 REPLAC guiguifg각각.


여러 창을 열어서 작동시키는 방법? 첫 번째 버퍼로 시작된 메인에서만 작동하는 것 같습니다.
ohnoes

2

.vimrc를 최대한 일반적으로 유용하게 유지하려고 노력했습니다 .

.gpg 파일을 안전하게 편집 할 수있는 핸들러가 있습니다.

au BufNewFile,BufReadPre *.gpg :set secure vimi= noswap noback nowriteback hist=0 binary
au BufReadPost *.gpg :%!gpg -d 2>/dev/null
au BufWritePre *.gpg :%!gpg -e -r 'name@email.com' 2>/dev/null
au BufWritePost *.gpg u

2

1) 상태 표시 줄 (파일 이름, ASCII 값 (10 진수), 16 진수 값 및 표준 줄, cols 및 % 포함)을 좋아합니다.

set statusline=%t%h%m%r%=[%b\ 0x%02B]\ \ \ %l,%c%V\ %P
" Always show a status line
set laststatus=2
"make the command line 1 line high
set cmdheight=1

2) 나는 또한 분할 창에 대한 매핑을 좋아합니다.

" <space> switches to the next window (give it a second)
" <space>n switches to the next window
" <space><space> switches to the next window and maximizes it
" <space>= Equalizes the size of all windows
" + Increases the size of the current window
" - Decreases the size of the current window

 :map <space> <c-W>w
:map <space>n <c-W>w
:map <space><space> <c-W>w<c-W>_
:map <space>= <c-W>=
if bufwinnr(1)
  map + <c-W>+
  map - <c-W>-
endif

2

내 .vimrc에는 실제로 많은 것이 없습니다. (850 줄이 있어도). 플러그인으로 추출하기에는 너무 게으른 대부분의 설정과 몇 가지 공통적이고 간단한 매핑입니다.

"자동 클래스"로 "템플릿 파일"을 의미하는 경우 템플릿 확장기 플러그인을 사용하고 있습니다. 있습니다. 같은 사이트에서 C & C ++ 편집을 위해 정의한 ftplugin을 찾을 수 있습니다. C # 같아요.

리팩토링 측면과 관련하여 http://vim.wikia.com ; IIRC 예제 코드는 C # 용입니다. 리팩토링 플러그인에 영감을주었습니다. 여전히 많은 작업이 필요한 (실제로 리팩토링해야 함).

vim 메일 링리스트의 아카이브, 특히 vim을 효과적인 IDE로 사용하는 것에 대한 주제를 살펴 봐야합니다. : make, tags, ...를 살펴 보는 것을 잊지 마십시오.

HTH,


2

내 .vimrc에는 다음과 같은 줄이 포함되어 있습니다.

set statusline=%2*%n\|%<%*%-.40F%2*\|\ %2*%M\ %3*%=%1*\ %1*%2.6l%2*x%1*%1.9(%c%V%)%2*[%1*%P%2*]%1*%2B

고등학교 결승을 배우는 동안 지루해졌습니다.


이것이 무엇을하는지 설명해 주시겠습니까?
Vijay Dev

버퍼 번호, 파일 이름, 수정 상태, 버퍼 내 위치 및 커서 아래에있는 문자의 16 진 코드가있는 상태 표시 줄이 표시됩니다. 멋진 형식과 색상.
Tadeusz A. Kadłubowski

1

여기 내 .vimrc가 있습니다. 나는 Gvim 7.2를 사용한다

set guioptions=em
set showtabline=2
set softtabstop=2
set shiftwidth=2
set tabstop=2

" Use spaces instead of tabs
set expandtab
set autoindent

" Colors and fonts
colorscheme inkpot
set guifont=Consolas:h11:cANSI

"TAB navigation like firefox
:nmap <C-S-tab> :tabprevious<cr>
:nmap <C-tab> :tabnext<cr>
:imap <C-S-tab> <ESC>:tabprevious<cr>i
:imap <C-tab> <ESC>:tabnext<cr>i
:nmap <C-t> :tabnew<cr>
:imap <C-t> <ESC>:tabnew<cr>i
:map <C-w> :tabclose<cr>

" No Backups and line numbers
set nobackup
set number
set nuw=6

" swp files are saved to %Temp% folder
set dir=$temp
" sets the default size of gvim on open
set lines=40 columns=90

1

내 안에 무엇이 .vimrc있습니까?

ngn@macavity:~$ cat .vimrc
" This file intentionally left blank

실제 설정 파일은 ~/.vim/ :)

그리고 다른 사람들의 노력에 기생하는 것들 대부분은 vim.org편집상의 이점에 뻔뻔스럽게 적응했습니다 .


2
나는 거의 이것을 가지고 있지만 그 기능을 사용하지 않는다면 .vimrc는 "set nocompatible"을 포함해야합니까? 적어도 그것을 제거하면 여기에 많은 오류가 발생합니다!
richq 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.