2011-05-24 133 views
0

我使用vim與snipMate但我發現這個問題我想要做的vim snipMate像TextMate的

if (true) {|}; 

在TextMate中按回車鍵後..看看光標

if (true) { 
    | 
}; 

在vim後按Enter鍵..看光標

if (true) { 
|}; 

如何製作vim,比如TextMate

感謝

編輯

這是我的vimrc

filetype on     " Enable filetype detection 
filetype indent on   " Enable filetype-specific indenting 
filetype plugin on   " Enable filetype-specific plugins 

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

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

abbrev ff :! Open -a Firefox.app %:p<cr> 

abbrev gc :! Open -a Chrome.app %:p<cr> 
" Set off the other paren 
highlight MatchParen ctermbg=4 
" }}} 

"{{{Look and Feel 

" Favorite Color Scheme 

    colorscheme sunburst 

    set guioptions-=T 

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


" Highlight things that we find with the search 
set hlsearch 



" Incremental searching is sexy 
set incsearch 


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


" And so is Artificial Intellegence! 
set smartcase 


" 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 



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


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

" Who doesn't like autoindent? 
set autoindent 
set smartindent 
set tabstop=4 
set shiftwidth=4 
set expandtab 


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

set foldmethod=indent 
set foldnestmax=10 
set nofoldenable 
set foldlevel=1 

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

set cul           
hi CursorLine term=none cterm=none ctermbg=3  
set tabstop=2 
set ruler      " show the line number on the bar 
set autoread     " watch for file changes 
set backspace=indent,eol,start 
set cmdheight=2    " command line two lines high 
set undolevels=1000   " 1000 undos 
"map a change directory in desktop 
nmap ,d :cd C:\Users\Tarek\Desktop<cr>:e.<cr> 


"""""""""""""""""""""""""""""" 
" => Visual mode related 
"""""""""""""""""""""""""""""" 
" Really useful! 
" In visual mode when you press * or # to search for the current selection 
vnoremap <silent> * :call VisualSearch('f')<CR> 
vnoremap <silent> # :call VisualSearch('b')<CR> 

" When you press gv you vimgrep after the selected text 
vnoremap <silent> gv :call VisualSearch('gv')<CR> 
map <leader>g :vimgrep // **/*.<left><left><left><left><left><left><left> 


function! CmdLine(str) 
    exe "menu Foo.Bar :" . a:str 
    emenu Foo.Bar 
    unmenu Foo 
endfunction 

" From an idea by Michael Naumann 
function! VisualSearch(direction) range 
    let l:saved_reg = @" 
    execute "normal! vgvy" 

    let l:pattern = escape(@", '\\/.*$^~[]') 
    let l:pattern = substitute(l:pattern, "\n$", "", "") 

    if a:direction == 'b' 
     execute "normal ?" . l:pattern . "^M" 
    elseif a:direction == 'gv' 
     call CmdLine("vimgrep " . '/'. l:pattern . '/' . ' **/*.') 
    elseif a:direction == 'f' 
     execute "normal /" . l:pattern . "^M" 
    endif 

    let @/ = l:pattern 
    let @" = l:saved_reg 
endfunction 

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
" => Command mode related 
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
" Smart mappings on the command line 
cno $h e ~/ 
cno $d e ~/Desktop/ 
cno $j e ./ 
cno $c e <C-\>eCurrentFileDir("e")<cr> 
cno $u e ftp://[email protected]/www/ 


" $q is super useful when browsing on the command line 
cno $q <C-\>eDeleteTillSlash()<cr> 

" Bash like keys for the command line 
cnoremap <C-A>  <Home> 
cnoremap <C-E>  <End> 
cnoremap <C-K>  <C-U> 

cnoremap <C-P> <Up> 
cnoremap <C-N> <Down> 

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

"Opens file in buffer in Chrome 
abbrev ch :! @start "" /b "C:\Program Files\Google\Chrome\Application\chrome.exe" %:p 
"Opens file in buffer in Firefox 
abbrev fc :! @start "" /b "C:\Program Files\Mozilla Firefox\firefox.exe" %:p 


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

imap <C-e> <C-y>, 
imap <C-j> <C-x><C-o> 
"" set guifont=Inconsolata\ 16 
set nocp 
    if version >= 600 
     filetype plugin indent on 
    endif 
    let g:netrw_alto = 1 

" Use menu to show command-line completion (in 'full' case) 
set wildmenu 

" Set command-line completion mode: 
" - on first <Tab>, when more than one match, list all matches and complete 
"  the longest common string 
" - on second <Tab>, complete the next full match and show menu 
set wildmode=list:longest,full 

" Show the bookmarks table on startup 
let NERDTreeShowBookmarks=1 
let b:surround_indent = 1 
au BufRead,BufNewFile jquery.*.js set ft=javascript syntax=jquery 

let g:js_indent_log = 0 
+0

最後3行讓我覺得你裝載一個替代語法腳本(可能一個替代的縮進腳本),也許它會覆蓋你的.vimrc設置。還有一個重複的設置('set tabstop')有兩個不同的值,我不認爲這是一個問題,但它很髒。 – romainl 2011-05-24 05:54:18

+0

@romainl ok我修改了vimrc,但什麼也沒有發生,刪除重複並刪除3最後一行 – tito11 2011-05-24 06:34:07

+0

你用什麼語言編碼?我的php.snippets和我的javascript.snippets都有略微不同的'if'片段,但是它們都已經正確擴展了,並且光標縮進並且在它自己的一行上。如果您正在_actually_輸​​入您可能對[此q/a]()或[this one]感興趣的整個片段(http://stackoverflow.com/questions/6066372/make-vim-curly-braces-square-braces-括號幕樣的TextMate)。 – romainl 2011-05-24 11:55:22

回答

0

這不是一個SnipMate的問題,而是一個缺口問題。可能與set autoindent有關。對我而言,它可以按照你的想法工作

這裏是我的全部縮進相關設置:

" a tab is 2 spaces 
set tabstop=2 
" when hitting <BS>, pretend like a tab is removed, even  if spaces 
set softtabstop=2 
" expand tabs by default (overloadable per file type later) 
set expandtab 
" number of spaces to use for autoindenting 
set shiftwidth=2 
" use multiple of shiftwidth when indenting with '<' and '>' 
set shiftround 
" always set autoindenting on 
set autoindent 
" copy the previous indentation on autoindenting 
set copyindent 
" insert tabs on the start of a line according to 
" shiftwidth, not tabstop 
set smarttab 
+0

感謝romainl ,,我加了我的.vimrc請看看它,告訴我錯誤在哪裏 – tito11 2011-05-24 05:32:01

1

將這個變成你的.vimrc文件:

inoremap {<cr> {<CR><CR>}<Esc>-cc