.Vimrc dosyasında neler var? [kapalı]


157

Vi ve Vim, genellikle bir .vimrcdosyanın içinde saklanan gerçekten harika özelleştirmelere izin verir . Bir programcı için tipik özellikler sözdizimi vurgulama, akıllı girinti ve benzeri olacaktır.

.Vimrc'nizde gizli olan üretken programlama için başka hileleriniz var mı?

Çoğunlukla refactorings, otomobil sınıfları ve benzer verimlilik makroları, özellikle C # için ilgileniyorum.


11
Bence insanlardan yorum yapılmış vim config dosyalarını göndermelerini istemelisiniz .
innaM

Neden bunları github'da paylaşmıyorsunuz? Git altında bütün .vim klasörüm
lsdr

1
Tüm .vimrcs'lerin yararlı olduğunu düşünmüyorum; bir grup insan bir cevabı iptal ederse, her şeyi alıp sisteminize tokatlayacak mısınız? Parçacıklar, yararlı takma adların veya işlevlerin bir listesinin tamamından çok daha iyi olduğu gibi (bash | z) rc dosyalarından çok daha kullanışlıdır.
Xiong Chiamiov

Yanıtlar:


104

Siz istediniz :-)

"{{{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
Ama neden 3, shiftwidth = 3, softtabstop = 3 ... belki 2 veya 4 ama neden 3?
Johan

1
Sadece merak ediyorum, ancak jj'yi <Esc> ile eşlemek, ekleme modunda j'ye bastığınızda size hafif bir gecikme vermiyor mu?
sykora

1
@sykora: evet, ancak başka bir karakter (j değil) yazar yazmaz görünecektir. Aynı şeyi yapıyorum, ama jk yerine, jk'ye vurmanın jj'ye vurmaktan daha hızlı olduğunu düşünüyorum. Sadece bu beni etkiledi kez alfabe yazarak, belki kj daha iyi olursun.
David Miani

2
@Johan: çünkü 'üçü sihirli bir sayı'. :) Aslında, bu sadece bisiklet atma ama ben de üç tercih ederim. :)
Robert Massaioli

4
Eğer gerçek erkekler gcc kullanıyorsa, neden yapmıyorsunuz? (derleyici gcc yorumlandı!)
Abdulsattar Mohammed

73

Bu benim .vimrc dosyamda değil, ama dün ]pkomutu öğrendim . Bu, arabellek içeriğini olduğu gibi yapıştırır p, ancak girintiyi otomatik olarak imlecin üzerinde bulunduğu satıra göre ayarlar! Bu, kodu hareket ettirmek için mükemmeldir.


Şuna benzer yani: set paste, p,: nopaste?
hyperboreean

3
Bildiğim kadarıyla: set paste seçeneğinin p komutu üzerinde herhangi bir etkisi yoktur, yalnızca ekleme modunda yazılan (veya terminalden yapıştırılan) metni etkiler. Yani hayır, bu farklı bir özellik.
Greg Hewgill

1
Bunun için upvoting olmamalı, çünkü soruyu cevaplamıyor, ama çok beğendim;)
gorsky

53

Tüm geçici ve yedek dosyaları tek bir yerde tutmak için aşağıdakileri kullanıyorum:

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

Her yerde karmaşık çalışma dizinlerini kaydeder.

Sen vim olacak, öncelikle bu dizinleri oluşturmak zorunda kalacak değil sizin için onları oluşturun.


2
Bu dizinleri kendiniz oluşturmanız gerekeceğinden bahsetmeliyim, vim bunu sizin için yapmayacaktır.
Harley Holcombe

Bu, birden fazla özdeş dosyayı doğru şekilde işler mi? (örneğin, aynı kodun birkaç farklı dalını düzenliyorsanız)
yungchin

Hayır, bu aynı ada sahip eski yedekleme dosyalarının üzerine yazacaktır. Eğer bu konuda bir yol varsa, bana bildirin.
Harley Holcombe

3
Şunu deneyin: au BufWritePre * let & bex = '-'. strftime ("% Y% m% d-% H% M% S"). '.vimbackup' (Bu bir satır.) Ve şunu da belirtmeliyim: vim.wikia.com/wiki/VimTip962
Zsolt Botykai

1
Bu aynı zamanda Vim'in Dropbox ile senkronize edilen dosyaları birden fazla makinede açarken şikayet etmesini engeller.
Cody Hess

31

Yukarıda yazan birisinin (viz. Frew) şu satırı vardı:

