Что находится в вашем .vimrc? [закрыто]

157

Vi и Vim обеспечивают действительно потрясающую настройку, обычно хранящуюся в .vimrcфайле. Типичными особенностями для программиста могут быть подсветка синтаксиса, интеллектуальные отступы и так далее.

Какие еще уловки для продуктивного программирования у вас есть, скрытые в вашем .vimrc?

В основном меня интересуют рефакторинги, автоклассы и подобные макросы производительности, особенно для C #.

Кто - то
источник
11
Я думаю, вы должны были попросить людей опубликовать свои прокомментированные файлы конфигурации vim.
InnaM
Почему бы не поделиться этими вещами на github? У меня есть вся папка .vim под git, и все это можно увидеть здесь: github.com/lsdr/vim-folder
lsdr
1
Я не думаю, что все .vimrcs полезны; если группа людей проголосует за ответ, вы просто возьмете все это и добавите в свою систему? Фрагменты намного полезнее, так как список полезных псевдонимов или функций намного лучше, чем целые. (Bash | z) rc файлы.
Xiong Chiamiov

Ответы:

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
Frew
источник
78
Но почему 3, установите shiftwidth = 3, установите softtabstop = 3 ... возможно 2 или 4, но почему 3?
Йохан
1
Просто интересно, но разве сопоставление jj с <Esc> не даст вам небольшую задержку при нажатии j в режиме вставки?
sykora
1
@sykora: да, но как только вы наберете другой символ (это не j), он появится. Я делаю то же самое, но вместо этого с jk, так как я думаю, что удар по jk быстрее, чем удар по jj. Только раз это повлияло на меня, печатая алфавит, так что, может быть, ты будешь лучше.
Дэвид Миани
2
@Johan: потому что «три магическое число». :) На самом деле, это просто байкшединг, но я тоже предпочитаю три. :)
Роберт Массайоли
4
Если настоящие мужчины используют gcc, почему бы и нет? (компилятор gcc закомментирован!)
Абдулсаттар Мухаммед
73

Этого нет в моем файле .vimrc, но вчера я узнал о ]pкоманде. Это вставляет содержимое буфера точно так pже, как и делает, но автоматически подстраивает отступ, чтобы соответствовать строке, на которой находится курсор! Это отлично подходит для перемещения кода.

Грег Хьюгилл
источник
Вы имеете в виду, что это похоже на: set paste, p,: set nopaste?
Гиперборея
3
Насколько я знаю, опция: set paste не влияет на команду p, она влияет только на текст, набранный (или вставленный через терминал) в режиме вставки. Так что нет, это другая особенность.
Грег Хьюгилл
1
Не стоит за это голосовать, потому что он не отвечает на вопрос, но мне это очень нравится;)
gorsky 22.10.10
53

Я использую следующее, чтобы хранить все временные и резервные файлы в одном месте:

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

Сохраняет беспорядочные рабочие каталоги повсюду.

Сначала вам нужно будет создать эти каталоги, vim не создаст их для вас.

Harley Holcombe
источник
2
Я должен отметить, что вам придется создавать эти каталоги самостоятельно, vim не сделает это за вас.
Харли Холкомб
Правильно ли обрабатывает несколько одинаковых файлов? (например, если вы редактируете несколько разных веток одного и того же кода)
yungchin
Нет, это заменит старые резервные файлы с тем же именем. Если у кого-то есть способ обойти это, дайте мне знать.
Харли Холкомб
3
Попробуйте это: au BufWritePre * let & bex = '-'. strftime («% Y% m% d-% H% M% S»). '.vimbackup' (это одна строка.) И я должен также упомянуть об этом: vim.wikia.com/wiki/VimTip962
Жолт Ботыкай
1
Это также удерживает Vim от жалоб при открытии синхронизированных файлов Dropbox на нескольких компьютерах.
Коди Хесс
31

У кого-то (а именно, Фрю), который писал выше, была такая строка:

Msgstr "Автоматически перейдите в каталог, в котором находится файл:"

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

Я делал что-то подобное сам, пока не обнаружил, что то же самое можно сделать с помощью встроенной настройки:

set autochdir

Я думаю, что подобное случилось со мной несколько раз. Vim имеет так много различных встроенных настроек и опций, что иногда быстрее и проще свернуть свои собственные, чем искать в документации встроенный способ сделать это.

Герберт Ситц
источник
отличная находка! мне больше нравится использовать встроенные вещи ^ _ ^. плюс это не подведет, если есть | в имени файла.
Джавед Ахамед
2
У autochdir есть некоторые неудобства, которые я никогда не смог бы обойти (смена каталога перед загрузкой файла, указанного в командной строке), и я читал в другом месте здесь о SO, autocmd BufEnter * silent! lcd %:p:h:gs/ /\\ /который делает то же самое, но не наносит вред командной строке.
дэш-том-бэнг
Я предпочитаю сделать его необязательным и использовать эту команду для входа в каталог текущего файла: cd%: h
staackuser2
28

