Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Vim

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9

Открыть новую тему     Написать ответ в эту тему

8AleX8



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
 
Vim

 
Vim (Вим) — один из двух существующих в мире текстовых редакторов ;-) свободный, кроссплатформенный, расширяемый текстовый редактор, сколь угодно настраиваемый и автоматизируемый; и вообще, в представлении не нуждающийся.
 



 
Ресурсы:

Документация:
  • Vim documentation
    Официальная документация (та, что :help) онлайн. Подробно и сухо.
     
  • Vim Recipes [HTML Online] [HTML+PDF Tarball] [PDF] [DEB] [SRC]
    С одной стороны, название нас не обманывает: эта небольшая книга — действительно сборник рецептов для решения конкретных задач; с другой — это именно книга, излагающая хорошо подобранный материал связно, цельно и без излишней подробности, свойственной манам. Разобранный круг вопросов: от выхода из Вима :) до кастомизации. Т. о. книжка пригодна в роли первого учебника вполне.
     
  • A Byte of Vim
    (Просто о Vim)

Эссе:
  • ‘Coming Home to Vim’ by Steve Losh
    (Возвращение к Vim)
    Опыт программиста-маковода по переходу на Вим. Изложено авторское видение вимовской «философии», приведены любопытные строчки конфига, сделан обзор необходимых плагинов.

Шпаргалки (cheet sheets, quick reference cards) — распечатать и положить под стекло:
  • VIM Quick Reference Card by Laurent Gregoire
    Шпаргалок по Виму не просто много, а очень много; эта, по крайней мере, неплоха.
     
  • Graphical cheat sheet by ViEmu
    Что делает та или иная клавиша надписано на самой клавише схеме QWERTY-клавиатуры; весьма наглядно.

 
Зачатки FAQ'а:
Q: Как быть с вводом кириллицы?
A: Увы, на настоящий момент наиболее разумным решением будет использовать собственный вимовский механизм переключения раскладок, сиречь переключать раскладки по сочетанию отличному от общесистемного (по-умолчанию: ^6 и ^^, т.е. Ctrl+6 и Ctrl+Shift+6), для чего в .vimrc добавить строку
set keymap=russian-jcukenwin
Мапинг кириллицы (map й q) в силу разного расположения на клавишах присутствующих в обеих раскладках символов оказывается существенно более неудобным.
 
 

Смело правьте и дополняйте шапку, однако не забывайте отписываться об исправлениях и сохранять исходный вариант.

Всего записей: 1813 | Зарегистр. 11-12-2001 | Отправлено: 14:38 21-05-2003 | Исправлено: Maz, 11:14 19-08-2020
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Quasus

Цитата:
    Здравствуйте.
    У меня vim 7.3 на Windows. Собственно, настоящая проблема как раз из-за Windows.
    Экспериментирую с фильтрацией (filtering) с помощью python-а 3.2. В vim-e текстовый файл в utf-8. Получать текст из питона я пробовал следующими способами:
sys.stdin.read()
— работает для русских и английских букв. Если сделать
sys.stdin.buffer.read().decode('cp1251'),
аналогично. Если же
sys.stdin.buffer.read().decode('utf-8'),
то для русских не работает. Для греческих букв в исходном файле не работает ни в каком варианте.
    Насколько понимаю, когда вим передаёт текст питону, последний почему-то уверен, что это cp1251. Есть ли способ его разубедить?
 
    Для полноты изложения пример скрипта:
import sys
#inp=sys.stdin.buffer.read().decode('cp1251')
inp=sys.stdin.read()
outp=inp + '\nαβγδ.'
sys.stdout.buffer.write(outp.encode())
# the following assumes the output should be in cp1251
# and doesn't accept Greek letters
#sys.stdout.write(outp)
 
Надеюсь, кто-нибудь сталкивался. Буду благодарен за подсказки. :-)

 
    Здравствуйте. Я даже боюсь предположить, при чем тут Вим. Хотите сказать, что тот же самый скрипт, будучи вызванным не из Вима, работает корректно?
    А вообще, я бы попробовал использовать codecs.getreader('utf-8')(sys.stdin) вместо sys.stdin. Можно, наверное, даже переопределить:
