あなたの.vimrcには何がありますか?[閉まっている]


157

ViとVimは本当に素晴らしいカスタマイズを可能にし、通常は.vimrcファイル内に保存されます。プログラマーの典型的な機能は、構文の強調表示、スマートインデントなどです。

.vimrcに隠されている生産的なプログラミングのための他のトリックはありますか?

特にC#の場合、リファクタリング、自動クラス、および同様の生産性マクロに主に関心があります。


11
コメントされた vim構成ファイルを投稿するようにユーザーに依頼するべきだったと思います。
innM 2009年

githubでこのことを共有してみませんか?私はgitの下に私の全体て.vimフォルダを持って、それはすべて、ここで見ることができます:github.com/lsdr/vim-folder
lsdr

1
.vimrc全体が役立つとは思いません。たくさんの人が回答に賛成した場合、あなたはただ全部を取り、それをあなたのシステムに平手打ちするつもりですか?便利なエイリアスまたは関数のリストが。(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ですか?
ヨハン

1
不思議に思いますが、jjを<Esc>にマッピングしないと、挿入モードでjを押すときに少し遅れが生じますか?
sykora 2009年

1
@sykora:はい。ただし、別の文字(jではない)を入力するとすぐに表示されます。私は同じことをしますが、代わりにjkを使用します。jkを打つ方がjjを打つよりも速いと思うからです。これが私に影響を与えたときだけ、アルファベットをタイプアウトしているので、kjの方がいいかもしれません。
David Miani、

2
@ヨハン:「3つはマジックナンバー」だから。:)実際、それはバイクシェディングだけですが、私も3つを好みます。:)
Robert Massaioli 09/09/05

4
本物の男性がgccを使っているのなら、どうしてですか?(コンパイラgccはコメントアウトされています!)
Abdulsattar Mohammed '13 / 09/13

73

これは私の.vimrcファイルにはありませんが、昨日は]pコマンドについて学びました。これは、バッファの内容を貼り付けるのと同じように貼り付けpますが、カーソルがある行に一致するようにインデントを自動的に調整します。これは、コードの移動に最適です。


これは:set paste、p、:set nopaste?
ハイパーボア

3
私の知る限り、:set pasteオプションはpコマンドに影響を与えません。これは、挿入モードで入力された(または端末から貼り付けられた)テキストにのみ影響します。いいえ、それは別の機能です。
グレッグ・ヒューギル

1
質問に答えていないので、これに賛成投票するべきではありませんが、私はそれがとても好きです;)
gorsky

53

以下を使用して、すべての一時ファイルとバックアップファイルを1か所に保存します。

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'(これは1行です。)そして私もこれについて言及する必要があります:vim.wikia.com/wiki/VimTip962
Zsolt Botykai '18

1
これにより、複数のマシンでDropbox同期ファイルを開くときにVimが文句を言うこともなくなります。
Cody Hess

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/ /\\ /同じ基本的なことを行うが、コマンドラインを無効にしない、SOの他の場所を読みました。
ダッシュトムバン

私はそれをオプションにして、このコマンドを使用して現在のファイルのディレクトリに入るのを好みます:cd%:h
staackuser2

28

私の最新の追加は、現在の行の強調表示です

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

2
より多くの色から選択する方法はありますか?
Fzs2 2010

set culとset cursorlineの違いは何ですか?
putolaruan

「set cul」を使用して、現在の行の下に線を引きます。カーソルラインの設定は、私の好みのために構文の強調表示で混乱しすぎています。
Claes Mogren 2010年

2
利用可能な色を取得するには、このスクリプト(vim.org/scripts/script.php?script_id=1349)を参照してください。多種多様になるために、vimの256色サポートをオンにする必要がある場合があります。
Brian Wigginton、

1
実際@Claes、set culset cursorlineまったく同じことを行います。
ヘラルドマーセット2011

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も欠落しています。レンについてのアイデアはありますか?
Ali

大丈夫です、私はここに本物を見つけました:dotfiles.org/~gregf/.vimrc
Ali

@pug内部サーバーエラーが発生しました。=(.
vimrcの

@Antonは、コードのフォーマットによって混乱したペーストを修正しました。今は良いはずです。また、使用する場合に.vimrcが乱雑にならないように、plugin / statusline.vimファイルに貼り付けることをお勧めします。
Gavin Gilmour、2011

@Gavin Works素晴らしい、修正とヒントをありがとう!autocmd BufEnter *.py match OverLength /\%81v.\+/以前は長い行を強調表示するために.vimrcのようなものを使用していましたが、あなたのアプローチはそれほど邪魔にならないかもしれません。また、ステータスバーの構文チェック結果は、非常に優れた機能です。
アントンストロゴノフ2011

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>

fyi、 'smartindent'は廃止され(cindentがそれを置き換えます)、ファイルタイプインデントを使用しても何もせず、役に立たない場合にのみアクティブになります
graywh

13

時には、最も単純なものが最も価値があります。私の.vimrcの2つの行は完全に不可欠です。

ノア; :
ノア;

私のnore \ ;代わりに使用,したので代わりに使用しました<leader>
aehlke

3
しかし、それは何をしますか?:)
HenrikBjørnskov10年

6
セミコロンはほとんど使用されないコマンドです。コロンは非常に一般的なコマンドであり、コマンドラインモードを開始するために使用されます。一方をもう一方に再マッピングすると、Shiftキーを押すことなくコマンドラインモードに入ることができるため、小指の筋肉を節約できます。
ウィリアムパーセル2010年

7
フランス語のキーボードでは、「、」、「;」を書くために「Shift」を押す必要はありません。そして ':' ...しかし、 '\'、 '['と ']'は本当の痛みです。
Olivier Pons 2010

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 / bin / pythonをSConstructファイルに追加すると、Vimの組み込みファイルタイプ検出マジックがトリガーされます
richq

折り返された行で期待どおりに移動j/ k移動するより良い方法はありますか?g毎回押したくない。
2012年

8

私は世界で最も進んだvim'erではありませんが、ここに私が選んだいくつかがあります

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回押すと、コマンドモードに移動します。私は2つのiが連続している単語や変数に出くわしたことがありません。このようにして、指をホームの列から離したり、複数のキーを押したりして切り替える必要がありません。


3
iiの興味深いマッピング...非常に興味深い。それはかなりクールなアイデアですが、「バニラ」vimを使用する能力に深刻な影響を与えるのではないかと心配していますが。
thomasrutter 2009

同じことを;;で行ってきました 長い間、何の問題も発生していません。バニラvi / vimの使用を余儀なくされたとき、私はすぐに愚かな[esc]キーを使用することを覚えています(これが私が長年vimを嫌っていた理由の1つでした!)。私にとって、この設定は絶対に不可欠です。それなしで喜んでvi(m)を使用することはありません。<br>そして、「;;」の代わりに「ii」を使用するという考え方が好きです。より直感的で、ほとんどトグルのようです。
iconoclast 2010年

別の可能性は、Ctrl-Cを使用して挿入モードを終了することです。Escapeとほぼ同じです(私が気になる唯一の違いは、ビジュアルブロックのラインを操作するときです)。
a3nm

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

fyi、 '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 2010年

3
@Svante、通常は同意しますが、自分のコマンドにもこれが含まれている場合を除き、頻繁に保存するか、頻繁に保存/終了する傾向があります。多くの場合、私の小指は、シフトキーを離すときにほんの一瞬で遅すぎ、BAMのいずれかが大文字になってしまい、煩わしいです!
ファラン

1
viは、コロン(:)に指定されたキーがあったADM3A端末に書かれているため、Shiftキーを押す必要はありませんでした。スペースバーのように、通常/ビジュアルモードでは通常使用されないキーを再マッピングする場合、この問題はそれほど発生しません。nnoremap <Space>:およびvnomap <Space>:en.wikipedia.org/wiki/File
KB_Terminal_ADM3A.svg

これは、保存/終了コマンドでは好きですが、言葉では好きではありません。セーフティネットがないときにミスをすると、Vimがミスを教えてくれます。オートコレクトがないときに「teh」と綴ると、気付かず、無学に見えるでしょう。
ロバートマーティン

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はそれほど興味深いものではありませんが、誰も言及していないため、デフォルトのマッピングに加えて、ワークフローを強化する2つの最も重要なマッピングを共有する必要があると感じました。

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

真剣に、バッファを切り替えることです非常に頻繁に行うためのもの。ウィンドウズ、確かに、すべてが画面にうまく収まりません。

エラー(quickfixを参照)とgrepの結果をすばやく参照するための同様のマップのセット:

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

シンプルで簡単、効率的です。


Vimはタブをサポートしているので、バッファをあまり切り替えていません。キーボードの「戻る」と「進む」の追加キーをタブナビゲーションコマンドにマッピングしています。
Don Reba

@Don Reba、ご存知のとおり、タブはバッファの機能の一部を複製するだけです。したがって、バッファとタブのどちらを「使用」しても、それほど大きな違いはありません。純粋主義者は、タブは領域を分離するためのタスクを整理するためのものであり、それ以上のものではないと言います。私が言うすべてのことは、バッファにはすべての便利さがあること、そしてタブを使用したままにし、より高い抽象化が必要になった場合に別のものに予約することです:)
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ファイルはすでに生成しています。

もしif( "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を使用しているので、これらの一部は他のプラットフォームでのデフォルトの方が優れている可能性がありますが、それは関係ありません。

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

1
softtabstop代わりにそれを調べて使用したい場合がありtabstopます。tabstopデフォルト値の8のままにしておくと、他の人がタブで作成したファイルを読み取るときに役立ちます。
グレッグヒューギル

6
OSXはタブと何をしているのですか?
aehlke 2010

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>

1回のキープレスで検索の強調表示を無効にします。

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>

そして、もう一度ハッシュロケットをタイプすることを考えないでください。はい、Ruby 1.9では必要ないことはわかっています。しかし、気にしないでください。

私の完全なvimrcがここにあります


これは素晴らしいアイデアですが、私は唯一のRubyファイルのためにそれをマッピングすることをお勧め:autocmd FileType ruby imap <C-l> <Space>=><Space>
csexton

Rubyを知らないEmacsの人にとってそれが何をするのか説明してくれませんか?
トーマス

これは、Vimの挿入モードにControl-Lホットキーを追加して、スペースを含むハッシュロケット(=>)を自動的に入力します。hashrocketは、Rubyのハッシュに対するキー値演算子です。
dpogg1

2

まあ、あなたは私の設定を清掃する必要があります自分でます。楽しんで。ほとんどの場合、マッピングとランダムな構文に関連するもの、折りたたみ設定といくつかのプラグイン設定、texコンパイルパーサーなどを含む、私の希望する設定です。

ところで、私が非常に便利だと思ったのは、「カーソルの下の単語を強調表示する」です。

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

唯一の注意ctermtermfg私が使用していないので、使用されていますgvim。それを機能させたい場合は、それぞれとにgvim置き換えてください。guiguifg


複数のウィンドウを開いて動作させるにはどうすればよいですか?最初に起動されたメインのバッファでのみ動作するようです。
ohnoes 2009年

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進値、および標準の行、列、%を使用):

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 ++編集用に定義したftpluginsが見つかります。 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

私は高校の決勝戦を学びながら退屈しました。


これが何をするのか説明してもらえますか?
ビジェイDevの

ステータス行には、バッファ番号、ファイル名、変更ステータス、バッファ内の位置、カーソル下の文字の16進コードが表示されます。うまくフォーマットされ、色付けされています。
Tadeusz A.Kadłubowski09年

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 2009年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.