Конфигурация Vim для редактирования на стороне сервера
Я всегда использую Vim на наших серверах (в основном на основе Ubuntu), и мне всегда не хватает хорошей конфигурации, которая бы подходила vim поверх SSH без особых излишеств.
Я хотел бы собрать как можно больше параметров конфигурации для тех, кто пишет в основном коды bash, zsh и ruby непосредственно на сервере.
5 ответов
Лучшее, что я узнал за последнее время, это использование jj
вместо <esc>
чтобы войти в нормальный режим:
imap jj <Esc>
Кроме того, если вы используете разделение через split
(высокий терминал) или vsplit
(широкий терминал) команда, затем переназначение команды switch-split неоценимо; я использую ,
(запятая) переключаться между моими разделениями:
map , <C-w><C-w>
Ознакомьтесь с основными вопросами для vim over Stack Overflow.
Ниже приведен мой.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 Editor
: MRU
Примечание: MRU (в верхнем регистре) работает.:mru (в нижнем регистре) не работает.
: MRU покажет "последние использованные" файлы, упорядоченные по последнему использованию сверху вниз, как показано ниже. Чтобы открыть файл, нажмите ENTER, когда курсор находится в этом имени файла. Рис. Редактор Vim, отображающий список "Недавние документы"
Рис. Редактор Vim, отображающий список "Недавние документы"
Примечание. Сразу после установки плагина MRU в списке MRU могут отсутствовать файлы. Используйте редактор Vim, чтобы открыть несколько файлов после установки плагина, для увеличения списка MRU. 2. Как увеличить количество списков MRU? (Увеличьте количество сохраняемых файлов)
По умолчанию в списке MRU хранятся только последние 10 использованных файлов. Добавьте следующую строку в ~/.vimrc, чтобы увеличить этот предел, как показано ниже.
$ cat ~/.vimrc let MRU_Max_Entries = 20
- Как искать файлы в списке MRU
Когда вы увеличили количество файлов, может быть трудно прокрутить список 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.
- Открытие файлов из списка MRU в новой вкладке
Нажатие ввода в записи 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
Чтобы обновить текущее окно MRU, нажмите "u". При открытии окна MRU оно всегда будет открывать новый контент. 6. Исключение некоторых файлов с использованием MRU_Exclude_Files
Чтобы исключить отображение определенных файлов в MRU, вы можете сохранить регулярное выражение в переменной MRU_Exclude_Files как:
$ cat ~/.vimrc let MRU_Exclude_Files = '^ / tmp /.\ | ^ / вар / 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 /.*'
Я использую следующее в основном в каждой системе, которую использую. Я действительно не приложил много усилий, чтобы изменить его, хотя. Я использую vim в качестве инструмента редактирования конфигурации для большого количества серверов, но в настоящее время я не склонен много заниматься разработкой в vim
set modeline
set background=dark
set autowrite
nmap <tab> :bn<cr>
nmap <s-tab> :bp<cr>
Параметры nmap позволяют мне использовать tab и shift-tab для переключения между несколькими открытыми буферами, что я считаю довольно ценным.