sys.stdin = codecs.getreader('utf-8')(sys.stdin)
и аналогично вывод:
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 20:36 08-05-2012 | Исправлено: ASE_DAG, 20:36 08-05-2012
Quasus

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 
Хотите сказать, что тот же самый скрипт, будучи вызванным не из Вима, работает корректно?  
 

 
Вообще-то не очень. Кодировки, будь они неладны.
 
ASE_DAG, спасибо за совет насчёт codecs. Может, придётся ещё когда-нибудь воевать со stdin.
 
Вопрос перешёл в чисто теоретическую плоскость в связи с успехами на другом направлении. Дело в том, что питоновским интерфейсом пользоваться, конечно, удобней, чем использовать питон для фильтрации. У меня этот интерфейс глючил, однако оказалось, что просто мало патчей. Более того, оказалось, что несложно собрать вим с нужным патчами да ещё и с поддержкой произвольно заданной версии питона.

Всего записей: 43 | Зарегистр. 08-05-2012 | Отправлено: 21:19 08-05-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Quasus
> питоновским интерфейсом пользоваться, конечно, удобней, чем использовать питон для фильтрации
Честно говоря, не понял, о чем речь. Что за «питоновский интерфейс», если не сложно, расскажите поподробнее или дайте хорошую ссылку. Может быть, мне (хотя я с Питоном и не сильно знаком) тоже стоит им пользоваться.

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 22:32 08-05-2012
Quasus

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG, извините, пропустил ваше сообщение.
 
Я в основном пользовался встроенной справкой по python.
 
Питоновский интерфейс — это, во-первых, возможность исполнять питоновские команды и файлы (с помощью y(3) и y(3)f, тройка — для третьего), во-вторых, доступ из питона к виму с помощью «модуля» vim, и, в третьих, возможность использовать куски кода на питоне в vim-овских функциях. Например, можно сделать такие команды:
 

Код:
 
y3 import vim
y3 l = vim.current.line
y3 vim.current.buffer.append('&'.join(l.split()))
 

 
(в конце буфера будет добавлена копия текущей строки, в которой пробелы между словами заменены на амперсанды).
 
Питон может общаться с вимом с помощью vim.command(str) — выполнение Ex-команды и с помощью vim.eval(str) — импорт выражения из вима.
 
«Выполнить файл» командой yfile/py3file — это аналог выполнения его команд с помощью y. Файл может быть скриптом, а может содержать описания функций, тогда эти функции становятся доступными в интерактивном режиме.
 
Как-то путанно получилось. Если что, то у меня в данное время всё работает, хотя я уже не очень хорошо помню, как компилировал gvim (на Windows), так что могу что-нибудь пояснить, если надо.

Всего записей: 43 | Зарегистр. 08-05-2012 | Отправлено: 21:57 13-07-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Quasus
Спасибо за раз’яснения. :-) Действительно, никогда этим не пользовался, и похоже, что зря не пользовался.

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 01:31 14-07-2012 | Исправлено: ASE_DAG, 01:32 14-07-2012
addhaloka



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Давно уже обратил внимание на глюк при включении режима редактирования клавишей «Ins» на терминале rxvt(urxvt):
 
 
 
 С клавишей «I» нормально включается. На других терминалах (lxterminal, uxterm) такого глюка нет. Вопрос, наверно, не в тему малость, но чето ни здесь, ни в гугле не нашел ответа.
 
p.s. OS Lubuntu 12.04, Vim 7.3, оболочки zsh и bash, локаль ru_RU.UTF-8; но думаю, это особого значения не имеет, т. к. тоже самое наблюдал и на фрюхе с koi8-r.

Всего записей: 7432 | Зарегистр. 13-11-2010 | Отправлено: 03:31 31-10-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
addhaloka
Баг не подтверждаю. (Ну или я не понял, в чем он должен заключаться.)  
 
Debian Wheezy/Sid.
$ aptitude versions 'rxvt ~i' '^vim$ ~i'
Package rxvt-unicode-256color:                  
i   9.15-2         testing,unstable    990  
 
Package vim:
i   2:7.3.547-5    testing,unstable    990

 
Запускаю rxvt-unicode.
$ LANG=ru_RU.UTF-8 vim
<Ins>

Вим перешел в режим вставки, никаких посторонних символов не ввелось.

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 07:07 31-10-2012 | Исправлено: ASE_DAG, 07:11 31-10-2012
addhaloka



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Может, в версии дело? У меня:
$ aptitude versions 'rxvt ~i' '^vim$ ~i'
Пакет rxvt:                                                  
i   1:2.6.4-14 precise 500  
 
