Загрузка...
Linux
Новости, статьи, обсуждения, - все что связано с GNU Linux, FreeBSD, OpenBSD, Sun Solaris, Mac OS X и другими системами. Если вы интересуетесь данной темой - добро пожаловать в сообщество.
     

Изменяем внешний вид Vim. Часть первая.

20.08.09, 11:08
Автор ggg

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

 

Начнем с классики — изменения шрифта в GVim-е:

:set guifont=Courier\ 14

Как видно из приведенной выше команды, шрифт устанавливается с помощью переменной guifont, названия шрифта, а также его размера. Пробельные символы в названии и размере шрифта необходимо экранировать.

Если вы хотите указать несколько шрифтов (допустим в системе может не оказаться первого нужного вам шрифта), то это можно сделать, перечислив их названия через запятую:

:set guifont=Courier\ 14, Arial\ 10

Также вы можете вызвать диалог выбора шрифта, выполнив команду:

:set guifont=*

Все приведенные выше команды могут быть помещены в файл настроек (~/.vimrc) и будут выполняться автоматически, при старте редактора (перед помещением в файл настроек необходимо убрать двоеточие в начале команды).

Еще одним вариантом является установка конкретного шрифта для некоторого типа файла. Для этого в файле настроек нужно прописать строчку вида:

autocmd BufEnter *.txt set guifont=Arial\ 12

Работая в командной строке чаще всего мы можем наблюдать серый текст на черном фоне. Согласитесь, что если вы работаете с большими объемами текста (например с исходными кодами программ на языке программирования C++), то достаточно сложно обходиться без выделения текста. В Vim-е можно выделять текст по-разному, используя различные цветовые схемы. Существует встроенный набор цветовых схем. Выбрать одну из них можно следующей командой:

:colorcheme имя-схемы

К примеру, мне очень нравится схема desert, включить которую можно командой

:colorscheme desert

Перебрать все цветовые схемы можно набрав в Vim-е команду

:colorscheme

И нажимая клавишу < Tab> для подстановки имени следующей схемы.

Ясно то, что цветовая схема влияет не только на цвет фона и цвет текста, но и влияет на способ подсветки исходного кода, ошибок и другие методы выделения текста. Чтобы заставить Vim выделять некоторую последовательность символов определенным образом используется команда match. Синтаксис этой команды таков:

:match Group /pattern/

Как видно, команда принимает два аргумента — название группы к которой будет принадлежать выделяемый текст и шаблон, по которому ищется группа символов. Для того, чтобы увидеть список всех групп и способов их выделения в текущей цветовой схеме нужно выполнить следующую команду:

:so $VIMRUNTIME/syntax/hitest.vim

Рассмотрим пример использования данной возможности: допустим, вы хотите ограничить количество символов в строке числом 80, для того, чтобы полученный текст было легко воспринимать и было бы неплохо, если бы редактор помечал ошибочно длинные строки самостоятельно. Нам поможет следующая команда:

:match ErrorMsg /\%>79v.\+/

Разберем команду по частям:

  1. ErrorMsg — применим к найденной последовательности символов шаблон «ошибка»

  2. последовательность символов будем искать по следующему правилу

    1. \%> - помечаем символы после столбца номер которого указан справа от данной команды

    2. 79 — номер столбца (нумерация с нуля)

    3. v — в сочетании с предыдущей командой означает то, что следующая часть будет интерпретироваться особым образом (подробнее смотрите :help magic)

    4. .\+ — один или более любых символов

Если вы не нашли подходящую вам стандартную группу символов, то вы можете создать свою с помощью команды вида:

:highlight MyGroup ctermbg=red guibg=red \ctermfg=yellow guifg=yellow term=bold

Эта команда создает группу с названием MyGroup и к данной группе применяются следующие цветовые настройки:

  1. ctermbg — цвет фона в консольной версии vim

  2. guibg — цвет фона в GVim-е

  3. ctermfg — цвет текста в консольной версии vim

  4. guifg — цвет текста в GVim-е

  5. term — параметры текста в консольной версии vim (например bold — жирный текст)

Теперь, после того, как шрифт и цветовая схема у нас настроены, рассмотрим еще одну полезную опцию — статусную строку. Если не изменять стандартные настройки, то статусная строка, которая находится внизу редактора показывает номер текущей строки и столбца и имя открытого файла. Если начать вводить какую-то команду (например :w), то статусная строка исчезает. Давайте сделаем ее более информативной и удобной для работы. Команда для изменения внешнего вида выглядит следующим образом:

:set statusline=format

Здесь format — строка наподобие той, что передается функции printf языка программирования Си. Чтобы узнать все возможные опции, которые можно выводить в командной строке можно ознакомиться со справкой (команда :help 'statusline'). Давайте добавим в статусную строку следующую информацию:

  1. имя редактируемого файла

  2. формат строк (DOS, UNIX)

  3. номер текущей строки и столбца

  4. длина текущего файла (в строках)