Мое последнее добавление для выделения текущей строки

set cul                                           # highlight current line
hi CursorLine term=none cterm=none ctermbg=3      # adjust color
Мартин
источник
2
Есть ли способ выбрать из нескольких цветов?
Fzs2
В чем разница между set cul и set cursorline?
путоляруан
Я просто использую "set cul", чтобы получить строку под моей текущей строкой. На мой вкус настройка курсора слишком сильно мешает подсветке синтаксиса.
Клас Могрен
2
Обратитесь к этому сценарию ( vim.org/scripts/script.php?script_id=1349 ), чтобы получить доступные цвета. Может потребоваться включить поддержку 256 цветов для vim, чтобы получить более широкий выбор.
Брайан Виггинтон
1
@ Клейс На самом деле, set culи set cursorlineделать то же самое.
Херардо Марсет
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

Помимо прочего, он информирует о статусной строке обычной стандартной информации о файле, но также включает в себя дополнительные вещи, такие как предупреждения для: установка вставки, смешанный отступ, конечный пробел и т. Д. Очень полезно, если вы особенно разбираетесь в форматировании кода.

Кроме того, и, как показано на скриншоте, объединение его с синтаксическим позволяет высвечивать любые синтаксические ошибки (при условии, что у вашего языка выбора есть связанная программа проверки синтаксиса).

Гэвин Гилмор
источник
У меня проблемы с вышесказанным. В LongLines () отсутствует условное выражение. Я изменил его на «пока я <порог», однако len также отсутствует, что вызывается внутри этого условия. Есть идеи о Лен?
Али
Все в порядке, я нашел реальную вещь здесь: dotfiles.org/~gregf/.vimrc
Али
@pug Внутренняя ошибка сервера там сейчас. = (Можете ли вы дать подсказку или вставить где-нибудь соответствующую часть .vimrc, пожалуйста?
Антон Строгонов
@Anton исправил вставку, которая была испорчена форматированием кода. Должно быть хорошо сейчас. Я также рекомендую поместить его в файл plugin / statusline.vim, чтобы он не загромождал ваш .vimrc, если вы собираетесь его использовать.
Гэвин Гилмор
@ Гавин Работает отлично, спасибо за исправление и за подсказку! Раньше у меня было что-то вроде autocmd BufEnter *.py match OverLength /\%81v.\+/.vimrc для выделения длинных строк, но ваш подход может быть менее отвлекающим. Кроме того, результат проверки синтаксиса в строке состояния - это очень крутая вещь!
Антон Строгонов
19

Моя мини версия:

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

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

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

Большая версия, собранная из разных мест:

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

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

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

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

" mappings
" toggle list mode
nmap <LocalLeader>tl :set list!<cr>
" toggle paste mode
nmap <LocalLeader>pp :set paste!<cr>
Адам Гиббинс
источник
Кстати, «smartindent» устарел (cindent заменяет его) и ничего не делает, когда вы используете отступ для типов файлов, и будет активен только тогда, когда это бесполезно
Graywh
13

Иногда самые простые вещи являются наиболее ценными. 2 строки в моем .vimrc, которые абсолютно необходимы:

нор; :
нор,
Уильям Перселл
источник
Я сделал nore \ ;вместо этого, так как я использую в ,качестве моего<leader>
aehlke
3
Но что это делает? :)
Хенрик Бьёрнсков
6
Точка с запятой является редко используемой командой. двоеточие - чрезвычайно распространенная команда, используемая для входа в режим командной строки. Преобразование одного в другое позволяет вам войти в режим командной строки, не нажимая клавишу Shift, тем самым сохраняя мышцы в ваших мизинцах.
Уильям Перселл
7
На французских клавиатурах вам не нужно «shift», чтобы написать «,», «;» и ':' ... Но '\', '[' и ']' - настоящая боль.
Оливье Понс
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. Отображение файлов SCons с синтаксисом Python:

    autocmd BufReadPre,BufNewFile SConstruct set filetype=python
    autocmd BufReadPre,BufNewFile SConscript set filetype=python
    
Алекс Б
источник
Добавьте #! / Usr / bin / python в файл SConstruct, это вызовет встроенную в Vim магию обнаружения типов файлов
richq
Есть ли лучший способ сделать j/ kпереместить, как и ожидалось, с обернутыми линиями? Я не хочу нажимать gкаждый раз.
Пук
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, чтобы перейти в командный режим. Я никогда не встречал слово или переменную с двумя я подряд, и таким образом мне не нужно, чтобы мои пальцы покидали домашний ряд или нажимали несколько клавиш, чтобы переключаться назад и вперед.

Whaledawg
источник
3
Интересное отображение II ... очень интересно. Это довольно крутая идея - хотя я бы опасался, что это сильно повлияет на мою способность использовать «ванильный» vim.
Томасруттер
Я делал то же самое с ;; в течение долгого времени, и не сталкивался с какими-либо проблемами. Когда меня заставили использовать vanilla vi / vim, я сразу же вспомнил, что использовал глупую клавишу [esc] (это была одна из причин, по которой я ненавидел vim в течение многих лет!) Для меня этот параметр абсолютно необходим. Я бы никогда не стал использовать vi (m) без него. <br> И мне нравится идея использовать «ii» вместо «;;»: более интуитивно понятный, почти как переключатель.
иконоборчество
Другая возможность - использовать Ctrl-C, чтобы выйти из режима вставки. Это почти то же самое, что Escape (единственное отличие, которое меня беспокоит, - это работа с линиями визуального блока).
a3nm
8

Мой комментируемый vimrc с сочетаниями клавиш readline-esque (emacs):

if version >= 700

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

endif " version >= 500
пушки
источник
Кстати, «smartindent» устарел (cindent заменяет его) и ничего не делает, когда вы используете отступ для типов файлов, и будет активен только тогда, когда это бесполезно
Graywh
7
syntax on
set cindent
set ts=4
set sw=4
set backspace=2
set laststatus=2
set nohlsearch
set modeline
set modelines=3
set ai
map Q gq

set vb t_vb=

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

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

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

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

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

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

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

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

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


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

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

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


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

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

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

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

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

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

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

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

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

endfunction

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

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

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

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


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

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

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

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

" end Perl settings

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

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

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

set nobackup
set nowritebackup
set cul

colorscheme evening

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

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

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

" Better Marks
nnoremap ' `
Максим Слойко
источник
6

Некоторые исправления для типичных опечаток сэкономили мне удивительное количество времени:

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

iab anf and
iab adn and
iab ans and
iab teh the
iab thre there
Доминик Дос Сантос
источник
25
Мне это не нравится - это просто тренирует ошибки.
Сванте
Мне нравятся слова: и, там, но не для спасения и
ухода
3
@Svante, обычно я бы согласился, кроме того, что у меня есть это в моей команде, я склонен часто сохранять или сохранять / выходить часто. Часто мой мизинец на доли секунды слишком медлителен при снятии с клавиши Shift, и BAM один или другой заканчиваются заглавными буквами, это раздражает!
Фарон
1
vi была написана на терминале ADM3A и для него, у которого была назначенная клавиша для двоеточия (:), поэтому вам не нужно было нажимать клавишу shift. Если вы переназначите клавишу, которая обычно не используется вообще в обычном / визуальном режиме, например, пробел, вы не столкнетесь с этой проблемой в такой степени. nnoremap <Space>: и vnomap <Space>: en.wikipedia.org/wiki/File:KB_Terminal_ADM3A.svg
aoeu
Мне нравится это для команд сохранения / выхода, но не для слов. Если вы допустите ошибку, когда нет системы безопасности, Vim сообщит вам о вашей ошибке. Если вы произнесете «как», когда автозамены нет, вы не заметите и будете выглядеть необразованным.
Роберт Мартин
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>
rshdev
источник
5

Моя строка 242 .vimrcне столь интересна, но, поскольку никто не упомянул об этом, я чувствовал, что должен поделиться двумя наиболее важными сопоставлениями, которые улучшили мой рабочий процесс, помимо сопоставлений по умолчанию:

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

Серьезно, переключение буферов - это то, что нужно делать очень часто. Windows, конечно, но все не очень хорошо вписывается в экран.

Аналогичный набор карт для быстрого просмотра ошибок (см. Quickfix) и результатов grep:

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

Просто, легко и эффективно.

nperson325681
источник
Я не особо переключался между буферами, так как Vim получил поддержку табуляции. У меня есть дополнительные клавиши «назад» и «вперед» на моей клавиатуре, сопоставленные с командами навигации по вкладкам.
Дон Реба
@ Дон Реба, вы знаете, вкладки просто копируют некоторые функции буфера. Так что нет большой разницы в том, чтобы «использовать» буферы или вкладки. Пуристы скажут, что вкладки предназначены для организации задач по отдельным регионам и ничего более. Все, что я говорю, - это то, что буферы имеют все удобства и что я оставил использование вкладок, резервируя их для чего-то другого, если понадобится что-то более высокое, абстрактное. :)
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
JaredPar
источник
4

Я использую cscope изнутри vim (отлично использую несколько буферов). Я использую control-K для запуска большинства команд (насколько я помню, украденных из ctags). Кроме того, я уже сгенерировал файл .cscope.out.

если имеет ("cscope")

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

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

ENDIF

хвостовик
источник
3

Я работаю на OS X, поэтому некоторые из них могут иметь лучшие значения по умолчанию на других платформах, но независимо:

syntax on
set tabstop=4
set expandtab
set shiftwidth=4
Трентон
источник
1
Вы могли бы хотеть искать softtabstopи использовать это вместо tabstop. Оставляя tabstopв его значении 8 по умолчанию поможет при чтении файлов , что и другие , созданные с помощью вкладок.
Грег Хьюгилл,
6
Какое отношение OSX имеет к вкладкам?
aehlke
3
map = }{!}fmt^M}
map + }{!}fmt -p '> '^M}
set showmatch

= для переформатирования обычных абзацев. + для переформатирования абзацев в цитируемых письмах. showmatch предназначен для мигания совпадающих скобок / скобок, когда я набираю закрывающую скобку или скобку.

Андру Лувизи
источник
3

Используйте первый доступный файл тегов в дереве каталогов:

:set tags=tags;/

Левый и правый предназначены для переключения буферов, а не перемещения курсора:

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

Отключить подсветку поиска одним нажатием клавиши:

map - :nohls<cr>
оборота Иеруб
источник
3
set tabstop=4 softtabstop=4 shiftwidth=4 expandtab autoindent cindent 
set encoding=utf-8 fileencoding=utf-8
set nobackup nowritebackup noswapfile autoread
set number
set hlsearch incsearch ignorecase smartcase

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

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

inoremap <C-j> <Esc>

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

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

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

" cd to the current file's directory
noremap gc :lcd %:h<Cr>
оборота Хасен Дж
источник
Мне нравится многое из того, что происходит в твоем конфиге. Несколько наборов на линию if has("gui_running"), и классные карты. Я скопировал большую часть вашей конфигурации в мою. СПАСИБО!
Джастин Форс
3

Поместите это в ваш vimrc:

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

и никогда не думать о наборе хэш-ракет снова. Да, я знаю, что вам не нужно в Ruby 1.9. Но не бери в голову это.

Мой полный vimrc здесь .

dpogg1
источник
Это отличная идея, но я бы предложил только сопоставить ее для файлов ruby:autocmd FileType ruby imap <C-l> <Space>=><Space>
csexton
Не могли бы вы объяснить, что это делает для человека из Emacs, который не знает Ruby?
Томас
Это добавляет горячую клавишу Control-L в режим вставки Vim, чтобы автоматически вводить хеш-ракету с пробелами (=>). Hashrocket - это оператор значения ключа в Ruby для хэшей.
dpogg1
2

Ну, тебе придется очистить мои конфиги самостоятельно. Радоваться, веселиться. В основном это просто мои желаемые настройки, включая сопоставления и случайный синтаксис, а также настройки свертывания и некоторые настройки плагинов, анализатор tex-компиляции и т. Д.

Кстати, то, что я нашел чрезвычайно полезным, это «выделить слово под курсором»:

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

Обратите внимание, что только ctermи termfgиспользуются, потому что я не использую gvim. Если вы хотите, чтобы это работало, gvimпросто замените их на guiи guifg, соответственно.

Александар Димитров
источник
Как заставить его работать с несколькими открытыми окнами? Кажется, что он работает только с основным, запущенным в качестве первого, буфером.
ohnoes
2

Я пытался сделать мой .vimrc максимально полезным.

Удобный трюк с обработчиком файлов .gpg для их безопасного редактирования:

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

1) Мне нравится строка состояния (с именем файла, значением ascii (десятичное число), шестнадцатеричным значением и стандартными строками, столбцами и%):

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 строк). В основном настройки и несколько общих и простых отображений, которые мне было лень распаковывать в плагины.

Если вы имеете в виду «template-files» под «auto-classes», я использую плагин template-expander - на этом же сайте вы найдете ftplugins, которые я определил для редактирования на C & C ++, некоторые могут быть адаптированы для C # Я думаю.

Что касается аспекта рефакторинга, есть совет, посвященный этой теме на http://vim.wikia.com ; IIRC пример кода для C #. Это вдохновило меня на плагин рефакторинга, который все еще требует много работы (на самом деле его нужно рефакторинг).

Вам следует взглянуть на архивы списка рассылки vim, особенно на темы, касающиеся использования vim в качестве эффективной IDE. Не забудьте взглянуть на: марку, теги, ...

НТН,

оборота Люк Эрмита
источник
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

Мне стало скучно, когда я готовился к выпускным экзаменам в старшей школе.

Тадеуш А. Кадлубовский
источник
не могли бы вы объяснить, что это делает?
Виджай Дев
Он показывает строку состояния с номером буфера, именем файла, состоянием модификации, положением в буфере и шестнадцатеричным кодом символа под курсором. Красиво отформатированный и цветной.
Тадеуш А. Кадлубовский,
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