Пакет rxvt-unicode-256color:
i   9.14-1 precise 500  
 
Пакет vim:
i   2:7.3.429-2ubuntu2.1 precise-updates 500
 
Хотя врядли - такую же фигню наблюдал года 3 назад на FreeBSD, там явно версии другие были. В общем, ладно, проехали - вопрос все-равно больше теоретический характер имел; заинтересовало просто, wtf Клавиша «I» работает и ладно.

Всего записей: 7432 | Зарегистр. 13-11-2010 | Отправлено: 08:00 31-10-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
addhaloka
> врядли - такую же фигню наблюдал года 3 назад на FreeBSD, там явно версии другие были
Не нахожу логики. Явно же три года назад была меньшая версия, чем стоит у меня.
 
Между 9.14-1 и 9.15-2 были изменения в работе небуквенных клавиш, не могу из чейнджлога ясно понять, что это за «пустой суффикс» и имеет ли он какое отношение к нашей проблеме, но может иметь. Вы можете это проверить, изучив этот самый патч тов. Сун Пэ, если хотите, или, что проще, поставив пакет из дебиановского репозитория да и посмотрев, что будет.
 

Цитата:
9.15 Sat Jan 21 13:36:56 CET 2012
    - remove "using namespace std" because clang erroneously
          thinks thats an error.
    - finding a matching font (e.g. bold version of the base font)
      was broken (reported by Eamon Walker).
    - fix parsing of bg image styles. They really work now.
    - fix blurring of bg image borders when using xrender.
    - fix xrender blur on common xrender implementations that do
      not behave correctly when the same pixmap is used as source
      and destination in composite operations.
    - fix regression that caused tabbed to compute the wrong size
      for tabs.
    - allow again an empty suffix in a keysym list spec (patch by
      Sung Pae)
.
    - unsupported support for sun studio's CC added.
    - fix -C option on solaris.


----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 08:54 31-10-2012 | Исправлено: ASE_DAG, 09:05 31-10-2012
addhaloka



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG 08:54 31-10-2012
Цитата:
Между 9.14-1 и 9.15-2 были изменения в работе небуквенных клавиш

Не, у меня чето уникальное) Поставил urxvt и vim тех же версий, что и у вас - все-равно буква «P» вылазит.

Всего записей: 7432 | Зарегистр. 13-11-2010 | Отправлено: 09:25 31-10-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
addhaloka
Хм... Ну, я надеюсь, вы и так проверяли на дефолтном конфиге rxvt, это напоминать нет необходимости. А вот $ echo $TERM покажите — мало ли.
 
P. S. Даже лучше не из шелла, а из Вима:
:!echo $TERM

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 17:40 31-10-2012 | Исправлено: ASE_DAG, 17:55 31-10-2012
addhaloka



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG 17:40 31-10-2012
Цитата:
Ну, я надеюсь, вы и так проверяли на дефолтном конфиге rxvt, это напоминать нет необходимости. А вот $ echo $TERM покажите — мало ли.  

Проверял по всякому:
1. без ~/.Xdefaults (~/.vimrc и конфиги zsh тоже убирал для чистоты эксперимента)
2. под рутом - там bash в качестве loginshell и настроек rxvt не делалось.

Цитата:
а из Вима:
:!echo $TERM

$ vi .zshrc
 
xterm-256color
 
Press ENTER or type command to continue
 
Под рутом:
 
# vi .profile  
 
rxvt-unicode-256color
 
Press ENTER or type command to continue

Всего записей: 7432 | Зарегистр. 13-11-2010 | Отправлено: 23:03 31-10-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
addhaloka
> xterm-256color
Очень бы хотелось именно это назвать причиной (неправильный $TERM — неправильный termcap — проблемы со вводом — это логично), однако вы говорите, что и под другим пользователем с $TERM равным rxvt-unicode-256color проблема проявляется. Боюсь, что больше идей у меня пока нет. Но я еще подумаю.

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 06:25 01-11-2012
addhaloka



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG 06:25 01-11-2012
Цитата:
Очень бы хотелось именно это назвать причиной (неправильный $TERM — неправильный termcap — проблемы со вводом — это логично), однако вы говорите, что и под другим пользователем с $TERM равным rxvt-unicode-256color проблема проявляется.