"Otomatik olarak dosyanın bulunduğu dizine cd:"

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

Aynı şeyin yerleşik bir ortamda gerçekleştirilebileceğini keşfedinceye kadar kendim gibi bir şey yapıyordum:

set autochdir

Sanırım bana birkaç farklı kez benzer bir şey oldu. Vim o kadar çok farklı yerleşik ayar ve seçeneğe sahiptir ki, kendi başınıza oynatmak, dahili yol için dokümanları aramaktan daha hızlı ve daha kolaydır.


büyük bulmak! i inşa şeyler kullanmayı seviyorum ^ _ ^. artı bir | dosya adında.
Javed Ahamed

2
autochdir, (komut satırında verilen bir dosyayı yüklemeden önce dizini değiştirme) asla çalışamayacağım bazı sıkıntılara sahiptir ve burada SO'da autocmd BufEnter * silent! lcd %:p:h:gs/ /\\ /aynı temel şeyi yapan ancak komut satırını sakatlamayan başka bir yerde okudum .
dash-tom-bang

İsteğe bağlı yapmayı ve geçerli dosyanın dizinini girmek için bu komutu kullanmayı tercih ederim: cd%: h
staackuser2

28

Son eklemem, mevcut satırı vurgulamak için

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

2
daha fazla renk arasından seçim yapmanın bir yolu var mı?
Fzs2

Set cul ve set cursorline arasındaki fark nedir?
putolaruan

Şu anki satırımın altına bir çizgi almak için "set cul" kullanıyorum. İmleç çizgisi ayarı benim zevkim için sözdizimi vurgulama ile çok fazla karışıklık.
Claes Mogren

2
Kullanılabilir renkleri elde etmek için bu komut dosyasına ( vim.org/scripts/script.php?script_id=1349 ) bakın . Daha geniş bir çeşitlilik elde etmek için vim için 256 renk desteğini açmanız gerekebilir.
Brian Wigginton

1
@Claes Aslında set culve set cursorlineaynı şeyi yapın.
Gerardo Marset

24

Güncelleme 2012 : Şu anda gerçekten kaçırdığım birkaç özelliği eksik olsa da, eski durum satırı betiğimin yerini alan vim-powerline'a bakmanızı gerçekten tavsiye ederim .


Ben de durumsatırı şeyler söyleyebilirim benim vimrc (vimrc yazarlardan yırtık muhtemelen çok en ilginç / yararlı oldu burada ve blog yazısı tekabül burada ).

Ekran görüntüsü:

durum satırı http://img34.imageshack.us/img34/849/statusline.png

Kod:

"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

Diğer şeylerin yanı sıra, her zamanki standart dosya bilgilerinin durum satırı hakkında bilgi verir, ancak aşağıdakiler için uyarılar içerir: yapıştırma, karışık girinti, sondaki boşluk vb.