:set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [POS=%04l,%04v]\ [LEN=%L]

Для большей наглядности различные части статусной строки выделены квадратными скобками. Как можно заметить, после выполнения данной команды ничего не изменилось. Это связано с тем, что по-умолчанию Vim не показывает пользовательскую статусную строку вообще. Это можно исправить следующей командой:

:set laststatus=2

После всех перечисленных выше изменений внешнего вида работа с редактором Vim станет намного удобнее и проще. В следующей статье мы разберемся как добавлять свои собственные пункты меню, иконки в toolbar, как изменить строку с табами и много другое.


P.s. Данная статья основана на материалах книги Hacking Vim от Kim Schulz

 

ключевые слова

Комментарии

Спасибо за пост! Мне бы хотелось еще полезных заметок про vim. Все таки сильная штука для прожженных программеров! Вот например как для разных типов файлов (.rb и .cpp) сделать свой размер отступа (2 и 4 соответственно)?

autocmd BufEnter *.cpp set shiftwidth=4
autocmd BufEnter *.cpp set tabstop=4
autocmd BufEnter *.rb set shiftwidth=2
autocmd BufEnter *.rb set tabstop=2

это соотвественно в конфиг .vimrc

еще можно использовать ftplugin, чтобы не засорять глобальный .vimrc

Нет, я всё-таки не пойму, чем вим (и емакс заодно) так всех цепляют =)
Вот мне наиболее комфортно писать в gedit (с плагинами). Нетбинс и эклипс я недолюбливаю за тормознутость и монструозность. Но сколько раз не пытался перейти на вим, так и не получилось.
И вопрос, собственно: дайте мне три или четыре пункта, за которые вы особенно любите вим.
/* Не холивар, просто интересно */

Очень большая возможность кастомизции. Скейчас читаю книженцию про Vim и понимаю, что в принципе в Vim-е есть все и из Vim-a можно сделать все что угодно. К примеру, в NetBeans-е мне нравятся такие штуки как svn annotations, вот я думаю пройдет месяцок, я подпрокачаюсь еще немного и сделаю такую возможность. После чего преимущества NetBeans-а станут сильно сомнительными.

Еще меня поражает степень автоматизации в Vim-е. Допустим, надо с массивом строк сделать определенные действия (например удалить третье слово), мы показываем Vim-у один раз что мы от него хотим, а потом говорим, а теперь повтори это 1000 раз и он делает это для всех 1000 строк которые нам надо обработать. Конечно можно сказать, что тоже самое можно сделать awk-ом или perl-ом, но, как показывает практика, для этого придется выходить из редактора, а мне лениво :)

Вот как-то так

Вот, кстати, зачетный Vim на ЛОР-е, помню видел его еще в 2007-м году как он там только появился http://www.linux.org.ru/view-message.jsp?msgid=2022213

О! У меня такое же непонимание. vim – это, конечно, круто, но мне он требуется только тогда, когда мне нужно без X-ов работать. А так, я предпочитаю конвенциональные IDE. Зачем что-то “пилить”, когда ты все можешь получить из коробки с минимальной настройкой.

mshahanov, монструозность – это то, чем приходится жертвовать ради остальных плюсов. Нужно понять разработчиков – нельзя же наклепать сотню разных мелких продуктов для удовлетворения всех возможных запросов таких как мы. Что насчет тормознутости, то я сам пользую Eclipse и Visual Studio (было дело) и все, вроде, работает шустро. По крайней мере, я не жалуюсь.

Goganchic, по-моему, пример с 1000 строками очень сомнительный. Я не могу придумать ни одного случая, когда бы мне пришлось проделать 1000 одинаковых действий в файле.

Ну как сомнительный, просто если я хочу видеть возможность автоматизации некоторых фишек с помощью вима – я ее вижу, а если ты не хочешь – ты ее не видишь, – вот в чем все дело.

Как я знаю, многие использую такую полезную штуку как expandtab (замена табов пробелами) и поэтому такая команда в .vimrc бывает очень полезной:

autocmd BufEnter Makefile set noexpandtab

она позволяет автоматически отключать expandtab при редактировании Makefile-а

VIM – лучший редактор. Те кто его заюзали с пониманием – потом не представляют, как обходились без него раньше.

Абсолютно согласен: к нему привыкаешь буквально за месяц и если ты к нему привыкаешь, то это навсегда.

а в Vim можно вызывать Shell в буфер?

аноним 9 ноября 2011, 0:00
0

подскажите пжл, как сохранить выбранную цветовую схему в VIM, чтобы она не менялась на стандартную при каждом запуске редактора…

прописать команду в .vimrc ?

да, уже разобрался – оказалось как всегда проще чем я думал) Не подскажите пару полезных плагинов для VIMa?

vim сам может контролировать ширину текста
:set textwidth=70

Войдите, чтобы оставить комментарий