Показаны сообщения с ярлыком vim. Показать все сообщения
Показаны сообщения с ярлыком vim. Показать все сообщения

2012-05-28

GVim: открываем все файлы в одном окне

Что такое GVim: немного обGUIфицированная версия Vim. Что, впрочем, не мешает использовать ее без GUI-фич, просто мне шрифты показались там глаже.
По умолчанию GVim каждый файл открывает в отдельном окне, что не есть гуд. Даже Gedit открывает их во вкладках одного окна (если не глючит). Немного почитав доки, накидал вот такой скрипт:

#!/bin/bash
GVIM_COUNT=`ps -A | grep gvim | wc -l`
if [ $GVIM_COUNT -gt 0 ]; then
/usr/bin/gvim --remote-silent "$1"
else
/usr/bin/gvim "$1"
fi

Сохранил его в домашнюю папку:
/home/kawaikunee/bin/g_vim.sh
и сделал исполняемым:
chmod +x /home/kawaikunee/bin/g_vim.sh

Скрипт ищет запущенный инстанс GVim, если его нет - то открывает файл в обычном режиме в GVim, если есть - открывает его с параметром --remote-silent, в уже существующем окне. Если запустить с этим параметром сразу, то будет сначала открыт GVim, затем в нем создан пустой документ, а потом добавлен редактируемый файл. Итого - ненужный "Безымянный документ". Поэтому сначала проверим - есть открытое окно или нет.
Дальше откроем файл с правами администратора:
sudo gedit /usr/share/applications/gvim.desktop

Находим строку "Exec=gvim" и изменяем слово gvim на полный путь к своему скрипту:
Exec=/home/kawaikunee/bin/g_vim.sh %F

Сохраняем, проверяем. Теперь, открывая файлы с помощью GVim из Nautilus, все они будут в одном окне.
P.S. Естественно, у вас должен быть установлен vim-gnome.

2011-04-01

VIM: убрать подчеркивание в html-тегах ссылок

Меня это немного достало. Если описывать ссылку на нескольких строках, то все они будут подчеркнуты. Вот как можно убрать это (найдено здесь):
1) Создать каталог для синтаксиса, если еще не создан
mkdir -p ~/.vim/syntax
2) Скопировать файл синтаксиса html по умолчанию в этот каталог
cp /usr/share/vim/vim72/syntax/html.vim ~/.vim/syntax/ 
3) Открыть файл для редактирования
vim ~/.vim/syntax/html.vim
4) Найти в нем строку
HtmlHiLink htmlLink Underlined
5) Закомментировать ее (мне не помогло) или изменить Underlined на что-то другое, например htmlBold.
Перезапускаем VIM - проблема решена.

2009-08-18

Редактируем текст в Firefox через Vim

Сразу к делу. Для того, чтобы редактировать тексты в полях форм интернет-страниц, для браузера Firefox есть замечательный плагин "It's all text!". Его настройки позволяют задать в том числе и горячую клавишу, что само по себе прекрасно. Представьте - переходите в поле ввода, чтобы отписаться на форуме или в гостевой, нажимаете сочетание клавиш - и пишете в вашем любимом редакторе, а сохраняя текст тем самым отправляете его в браузер. Красота!
Но что, если вы хотите воспользоваться консольным Vim?
При настройке плагина нужно указать полный путь к файлу редактора. Ну и запустим мы Vim. Ну и будет он где-то в бэкграунде. Неудобно! Нужно завернуть vim в консоль.
Хотел бы я воспользоваться таким способом, да только параметры запуска плагин не передает как надо. Что, руки вверх?
На помощь к нам спешит скрипт из трех строк. Я накидал его на питоне, но наверняка можно и десятком других способов. Делаем скрипт исполняемым и в настройках плагина указываем путь к нему. Назначаем горячую клавишу (у меня это Alt-W) и радуемся удобству.

#!/usr/bin/env python
import os,sys
os.system('gnome-terminal -e "vim %s" ' % sys.argv[1])

Или на bash:

#!/bin/bash
gnome-terminal -e "vim \"$*\""

2009-08-11

VIM: как назначить запуск скриптов на горячую клавишу

Задача: по нажатию F5 передавать скрипт разным программам, в зависимости от расширения файла (как это реализовано в SciTE).
Вот пара вариантов ее решения. Просто добавим в ~/.vimrc один из этих блоков.

1) Написание функции:

function Run()
let $ext=expand("%:e")
if $ext=="py"
!/usr/bin/env python "%"
elseif $ext=="php"
!/usr/bin/env php "%"
elseif $ext=="html" | $ext=="mako" | $ext=="htm"
!firefox "%"
endif
endfunction
map <F5> :call Run()

Здесь мы получаем расширение файла % через модификатор :e, присваиваем его переменной $ext, после чего по этому признаку решаем, что будем делать с файлом. Потом привязываем вызов функции к горячей клавише F5.

2) Использование автокоманд:

autocmd BufEnter *.py map <F5> !/usr/bin/env python %
autocmd BufLeave *.py unmap <F5>
autocmd BufEnter *.php map <F5> !/usr/bin/env php %
autocmd BufLeave *.php unmap <F5>

Теперь при редактировании скрипта за F5 закреплена команда запуска, а при потере фокуса эта привязка сбрасывается.

Оба способа имеют право на существование, но я остановился на первом.

P.S. Мой .vimrc