Dahası gibi birleştirerek, ekran gösterildiği syntastic herhangi sözdizimi hataları seçtiğiniz dil paketlenmiş ilişkili sözdizimi denetimi vardır varsayarak (üzerine vurgulanan izin verir.


Yukarıdakilerle ilgili sorunlar yaşıyorum. LongLines () içinde eksik bir koşul var. Ben "eşik" iken değiştirdim ancak len de bu koşul içinde denilen eksik. Len hakkında bir fikrin var mı?
Ali

Tamam, gerçek şeyi burada buldum: dotfiles.org/~gregf/.vimrc
Ali

@pug Şimdi dahili sunucu hatası var. = (.Vimrc'nin ilgili kısmını bir yere verebilir veya lütfen bir yere yapıştırabilir misiniz?
Anton Strogonoff

@Anton, kod biçimlendirmesiyle bozulan macunu düzeltti. Şimdi iyi olmalı. Ayrıca, eğer kullanacaksanız .vimrc'nizi karıştırmasını önlemek için bir plugin / statusline.vim dosyasına yapıştırmanızı tavsiye ederim.
Gavin Gilmour

@Gavin Mükemmel çalışıyor, düzeltme ve ipucu için teşekkür ederiz! Eskiden autocmd BufEnter *.py match OverLength /\%81v.\+/.vimrc'de uzun satırları vurgulamak için bir şeyim vardı , ama yaklaşımınız daha az dikkat dağıtıcı olabilir. Ayrıca, durum çubuğunda sözdizimi kontrol sonucu ciddi bir şeydir!
Anton Strogonoff

19

Mini versiyonum:

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

Çeşitli yerlerden toplanan büyük versiyon:

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>

fyi, 'smartindent' artık kullanılmıyor (cindent onun yerine geçiyor) ve filetype girintisini kullandığınızda hiçbir şey yapmıyor ve sadece yararlı olmadığında aktif olacak
graywh

13

Bazen en basit şeyler en değerlidir. Benim .vimrc içinde tamamen vazgeçilmez olan 2 satır:

nore; :
nore;

Bunun nore \ ;yerine ,benim olarak kullandığımdan beri yaptım<leader>
aehlke

3
Ama ne yapıyor? :)
Henrik Bjørnskov

6
yarı kolon nadiren kullanılan bir komuttur. iki nokta üst üste komut satırı moduna girmek için kullanılan son derece yaygın bir komuttur. Birini diğerine yeniden eşleştirmek, shift tuşuna basmadan komut satırı moduna girmenizi sağlar, böylece kasları küçük parmaklarınızda kurtarır.
William Pursell

7
Fransızca klavyelerde ',', ';' yazmak için 'kaydırmaya' ihtiyacınız yoktur. ve ':' ... Ama '\', '[' ve ']' gerçek bir acıdır.
Olivier Pons

12

Çeşitli. ayarları:

  1. Can sıkıcı hata çanlarını kapatın:

    set noerrorbells
    set visualbell
    set t_vb=
    
  2. Sarılmış satırlarla imlecin beklendiği gibi hareket etmesini sağlayın:

    inoremap <Down> <C-o>gj
    inoremap <Up> <C-o>gk
    
  3. Arama ctags"etiketleri" dizinine kadar dosya, tek bulunana kadar:

    set tags=tags;/
    
  4. SCyt dosyalarını Python sözdizimi ile görüntüleme:

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

SConstruct dosyasına #! / Usr / bin / python eklerseniz, Vim'in yerleşik dosya türü algılama sihri
tetiklenir

Sarılı çizgilerle beklendiği gibi yapmanın j/ ktaşımanın daha iyi bir yolu var mı ? gHer seferinde baskı yapmak istemiyorum .
puk

8

Dünyadaki en gelişmiş vim'er değilim, ama aldığım birkaç tane

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>

Tab-autocomplete öğesini bir kelime veya gerçek bir sekme (4 boşluk) yerleştirmek isteyip istemediğinizi belirler.

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

Dosyanın sonuna kadar tüm boşlukları buradan kaldırın. Nedense bunu çok faydalı buluyorum.

set nu! 
set nobackup

Satır numaralarını göster ve bu can sıkıcı yedek dosyaları oluşturmayın. Zaten eski bir yedeklemeden hiçbir şey geri yüklemedim.

imap ii <C-[>

Ekleme sırasında, komut moduna gitmek için i tuşuna iki kez basın. Asla üst üste 2 i olan bir kelime veya değişkenle karşılaşmadım ve bu şekilde parmaklarımın ev satırından ayrılması veya ileri ve geri geçiş yapmak için birden fazla tuşa basması gerekmiyor.


3
İi ... ilginç haritalama çok ilginç. Oldukça havalı bir fikir - yine de, bir 'vanilya' vim kullanma yeteneğimi ciddi şekilde etkileyeceğinden endişelenmem gerekirdi.
thomasrutter

Ben de aynı şeyi yapıyorum ;; uzun zamandır ve herhangi bir sorunla karşılaşmadım. Vanilya vi / vim kullanmak zorunda kaldığımda hemen aptal anahtarı kullanmayı hatırlıyorum. Benim için bu ayar kesinlikle şart. Vi (m) 'yi asla onsuz kullanmam. <br> Ve ';;' yerine 'ii' kullanma fikrini seviyorum: daha sezgisel, neredeyse bir geçiş gibi.
iconoclast

Diğer bir olasılık kesici uç modundan çıkmak için Ctrl-C kullanmaktır. Neredeyse Escape ile aynı şeyi yapar (beni rahatsız eden tek fark görsel bir bloğun çizgileri üzerinde çalışırken).
a3nm

8

Vimrc, readline-esque (emacs) tuş bağlamaları ile yorumladı

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

fyi, 'smartindent' artık kullanılmıyor (cindent bunun yerine geçiyor) ve filetype girintisini kullandığınızda hiçbir şey yapmıyor ve yalnızca yararlı olmadığında etkin olacak
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

Yaygın yazım hataları için yapılan bazı düzeltmeler bana şaşırtıcı bir zaman kazandırdı:

: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
Bunu sevmiyorum - sadece hataları eğitiyor.
Svante

Kelimeler için beğendim: ve, orada, ama kaydet ve çık için değil
sixtyfootersdude

3
@Svante, normalde katılıyorum, ancak bunu komutumda da hariç, sık sık kaydetme veya sık sık kaydetme / bırakma eğilimindeyim. Çoğunlukla benim serçe, shift tuşunu kaldırırken çok yavaş bir saniyenin sadece bir kısmı ve BAM biri ya da diğeri büyük harfle, sinir bozucu!
Pharaun

1
vi, iki nokta üst üste (:) için belirlenmiş bir tuşa sahip olan ADM3A terminaline ve üzerine yazılmıştır, bu nedenle shift tuşuna basmanız gerekmez. Normalde / normal modda, boşluk çubuğu gibi normalde kullanılmayan bir anahtarı yeniden eşlerseniz, bu sorunla o kadar fazla karşılaşmazsınız. nnoremap <Space>: ve vnomap <Space>: en.wikipedia.org/wiki/File:KB_Terminal_ADM3A.svg
aoeu 20:10

Bunu kaydet / çık komutları için beğendim, ama kelimeler için değil. Güvenlik ağı orada olmadığında hata yaparsanız, Vim size hatanızı söyleyecektir. Otomatik düzeltme orada olmadığında "teh" olarak hecelerseniz, fark etmezsiniz ve eğitimsiz görünürsünüz.
Robert Martin

5

3200 .vimrc satırlarımın sadece ilginç ihtiyaçlarım için olduğunu ve burada listelemek için oldukça sönük olacağını fark etmedim. Ama belki de bu yüzden Vim çok faydalı ...

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 satırım .vimrco kadar ilginç değil, ama kimse bundan bahsetmediği için, varsayılan eşlemelerin yanı sıra iş akışımı geliştiren en önemli iki eşlemeyi paylaşmam gerektiğini hissettim:

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

Ciddi, tampon anahtarlama olduğunu çok sık yapılacak şey. Windows, elbette, ama her şey ekrana çok iyi uymuyor.

Hataların hızlıca taranması (hızlı düzeltmeye bakın) ve grep sonuçlarının benzer harita seti:

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

Basit, zahmetsiz ve verimli.


Vim sekme desteği aldığı için arabellekler arasında çok fazla geçiş yapmadım. Klavyemdeki "geri" ve "ileri" ekstra tuşları, sekme gezinme komutlarıyla eşleştirildi.
Don Reba

@ Reba, bilirsiniz, sekmeler sadece arabelleklerin bazı işlevlerini çoğaltır. Yani arabellekleri veya sekmeleri "kullanmak" için pek bir fark yoktur. Puristler, sekmelerin bölgeleri ayırmak ve daha fazlası için görevleri düzenlemek için tasarlandığını söyleyecektir. Tüm ben diyelim ki bu tamponlar tüm kolaylık var ve bir şey daha yüksek soyutlama ihtiyacı gelmelidir başka bir şey onlara ayıracak, sekmeleri kullanarak bırakmış olmasıdır :).
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 içinden cscope kullanıyorum (çoklu tamponları büyük ölçüde kullanıyorum). Komutların çoğunu başlatmak için control-K kullanıyorum (hatırladığım gibi ctags'den çalındı). Ayrıca, zaten .cscope.out dosyasını oluşturdum.

varsa ("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>

endif



3

OS X kullanıyorum, bu yüzden bunların bazıları diğer platformlarda daha iyi varsayılanlara sahip olabilir, ancak:

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

1
Bunu softtabstopyerine aramak ve kullanmak isteyebilirsiniz tabstop. tabstopVarsayılan değer olan 8'de bırakmak , başkalarının sekmelerle oluşturduğu dosyaları okurken yardımcı olacaktır.
Greg Hewgill

6
OSX'in sekmelerle ne ilgisi var?
aehlke

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

= normal paragrafları yeniden biçimlendirmek içindir. + teklif edilen e-postalardaki paragrafları yeniden biçimlendirmek içindir. showmatch, yakın bir parantez veya parantez yazdığımda eşleşen parantez / parantezin yanıp sönmesi içindir.


3

Dizin ağacında kullanılabilir ilk 'etiketler' dosyasını kullanın:

:set tags=tags;/

Sol ve sağ, tamponları değiştirmek içindir, imleci hareket ettirmez:

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

Tek bir tuşa basarak arama vurgulamayı devre dışı bırakın:

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>

Yapılandırmanızda olanları çok seviyorum. Her satıra birden çok set if has("gui_running")ve havalı haritalar. Yapılandırmanızın çoğunu benimkine kopyaladım. TEŞEKKÜRLER!
Justin Force

3

Bunu vimrc'nize koyun:

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

ve bir daha asla bir hashrocket yazmayı düşünmeyin. Evet, Ruby 1.9'da gerek olmadığını biliyorum. Ama boşver.

Tam vimrc burada .


Bu harika bir fikir, ama sadece yakut dosyaları için eşlemenizi öneririm:autocmd FileType ruby imap <C-l> <Space>=><Space>
csexton

Ruby'yi tanımayan bir Emacs kişisi için bunun ne yaptığını açıklayabilir misiniz?
Thomas

Bu, boşluklu bir hashrocket (=>) yazmak için Vim'in ekleme moduna bir Control-L kısayol tuşu ekler. Hashrocket, Ruby'nin karmalar için anahtar / değer operatörüdür.
dpogg1

2

Yapılandırmalarımı kendiniz temizlemeniz gerekecek . İyi eğlenceler. Çoğunlukla bu benim tercih ettiğim kurulum, eşlemeler ve rastgele sözdizimi ile ilgili şeyler, katlama kurulumu ve bazı eklenti yapılandırması, bir tex-derleme ayrıştırıcısı vb.

BTW, son derece yararlı bulduğum bir şey "imleç altındaki sözcüğü vurgula":

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

Sadece Not ctermve termfgben kullanmıyorum çünkü kullanılmaktadır gvim. Eğer çalışmak istiyorsanız gvimbunları sırasıyla guive guifgile değiştirin.


Birden fazla pencere açıldığında nasıl çalışır? Sadece ilk olarak başlatılan ana tamponla çalışıyor gibi görünüyor.
ohnoes

2

.Vimrc'mi genel olarak olabildiğince kullanışlı tutmaya çalıştım .

İçinde kullanışlı bir numara, .gpg dosyalarının güvenli bir şekilde düzenlenmesi için bir işleyici var:

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) Bir durum çizgisini seviyorum (dosya adı, ascii değeri (ondalık), onaltılık değer ve standart satırlar, sütunlar ve% ile):

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) Ayrıca bölünmüş pencereler için eşlemeleri seviyorum.

" <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 dosyamda çok fazla yok (850 satır olsa bile). Çoğunlukla ayarlar ve eklentilere ayıklamak için çok tembel olduğum birkaç yaygın ve basit eşleme.

"Auto-classes" ile "template-files" demek istiyorsanız, bir template-expander eklentisi kullanıyorum - aynı sitede, C & C ++ düzenleme için tanımladığım ftplugins'leri bulacaksınız, bazıları C # Sanırım.

Yeniden düzenleme yönüyle ilgili olarak, http://vim.wikia.com adresinde bu konuya adanmış bir ipucu vardır ; IIRC örnek kod C # içindir. Bana hala çok fazla çalışma gerektiren bir yeniden düzenleme eklentisine ilham verdi (aslında yeniden düzenlenmesi gerekiyor).

Vim posta listesinin arşivlerine, özellikle vimi etkili bir IDE olarak kullanma konusuna göz atmalısınız. Şuna bir göz atmayı unutmayın: make, tags, ...

HTH,


2

.Vimrc dosyam (diğer faydalı şeylerin yanı sıra) aşağıdaki satırı içerir:

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

Lise finallerimi öğrenirken sıkıldım.


bunun ne yaptığını açıklar mısınız?
Vijay Dev

Tampon numarası, dosya adı, değişiklik durumu, tampon içindeki konum ve imlecin altındaki karakterin onaltılık kodunu içeren bir durum satırı gösterir. Güzel biçimlendirilmiş ve renkli.
Tadeusz A. Kadłubowski

1

İşte benim .vimrc. Gvim 7.2 kullanıyorum

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

İçimde ne var .vimrc?

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

Gerçek yapılandırma dosyaları ~/.vim/ :)

Ve diğer şeylerin çoğu, vim.orgdüzenleme avantajımdan açıkça uyarlanan diğer insanların çabalarında parazit oluyor .


2
Neredeyse bu var ama bu özellikleri kullanırsanız .vimrc "uyumsuz set" içermesi gerekir değil mi? En azından onu kaldırmak burada bir sürü hataya neden oluyor!
richq
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.