Обсуждение статьи тематического каталога: vim и файлы с текстом в русских кодировках (vim rus text codepage)Ссылка на текст статьи: http://www.opennet.me/base/rus/vim_rus_text.txt.html
А можно ли в Vim'е указать кодировку файла при открытии прямо в командной строке? Я пробовал разные методы, но ничего у меня не вышло. Так и приходится до сих пор сначала открывать файл, а потом выполнять команду типа "e ++enc=cp-1251". :-(
В командной строке vim
:e ++enc=cp1251 mytext.txtВ командной строке sh
vim --cmd "edit ++enc=cp1251" -- mytext.txt
Otlichnyj script, spasibo :)
"<F10> - вызов меню выбора колировки
" переключение в меню с помощью Tab
" Меню выбора кодировки
set wildmenu
set wcm=<Tab>
menu Encoding.koi8-u :e ++enc=8bit-koi8-u<CR>
menu Encoding.windows-1251 :e ++enc=8bit-cp1251<CR>
menu Encoding.ibm-866 :e ++enc=8bit-ibm866<CR>
menu Encoding.utf-8 :e ++enc=2byte-utf-8 <CR>
map <F10> :emenu Encoding.<TAB>
пробовал почему-то tab не работает. :-(
нажимаю F10 - появляется менюшка. нажимаем Tab - переключается по кругу в менюшке. что я делаю не так? :)
>"<F10> - вызов меню выбора колировки
>" переключение в меню с помощью TabАга, этот вариант я видел, притом расширенный (с возможностью
конвертирования), но лень жать две клавиши :)Ваш подход очень оправдан, если надо открывать _большие_ файлы в известной кодировке.
Вариант с менюшками. Лично мне нравится больше :-)"<F7> EOL format (dos <CR><NL>,unix <NL>,mac <CR>)
set wildmenu
set wcm=<Tab>
menu EOL.unix :set fileformat=unix<CR>
menu EOL.dos :set fileformat=dos<CR>
menu EOL.mac :set fileformat=mac<CR>
map <F7> :emenu EOL.<Tab>"<F8> Change encoding
set wildmenu
set wcm=<Tab>
menu Enc.cp1251 :e ++enc=cp1251<CR>
menu Enc.koi8-r :e ++enc=koi8-r<CR>
menu Enc.cp866 :e ++enc=ibm866<CR>
menu Enc.utf-8 :e ++enc=utf-8<CR>
menu Enc.ucs-2le :e ++enc=ucs-2le<CR>
map <F8> :emenu Enc.<Tab>"<Shift+F8> Convert file encoding
set wildmenu
set wcm=<Tab>
menu FEnc.cp1251 :set fenc=cp1251<CR>
menu FEnc.koi8-r :set fenc=koi8-r<CR>
menu FEnc.cp866 :set fenc=ibm866<CR>
menu FEnc.utf-8 :set fenc=utf-8<CR>
menu FEnc.ucs-2le :set fenc=ucs-2le<CR>
map <S-F8> :emenu FEnc.<Tab>
При переключении Shift+ F8
(set encoding=8bit-cp855) досовский файл нормально показывается, но летит кодировка в строке сообщений, т.е. кракозяблы появляются тамКак это можно исправить?
Shift+F8 меняет внутреннюю кодировку vim, поэтому и "летит кодировка в строке сообщений".
Vim для строки собщений почему-то именно для 8bit-cp866 не учитывает кодировку вывода на экран,
которая остаётся всегда неизменной... видимо какая-то недоработка...Shift+F8 нужна для крайних случаев, когда по F8 vim неслушается.
Если же эта кодировка нужна часто и F8 не помогает, то надо или
работать в английской локали запуская: "LANG=C vim" или
сменить основную кодировку операционной системы ;)
Ну если так кординально подходить к вопросу,
то в место смены кодировки системы можно сменить
кодировку в файле сообщений ;) , который к стати имеет
кодировку 1251, и как раз он то и не перекдючается.
Я в VIM не опытный, так что не могу дать гарантии
что у меня это получится, но если получится, то поделюсь.К слову вопрос, можно ли настроить vim так, чтоб он поддерживал
разные кодировки (в файле сообщений) для одного языка?
Команда e ++enc=... конечно супер рулит, но у меня есть одна проблемка.
На моей винде дома (ага, приходится по работе иногда и в винде ковыряться) стоит вим, который нифига не умеет в koi8-r конвертить. Во все конвертит, только не в koi8-r. Причем винда WinXP. Причем на другую машину поставили туже версию вима, для эксперимента -- тот же эффект, не конвертирует. А вот на работе все работат, под той же WinXP. Че за ерунда такая, чего ему не хватает?
Спасиб.
Нашел ответ -- iconv.dll в корне вима отсутствовала. Ну кто бы мог подумать, что все дело в ней ;)
Кто знает как задать набор знаков, который выводится при печати с нажатой Alt?
(winxp)
Справедливости ради замечу что у меня это работало только на 6м vim'е, 5й нивкакую :)
Что касается формата файла, то все значительно проще. Vim в состоянии самостоятельно определить ее. В переменной fileformats по умолчанию установлены unix,dos. В моем случае это fileformats=dos,unix,mac. Таким образом Vim сначала ищет CRLF (dos), потом LF (unix) и, в конце-концов, CR (mac). Т.е. для правильного определения dos-формат должен стоять первым. Часто приходится работать с файлами во всех трех форматах. Это отлично работает для меня.
хе работает =)) вери мери гуд ;)
Спасибо!!!
в kubuntu 7.04 - работает!
Спасибо!!!
А как с помощью вима (или еще как) массово (из одной директории) сконвертить файлы из Cp1251 в utf-8?
man enconv
Блин, спасибо мужики, полезная вешь!
Добавил в закладки :)
Подскажите есть ли в vim кодировка iso-8859-5.
По-документации есть, но включить её я не смог.
Помогите плз.
Пользуюсь gVim под Windows, задал в конфигурационном файле установку "set fileencodings=utf-8,cp1251,cp866". Создал в Far файл с кодировкой cp866, при открытии его в gVim, выскакивают кракозябры. Если в ручную сменить кодировку ":e ++enc=cpp866", то отображается нормально. Подскажите, в чем дело?