Да, без разницы. «export TERM="xterm-256color"» в ~/.zshenv прописано, заменил на rxvt-unicode-256color - ничего не изменилось. Кстати в mc Insert без глюков работает.

Всего записей: 7432 | Зарегистр. 13-11-2010 | Отправлено: 08:38 01-11-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
addhaloka
А попробуйте еще под Скрином (в rxvt, разумеется).
$ screen
[новый экран c приглашением]
$ vim
<Ins>

 
Добавлено:
Да, давайте еще посмотрим, что вообще у вас отправляет клавиша, подписанная «Insert».
 
$ xev | awk -v RS='\n\n' '/^Key[A-Z]/'
— появится белое окно, переключитесь на него и <Ins>.

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 08:49 01-11-2012
addhaloka



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG 08:49 01-11-2012
Цитата:
А попробуйте еще под Скрином (в rxvt, разумеется).  
Всё так же p. :smile:
Цитата:
Да, давайте еще посмотрим, что вообще у вас отправляет клавиша, подписанная «Insert».
 
$ xev | awk -v RS='\n\n' '/^Key[A-Z]/'
— появится белое окно, переключитесь на него и <Ins>.

Вывод такой:
KeyPress event, serial 32, synthetic NO, window 0x3000001,
  root 0x1ad, subw 0x0, time 172303838, (67,112), root:(1168,954),
  state 0x0, keycode 90 (keysym 0xff9e, KP_Insert), same_screen YES,
  XLookupString gives 0 bytes:  
  XmbLookupString gives 0 bytes:  
  XFilterEvent returns: False


Всего записей: 7432 | Зарегистр. 13-11-2010 | Отправлено: 09:46 01-11-2012 | Исправлено: addhaloka, 09:46 01-11-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
addhaloka
> KP_Insert
О! Вот теперь подтверждаю. На KP_Insert именно такая реакция. На обычный Insert ее нет. Для начала, можете в этом убедиться — на вашей клавиатуре, наверняка есть Ins не только на кейпаде, но и в основной области (у меня-то как раз кейпада нету, пришлось этот ваш KP_Insert эмулировать).
 
Как быть с локализацией бага — пока не знаю. С одной стороны, действительно похоже на баг Вима — он вроде бы не проявляется в другом софте, где бы его можно было отследить (напр. mcedit), и я нашел по меньшей мере еще один эмулятор терминала, где он проявляется — mlterm. С другой же — в современных (в смысле молодых, недавно написанных с нуля) эмуляторах терминала этой проблемы нет, по крайней мере, я обратного не обнаружил — поищите вы по разным терминалам, вам это, имея аппаратную кнопку, будет проще.


----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 17:23 01-11-2012 | Исправлено: ASE_DAG, 17:51 01-11-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
addhaloka
Впрочем, может быть это и не баг вовсе. Не берусь судить.  
Как для urxvt переопределить KP_Insert на Insert вы, конечно, уже нашли, но для порядку надо здесь написать, что для этого можно в ~/.Xdefaults (или эквивалентном месте) указать такую строку:
URxvt.keysym.KP_Insert:   \033[2~


----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 14:40 04-11-2012 | Исправлено: ASE_DAG, 14:42 04-11-2012
addhaloka



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG 13:40 04-11-2012
Цитата:
Как для urxvt переопределить KP_Insert на Insert вы, конечно, уже нашли, но для порядку надо здесь написать, что для этого можно в ~/.Xdefaults (или эквивалентном месте) указать такую строку:  
URxvt.keysym.KP_Insert:   /033[2~
Cам не нашел Так что спасибо за подсказку Добавил в ~/.Xdefaults - глюк пропал. Когда искал инфу по этому вопросу, нашел конфиг с исправлениями клавиш для rxvt + vim, но данного варианта с Insert в нём не было.

Всего записей: 7432 | Зарегистр. 13-11-2010 | Отправлено: 18:32 04-11-2012
latin



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Коллеги! Подскажите, пожалуйста, каким образом настроить Vim, чтобы окно справки по умолчанию открывалось в вертикальном окне?

Всего записей: 781 | Зарегистр. 01-03-2006 | Отправлено: 06:32 20-04-2013
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9

Компьютерный форум Ru.Board » Компьютеры » Программы » Vim


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru