Я всегда использую Vim на наших серверах (в основном на основе Ubuntu), и мне всегда не хватает хорошей конфигурации, которая подходила бы для vim через SSH без особых излишеств.
Я хотел бы собрать как можно больше настроек конфигурации для тех, кто пишет в основном код на bash, zsh и ruby прямо на сервере.
Лучшее, что я узнал за последнее время, - это использовать jj
вместо того <esc>
для входа в нормальный режим:
imap jj <Esc>
Кроме того, если вы используете разбиение через split
(высокий терминал) или vsplit
(широкий терминал), то переопределение команды switch-split неоценимо; я использую ,
(запятая) для переключения между моими разделениями:
map , <C-w><C-w>
Проверить верх вопросы для vim на Stack Overflow тоже.
Я использую следующее практически на каждой системе, которую использую. Хотя я не особо старался его модифицировать. Я использую vim в качестве инструмента для редактирования конфигурации на большом количестве серверов, но в наши дни я не склонен сильно разрабатывать vim
set modeline
set background=dark
set autowrite
nmap <tab> :bn<cr>
nmap <s-tab> :bp<cr>
Параметры nmap позволяют мне использовать tab и shift-tab для переключения между несколькими открытыми буферами, что я считаю бесценным.
Проверить .vimrc
и .vim
из файлы точек dakrone.
Ниже приведен мой .vimrc, который в значительной степени ориентирован на функции IDE perl, mason и javascript, но вы можете адаптировать то, что вы видите здесь, для специфики ruby / sh. Пользуюсь им уже несколько лет по SSH. Вне контекста IDE автоматическое резервное копирование не раз спасало мою задницу.
" Embedded() is a function that will parse a text buffer
" looking for embedded vim commands, and execute them.
" Call it with a range of lines to check, eg to check the whole
" file:
"
" :%call Embedded()
"
" Commands should be prefixed by the sequence :vim: .
"
function Embedded() range
let n = a:firstline
while n <= a:lastline
let l = getline(n)
let p = stridx(l,':vim:')
if p > -1
let p = p + 5
let c = strpart(l,p)
execute c
endif
let n = n + 1
endwhile
endfunction
" call Embedded() whenever a file is loaded and
" parse the entire file. You may not want to do
" this for *; maybe just your src tree or certain
" file types or something.
autocmd BufWinEnter * %call Embedded()
" Create nested folds on custom expressions, based
" on the current buffer's filetype or syntax.
"
let g:foldlevel = 0
let g:foldstartexpr = ''
let g:foldendexpr = ''
function GetCustomFold()
if getline(v:lnum) =~ g:foldstartexpr
let g:foldlevel = g:foldlevel + 1
return ">".g:foldlevel
elseif getline(v:lnum) =~ g:foldendexpr
let thislevel = g:foldlevel
let g:foldlevel = g:foldlevel - 1
return "<".thislevel
else
return g:foldlevel
endif
endfunction
function SetFoldType()
let f = &filetype ? &filetype : &syntax
if f == 'mason'
let g:foldstartexpr = '^\s*<\(script\|style\|%init\|%attr\|%once\|%args\|%flags\|%shared\|%def\)[^>]*>\s*$'
let g:foldendexpr = '^\s*</\(script\|style\|%init\|%attr\|%once\|%args\|%flags\|%shared\|%def\)[^>]*>\s*$'
elseif f == 'perl'
let g:foldstartexpr = '^sub.*{\s*$'
let g:foldendexpr = '^}\s*$'
elseif f == 'javascript'
let g:foldstartexpr = '^function.*{\s*$'
let g:foldendexpr = '^}\s*$'
else
return
endif
setlocal foldexpr=GetCustomFold()
setlocal foldmethod=expr
endfunction
autocmd BufWinEnter * %call SetFoldType()
function SetPerlIDE()
" check perl code with :make
setlocal makeprg=perl\ -c\ %\ $*
setlocal errorformat=%f:%l:%m
setlocal autowrite
" comment/uncomment blocks of code (in vmode)
map ^C :s/^/#/gi<Enter>
map ^X :s/^#//gi<Enter>
" my perl includes pod
let perl_include_pod = 1
" syntax color complex things like @{${"foo"}}
let perl_extended_vars = 1
" Tidy selected lines (or entire file) with _t:
nnoremap <silent> _t :%!perltidy -q<Enter>
vnoremap <silent> _t :!perltidy -q<Enter>
" perlcritic selected lines (or entire file) with _p:
nnoremap <silent> _p :%!perlcritic -q<Enter>
vnoremap <silent> _p :!perlcritic -q<Enter>
endfunction
autocmd FileType perl call SetPerlIDE()
" map II :r ~/.vim/template.pod<CR>
set tabstop=4
set number
set showmatch
set ruler
set backup
set backupdir=~/.vim/backups
set directory=~/.vim/backups
set tags=~/.vim/tags
set backupskip=/tmp/*,/private/tmp/*"
" we get colors, we get lots and lots of colors
syntax on
set bg=dark
colors darkblue
небольшая работа от меня, вам может понравиться, если вы используете vim
Шаг 1. Загрузите последнюю версию плагина с vim.org
Загрузите плагин с vim.org
$ cd / usr / src $ wget -O mru.vim http://www.vim.org/scripts/download_script.php?src_id=9274
Шаг 2: Установите плагин MRU vim
$ mkdir ~ / .vim # если каталог еще не существует $ cd ~ / .vim / plugin / $ cp /usr/src/mru.vim.
7 мощных возможностей MRU.vim
После установки этого плагина всякий раз, когда вы открываете файл для чтения или записи, он будет добавлен в список MRU. 1. Просмотр последних использованных файлов в редакторе Vi / Vim
: MRU
Примечание: MRU (верхний регистр) работает. : mru (в нижнем регистре) не работает.
: MRU покажет «последние использованные» файлы, отсортированные по последнему использованию сверху вниз, как показано ниже. Чтобы открыть файл, нажмите ENTER, когда курсор находится на этом имени файла. Рис: Редактор Vim отображает список «Последние документы»
Рис: Редактор Vim отображает список «Недавние документы»
Примечание. Сразу после установки плагина MRU вы можете не увидеть никаких файлов в списке MRU. Используйте редактор Vim, чтобы открыть несколько файлов после установки плагина, чтобы список MRU увеличивался. 2. Как увеличить количество списков MRU? (Увеличьте количество хранимых файлов)
По умолчанию в списке MRU хранятся только 10 последних использованных файлов. Добавьте следующую строку в ваш ~ / .vimrc, чтобы увеличить этот предел, как показано ниже.
$ cat ~ / .vimrc пусть MRU_Max_Entries = 20
Когда вы увеличили количество файлов, может быть трудно прокрутить список MRU, чтобы выбрать файл, который вы ищете. Вместо этого вы можете использовать обычные команды Vim для поиска внутри списка MRU. Таким образом, вы можете указать (косую черту) / и дать шаблон для поиска.
В следующем примере список MRU был очень длинным. Я сделал «/ yum», который автоматически переместил курсор на запись MRU /etc/yum.conf. Нажатие Enter откроет этот файл. Рис: Поиск в списке MRU с помощью /
Рис: Поиск в списке MRU с помощью /
Вы также можете использовать функцию поиска MRU, как описано ниже.
* Enter the partial file name and press TAB which will fill the file name, which you can open by pressing enter,
* Enter one or two characters of the file name or the path name, and press tabs to rotate around the file names.
Нажатие Enter на записи MRU по умолчанию откроет файл в том же окне. Он откроется в новом окне, если файл, открытый в текущем окне, еще не сохранен.
* To open the file from the MRU entry in a new Tab , press ‘t’ when the cursor is on a file name in MRU window.
* :tabn will take you to the next tab
* :tabp will take you to the previous tab
Чтобы обновить текущее окно MRU, нажмите «u». Когда бы вы ни открыли окно MRU, оно всегда будет открывать более новый контент. 6. Исключение определенных файлов с помощью MRU_Exclude_Files
Чтобы исключить отображение определенных файлов в MRU, вы можете сохранить регулярное выражение в переменной MRU_Exclude_Files как:
$ cat ~ / .vimrc пусть MRU_Exclude_Files = '^ / tmp /.\ | ^ / var / tmp /.'"Для Unix
Приведенное выше исключит / tmp и / var / tmp из хранения в MRU. 7. Включение определенных файлов с помощью MRU_Include_Files
Чтобы включить в MRU файлы только определенного типа, вы можете сохранить регулярное выражение в переменной MRU_Include_Files, как показано ниже. Это будет включать только файлы, которые находятся в / home / ramesh для хранения в MRU.
$ cat ~ / .vimrc let MRU_Include_Files = '^ / home / rajat /.*'