Тонкая настройка vim (делимся полезностями в .vimrc. Вопросы задавайте в отдельных темах!)

и другие vi-подобные редакторы

Модератор: /dev/random

go2bed
Сообщения: 7

Re: Тонкая настройка vim

Сообщение go2bed »

(sdk @ Понедельник, 18 Октября 2004, 7:07) писал(а):Я вот тоже бы не прочь, чтобы не было :цй, ...

Насколько я понял, при юникодной локали langmap не работает. Во всех режимах. При первом же переключении раскладки вводимые символы перестают восприниматься адекватно, например, по C^[ (или esc) почему-то запускается запись макроса :).

Решение нашлось половинчатое (работает только в иксах), пришлось использовать модифицированный keymap-файл russian-jcukenwin.vim, стянув переключатель из russian-phonetic_utf-8.vim.

Модификация russian-jcukenwin.vim:

Код: Выделить всё

$cat russian-jcukenwin.vim.diff

--- russian-jcukenwin.vim    2004-09-23 13:51:32.000000000 +1000
+++ rus_lat-jcukenwin.vim    2004-11-14 00:02:41.000000000 +0900
@@ -11,6 +11,10 @@

 let b:keymap_name = "ru"

+noremap  <S-Tab> :let &iminsert = ! &iminsert<CR>
+lnoremap <S-Tab> <C-^>
+noremap! <S-Tab> <C-^>
+
 loadkeymap
 ~    Ё    CYRILLIC CAPITAL LETTER IO
 `    ё    CYRILLIC SMALL LETTER IO


Переключалка работает по S^Tab, кому как, а я уже привык. Копируем файл в ~/.vim/keymap под именем, скажем, rus_lat-jcukenwin.vim и добавляем в .vimrc биндинг:

Код: Выделить всё

map <у кого что, а у меня F4>  :set keymap=rus_lat-jcukenwin

При нажатии на F4 включается русская раскладка, далее переключаемся по S^Tab.

Плюсы. Работает ВСЕ: команды, шорткаты (вроде C^[, C^p, wq, gq, etc), визуальный режим... Это плюсы.

Минусы. Работает только в иксах, (i.e., gvim/xvim/whatever, xterm/...), в консоли же комбинация S^T работает как обычный Tab. Почему именно эта комбинаиця? А просто ничего другого в голову не пришло :). Может кто покрасивее решение найдет.

Дополняйте, пинайте... ;)
Спасибо сказали:
Аватара пользователя
xorader
Сообщения: 1030
Статус: собирающий миры
ОС: Debian
Контактная информация:

Re: Тонкая настройка vim

Сообщение xorader »

go2bed, пасиба
Molchanov Alexander (aka Xor)
*offtopic* - ololo!
Спасибо сказали:
diafour
Сообщения: 14

Re: Тонкая настройка vim

Сообщение diafour »

воо народ, классную вы тему развели.

а вот бывает ситуация, когда нужно "запомнить" текущее местоположение, перейти на пару страниц куда-нибудь и вернуться назад. может есть букмарки какие-нибудь?

и ещё проблемка.. с тем же самым страничным хождением.. нажатие два раза PgUp и два раза PgDn не возвращает на исходную строку. иногда бесит сильно :)

да, маппинг в копилку для perl (спасибо за gv):

:vmap <F1> :<<CR>gv " indent
:vmap <F2> :><CR>gv " unindent
:vmap <F3> :s/^\(\s*\)#/\1/<CR> " убираем # комментарии
:vmap <F4> :s/^\(\s*\)/\1#/<CR> " ставим # комментарии
Спасибо сказали:
sdk
Бывший модератор
Сообщения: 210

Re: Тонкая настройка vim

Сообщение sdk »

Смотри help mark.
Вкратце:
в режиме Normal: m<буква> - поставить отметку с именем <буква>, потом '<буква> - перейти на отметку <буква>
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Спасибо сказали:
Аватара пользователя
clx
Сообщения: 3121
Статус: Think Different !
ОС: Mac OS X

Re: Тонкая настройка vim

Сообщение clx »

При нажатии F8 меняется кодировка koi8-r -> cp1251 -> utf8 -> cp866

Код: Выделить всё

(cliex@opteron)*(22:05)*(~)
-=>> cat .vimrc
set ai nocp digraph ek hid ru sc wmnu noet nosol si
set bs=2 fo=cqrt ls=2 shm=at ww=<,>,h,l ts=4 sw=4
set com=s1:/*,mb:*,ex:*/,://,b:# syn=on filetype=on
set vi=%,'50,\"50,:50 lcs=tab:>-,trail:.,extends:>
set pt=<F5> shm=I tm=750 nomore modelines=5 hls!
set tabstop=4
syn on

ino <Down> <C-O>gj
ino <Up> <C-O>gk
nno <Down> gj
nno <Up> gk

nno <F2> :set hls!<bar>set hls?<CR>
nno <F3> :syn clear <CR>
nno <F4> :set nu!<bar>set nu?<CR>

if has("gui_running")
    colo darkblue
    set gfn=Bitstream\ Vera\ Sans\ Mono\ 8
else
    colo elflord
endif



set encoding=koi8-r
set termencoding=koi8-r

map <F8> :execute RotateEnc()<CR>
map <F7> :let &fileencoding=&encoding<CR>
let b:encindex=0
function! RotateEnc()
        let y = -1
        while y == -1
                let encstring = "#8bit-cp1251#8bit-cp866#utf-8#koi8-r#"
                let x = match(encstring,"#",b:encindex)
                let y = match(encstring,"#",x+1)
                let b:encindex = x+1
                if y == -1
                        let b:encindex = 0
                else
                        let str = strpart(encstring,x+1,y-x-1)
                        return ":set encoding=".str
                endif
        endwhile
endfunction

set statusline=%<%f%h%m%r%=%b\ %{&encoding}\ 0x%B\ \ %l,%c%V\ %P
iMac 20" Core Duo.
Спасибо сказали:
sdk
Бывший модератор
Сообщения: 210

Re: Тонкая настройка vim

Сообщение sdk »

Прикольно! Спасибо за идею! :)
Серьезность - это способ сделать простые вещи сложными.
Если много знать - устанут глаза. Если много спать - то нет.
Нас никому не сбить с пути - нам пофигу куда идти.
:-)
Спасибо сказали:
Аватара пользователя
Bolverk
Бывший модератор
Сообщения: 1571
ОС: Cygwin
Контактная информация:

Re: Тонкая настройка vim

Сообщение Bolverk »

Проверка орфографии (a la Word): http://www.fleiner.com/vim/spell.html
Или как-то так:
nmap <F4> :w!<CR>:!ispell -d russian %<CR>:!ispell -d english %<CR>:e! %<CR>
Я остановился на последнем варианте.
Спасибо сказали:
Аватара пользователя
Sonic
Сообщения: 478
Контактная информация:

Re: Тонкая настройка vim

Сообщение Sonic »

Может кому надо будет. Конфиг пользователя tony2001 с форума http://phpclub.ru/talk
LinuxForum.ru :: Форум пользователей ОС Linux
Спасибо сказали:
well
Сообщения: 48

Re: Тонкая настройка vim

Сообщение well »

Всем привет, у меня возник вопрос: можно ли в vim использовать отметки, то есть "прыгать" в отмеченные участки текста при редактировании. Заранее спасибо.
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Тонкая настройка vim

Сообщение elide »

Для well:
читай :help mark
слава роботам!
Спасибо сказали:
well
Сообщения: 48

Re: Тонкая настройка vim

Сообщение well »

Да, хэлп рулит, спасибо! :thumbsup:
Спасибо сказали:
Аватара пользователя
clx
Сообщения: 3121
Статус: Think Different !
ОС: Mac OS X

Re: Тонкая настройка vim

Сообщение clx »

iMac 20" Core Duo.
Спасибо сказали:
pupilgnida
Сообщения: 4

Re: Тонкая настройка vim

Сообщение pupilgnida »

клёвую тему подняли
Я вот начал свой вим тюнить и обнаружил, что в иксовом терминале сочетания типа <S-F2> не работают, хотя в gvim работают прекрасно. Это лечится?
Спасибо сказали:
Аватара пользователя
goto_bed
Сообщения: 26

Re: Тонкая настройка vim

Сообщение goto_bed »

From the vim_ers LJ-community:

vim.org now has an RSS feed for recent Vim Tips, so now you can add vimtips to your friends list.


( вообще-то rss-фид у них давно был, просто щас организовали его трансляцию в ЖыЖу )
I'm gonna build my own theme park, with blackjack and hookers! In fact, forget the park!
Спасибо сказали:
Аватара пользователя
Asgard
Сообщения: 215
Статус: North Valfader
Контактная информация:

Re: Тонкая настройка vim

Сообщение Asgard »

Когда сидел под виндой мне очень нравилась подсветка скобок в far + colorer. При неведении на одну скобку подсвечивалась парная ей скобка. Сразу было всё видно и понятно и не надо было тянуть к %. Можно ли подобное организовать в vim'е?
sator arepo tenet opera rotas ;)
------------------------------------------------------------
LJ
Спасибо сказали:
Аватара пользователя
Golden
Сообщения: 163
ОС: Ubuntu Linux 7.10
Контактная информация:

Re: Тонкая настройка vim

Сообщение Golden »

Такой вопрос: есть у меня куча строчек
например:

Код: Выделить всё

aaaaaaaaa
bbbbbbbbbbb
ccccccccccccc
fffffffffffffffff
ddddddddddddd
eeeeeeeeee


Как мне что-либо вставить в начало и/или в конец каждой строчки? Например, чтобы получилось так:

Код: Выделить всё

"aaaaaaaaa",
"bbbbbbbbbbb",
"ccccccccccccc",
"fffffffffffffffff",
"ddddddddddddd",
"eeeeeeeeee",
Спасибо сказали:
Аватара пользователя
Warderer
Модератор
Сообщения: 1056
Статус: киберпИнгвин на гусеничном ходу
ОС: Debian unstable

Re: Тонкая настройка vim

Сообщение Warderer »

:%s/^\(.*\)$/"\1"/g
Читаю вслух с выражением маны - $50/ч + стоимость звонка. Настраиваю сервисы за Вас - $100/ч + стоимость выезда и проживания.
И восемь строк матом...(бесплатно)
Спасибо сказали:
devil
Сообщения: 106
Контактная информация:

Re: Тонкая настройка vim

Сообщение devil »

http://devil.mk.ua/vimrc/ - мой конфиг :-)

Admin of Ukrainian Gentoo Community Domain
web-site: http://www.gentoo.org.ua
JabberID: devil@jabber.gentoo.org.ua
Спасибо сказали:
DepeBo
Сообщения: 15

Re: Тонкая настройка vim

Сообщение DepeBo »

Недавно начал работать с vim, и возник вопрос:
возможно ли настроить так, чтобы в statusline показывались номера строк закладок (marks)
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга
Контактная информация:

Re: Тонкая настройка vim

Сообщение madskull »

Вот такой вопрос возник.
Можно ли в конфиге сделать так, что бы определенные настройки срабатывали в зависимости от типа файла?
Ну, например
if перл-исходник
сделать фолдинг для перла
fi
if си-исходник
фолдинг для си
fi
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Тонкая настройка vim

Сообщение elide »

не уверен, что это то, что тебе нужно, но если зайдешь в то, что у меня в слаке называется /usr/share/vim/vim63/ftplugin - то там обнаружатся файлы настроек для разных файлов. я думаю, если по их образцу захреначить свои в ~/.vim/ftplugin, то все будет как тебе хочется.
слава роботам!
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга
Контактная информация:

Re: Тонкая настройка vim

Сообщение madskull »

(elide @ Пятница, 19 Августа 2005, 10:48) писал(а):не уверен, что это то, что тебе нужно, но если зайдешь в то, что у меня в слаке называется /usr/share/vim/vim63/ftplugin - то там обнаружатся файлы настроек для разных файлов. я думаю, если по их образцу захреначить свои в ~/.vim/ftplugin, то все будет как тебе хочется.

Да, это то, что нужно.
Правда, я уже сам почти допер, но твой пост поставил последнюю точку.
Спасибо.
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
JaGoTerr
Сообщения: 380

Re: Тонкая настройка vim

Сообщение JaGoTerr »

Помнится кому-то на форуме не нравилось поведение PageUp / PageDown в виме. Меня и самого оно немного бесило всегда. Сижу тут доки к виму почитываю (интересно, блин, шо прям Лев Николаевич отдыхает, да простит меня классик). И наткнулся на полезные комбинации кнопочек C-U и C-D. Результат:

Код: Выделить всё

" более привычные Page Up/Down, когда курсор остаётся в той же строке,
" (а не переносится в верх/низ экрана, как при стандартном PgUp/PgDown)
" Поскольку по умолчанию прокрутка по C-Y/D происходит на полэкрана,
" привязка делается к двойному нажатию этих комбинаций.
nmap <PageUp> <C-U><C-U>
imap <PageUp> <C-O><C-U><C-O><C-U>

nmap <PageDown> <C-D><C-D>
imap <PageDown> <C-O><C-D><C-O><C-D>


Советую ещё обратить внимание на полезные привязки C-E и C-Y, а особенно zz, zt, zb и иже с ними. Но это так, к слову.
Спасибо сказали:
Аватара пользователя
Dark_Savant
Бывший модератор
Сообщения: 1100
Статус: киборг
ОС: Cyborg OS 0.0.1.3

Re: Тонкая настройка vim

Сообщение Dark_Savant »

хм.. решение работает только в консоли.. в гвим pageup, pagedown продолжают вести себя так же как и раньше. или мб это у меня ласты кривые ? 8)
I'm a tragic hero
In this game called life
My chances go to zero
But I always will survive
Спасибо сказали:
Аватара пользователя
JaGoTerr
Сообщения: 380

Re: Тонкая настройка vim

Сообщение JaGoTerr »

Не знаю. У меня отлично работает в гуи. А в консоли я просто не проверял специально. Но думаю, нет разницы. Кстати, в проекте написание небольшой функции, которая бы при этом ещё и позицию в строке восстанавливала. На недельке займусь. Ждите :)
Спасибо сказали:
Аватара пользователя
Dark_Savant
Бывший модератор
Сообщения: 1100
Статус: киборг
ОС: Cyborg OS 0.0.1.3

Re: Тонкая настройка vim

Сообщение Dark_Savant »

в смысле позицию в файле после выхода из вима ? вот, пожалуйста.
а до позиции в строке я как-то не додумался, т.ч милости просим 8)

if has("autocmd")
filetype plugin indent on
autocmd FileType text setlocal textwidth=78
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" |
\ endif
endif
I'm a tragic hero
In this game called life
My chances go to zero
But I always will survive
Спасибо сказали:
Аватара пользователя
JaGoTerr
Сообщения: 380

Re: Тонкая настройка vim

Сообщение JaGoTerr »

Нет, при PgUp/Down в режиме редактирования.

А твоя-то функция в каждом vimrc есть :)
Спасибо сказали:
Аватара пользователя
Dark_Savant
Бывший модератор
Сообщения: 1100
Статус: киборг
ОС: Cyborg OS 0.0.1.3

Re: Тонкая настройка vim

Сообщение Dark_Savant »

вполне возможно. не помню уже откуда содрал 8)
I'm a tragic hero
In this game called life
My chances go to zero
But I always will survive
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Тонкая настройка vim

Сообщение elide »

а вот скажите мне, люди добрые, как мне захреначить что-то вроде

Код: Выделить всё

imap <lt>div <lt>div<esc>:let g:current_tag="div"<cr>a
только так, чтоб вот вместо div там была переменная. ну, всмысле, чтоб можно было вызвать эту строчку в цикле и забомбить кучу биндингов (:

и еще, если у меня три окна и 8 буферов. как мне мне закрыть один буфер, чтоб он не грохнул вместе с собой текущее окно?
слава роботам!
Спасибо сказали:
Аватара пользователя
JaGoTerr
Сообщения: 380

Re: Тонкая настройка vim

Сообщение JaGoTerr »

elide писал(а):
08.10.2005 03:39
и еще, если у меня три окна и 8 буферов. как мне мне закрыть один буфер, чтоб он не грохнул вместе с собой текущее окно?

:bd
это?
Спасибо сказали:
Ответить