Назад | Перейти на главную страницу

Конфигурация Vim для редактирования на стороне сервера

Я всегда использую 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

  1. Как искать файлы в списке 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.
  1. Открытие файлов из списка MRU в новой вкладке

Нажатие 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
  1. Обновите окно MRU

Чтобы обновить текущее окно 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 /.*'