LINUX.ORG.RU

Избранные сообщения Dvorak

Beta-тест C# анализатора PVS-Studio на Linux и macOS

Форум — Development

Всё больше пользователей C# анализатора PVS-Studio интересуются возможностью его использования для проверки C# кода на Linux и macOS. И сегодня у нас хорошие новости.

Мы ведём активные работы по портированию нашего C# анализатора на платформу .NET Core, а также занимаемся обеспечением его работоспособности на Unix’о-подобных ОС. В наших планах выпустить PVS-Studio C# для .NET Core на платформах Linux и macOS в конце апреля - первой половине мая 2020.

Мы планируем начать бета-тест в начале-середине апреля. Если вам интересно принять в нём участие, заполните эту форму: https://www.viva64.com/ru/pvs-studio-eap/

Когда beta тест стартует, мы вышлем вам инструкции по установке анализатора и пробную лицензию.

 , , ,

Andrey_Karpov_2020
()

Повторяющиеся команды в терминале

Форум — General

Доброго времени суток. Я в Линуксе новичок. Вот столкнулся со следующим неудобством и не смог нагуглить как это решить. Если в терминале Дебиан (2.6.26-2-686 #1 SMP Sun Mar 4 22:19:19 UTC 2012 i686 GNU/Linux) вводить одну и туже команду несколько раз, то при испоьлзовании навигации стрелками , чтобы прокрутить историю я вижу одну и ту же команду столько раз сколько и вводил. Как это исправить. Иными словами как обеспечить сохранение в истории ввода терминала, только уникальных команд? Заранее благодарен.

 , ,

CrazyEddie
()

Локальная синхронизация заметок Android + Linux

Форум — Mobile

Добрый день. Может кто знает программу для создания локальных заметок на Android и синхронизации их с Linux PC ? Для календаря, контактов и задач использую CalDAV/CardDAV. Есть ли что-то подобное под заметки?

На Linux использую CherryTree, но программы под Android похоже что нет, для таких заметок.

Google Notes, Mobisle notes, Evernote и другие не предлагать.

 , , ,

TheLinuxUser
()

awesome + i3lock + lockscreen bg color

Форум — Desktop

В rc.lua от awesome у меня такая запись:

local function respawn_with_shell(pname, cmd)
    if not cmd then
        cmd = pname
    end
    awful.spawn.with_shell("pkill -9 " .. pname)
    os.execute("sleep 0.5")
    awful.util.spawn_with_shell(cmd)
end

respawn_with_shell("xautolock", "xautolock -detectsleep -time 10 -locker i3lock &")

Все работает, но экран «скринсейвера» белый. Попробовал так:

respawn_with_shell("xautolock", "xautolock -detectsleep -time 10 -locker i3lock --colour=ff66cc &")

Но он все равно белый. Как изменить цвет локскрина?

 ,

dissident
()

[РЕШЕНО] Как настроить внешний вид Qt5 приложений в Xfce на Debian Stretch?

Форум — Desktop

Много чего перепробовал, не помогло. Прочитал это: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=822697 , но рецепт не сработал. Я прописал в ~/.profile в низ строчки

export QT_STYLE_OVERRIDE=gtk2
export QT_QPA_PLATFORMTHEME=gtk2
, но это тоже не сработало. Пакет qt5-gtk-platformtheme установлен, а пакет libqt5libqgtk2 я вообще не смог найти, его походу удалили.

 , , ,

Vsevolod-linuxoid
()

Awesome tasklist

Форум — Desktop

Долгое время изучал Wiki, но на многие вопросы так и не нашел ответов, поэтому начал изучать lua код. И в результате этого изучения, родилась эта статья(перенесена на wiki). Опытные, подскажите, может где то есть возможность оптимизировать описанный код.

Панель задач - отображает по умолчанию клиенты с активного тега/тегов.

Перед началом работы скопируйте библиотеки в домашний каталог, если до сих пор этого не сделали.

mkdir -p ~/.config/awesome/themes
cp /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.lua
cp -R /usr/share/awesome/lib/* ~/.config/awesome/
cp -R /usr/share/awesome/themes/* ~/.config/awesome/themes/

Вообще, за обработку панели задач отвечает файл awful/widget/tasklist.lua

Так что если возникнет желание ознакомится со всеми возможностями панели задач, изучите этот файл. Также для работы этого файла потребуются другие библиотеки lua (вызываемые оттуда функции и т.д.), они прописаны в начале файла, это те самые require. Имейте в виду, что код для 3.4 и 3.5 в библиотеке tasklist, как и названия функций в них довольно существенно отличается.

==Управление списком задач==

Для управления открытми клиентами существуют следующие клавиши:

Mod4 + Shift + r	- Перерисовать активное окно.
Mod4 + m		- Развернуть на весь экран.
Mod4 + n		- Свернуть.
Mod4 + Control + n	- Восстановить.
Mod4 + f		- Полноэкранный режим.
Mod4 + Shift + c	- Убить выбранный клиент.
Mod4 + t		- Прикрепить поверх всех.
Кстати, если эти клавиши вас не устравивают, вы в любой момент можете их переопределить, для этого в rc.lua найдите функцию awful.key отвечающую за нужные вам клавиши и измените их.

==Разбираем rc.lua==

Разбирая rc.lua можно обнаружить следующий код, связанный с панелью задач

mytasklist = {}			--создаем таблицу панели задач
mytasklist.buttons = awful.util.table.join(						--прикрепляем клавиши мыши к панели задач
                     awful.button({ }, 1, function (c)				--нажатие левой кнопки
                                              if c == client.focus then		--свернуть/развернуть приложение
                                                  c.minimized = true
                                              else
                                                  -- Without this, the following
                                                  -- :isvisible() makes no sense
                                                  c.minimized = false
                                                  if not c:isvisible() then
                                                      awful.tag.viewonly(c:tags()[1])
                                                  end
                                                  -- This will also un-minimize
                                                  -- the client, if needed
                                                  client.focus = c
                                                  c:raise()
                                              end
                                          end),
                     awful.button({ }, 3, function ()			--нажатие правой клавиши
                                              if instance then		--отображает список всех клиентов/приложений
                                                  instance:hide()
                                                  instance = nil
                                              else
                                                  instance = awful.menu.clients({
                                                      theme = { width = 250 }
                                                  })
                                              end
                                          end),
                     awful.button({ }, 4, function ()				--колесо прокрутки
                                              awful.client.focus.byidx(1)  --перейти на следующий клиент
                                              if client.focus then client.focus:raise() end
                                          end),
                     awful.button({ }, 5, function ()				--колесо прокрутки
                                              awful.client.focus.byidx(-1)	--перейти на предыдущий клиент
                                              if client.focus then client.focus:raise() end
                                          end))
....
    -- Create a tasklist widget  - создание виджета tasklist
    mytasklist[s] = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, mytasklist.buttons)
.... 
    layout:set_middle(mytasklist[s])				--Располагаем список задач в центре панели
Если вам не нужна прокрутка на панели задач, то закоментируйте/удалите код отвечающий за нее:
--awful.button({ }, 4, function ()				--колесо прокрутки
--                                 awful.client.focus.byidx(1)								--перейти на следующий клиент
--                                 if client.focus then client.focus:raise() end
--                                 end),
--awful.button({ }, 5, function ()				--колесо прокрутки
--                                   awful.client.focus.byidx(-1)	--перейти на предыдущий клиент
--                                   if client.focus then client.focus:raise() end
--                                  end))
И добавьте завершающую скобку после закомментированного кода, иначе выдаст ошибку
)

===Варианты для правой кнопки мыши===

====Закрыть приложение====

Для того, чтобы при нажатии правой кнопки мыши мы могли закрывать приложение (как в OpenBox или Tint2), а не открывать список меню, переделайте код (или закомментируйте его, если вы не планируете использовать правую клавишу для панели задач).

awful.button({ }, 3, function ()
                      if instance then
                       instance:hide()
                       instance = nil
                      else
                       instance = awful.menu.clients({
                      theme = { width = 250 }
                     })
                     end
                    end),
На следующий
awful.button({ }, 3, function (c)
    c:kill()
end ),

====Альтернативное меню====

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

awful.button({ }, 3, function (c)
          if instance then
              instance:hide()
              instance = nil
           else
              instance = context_menu(c)
           end
         end ),
Затем где нибудь в начале файла rc.lua добавьте функцию context_menu:
function context_menu(c)
    if c.minimized then      --меняем текст элемента меню в зависимости от состояния
         cli_min = "Развернуть"
    else
         cli_min = "Свернуть"
    end
    if c.ontop then
         cli_top = "★ Поверх всех"
     else
         cli_top = "  Поверх всех"
    end
    if awful.client.floating.get(c) then
         cli_float = "★ Floating"
     else
         cli_float = "  Floating"
     end
     --создаем список тегов(в виде подменю), для перемещения клиента на другой тег
     tag_menu = { }
     for i,t in pairs(tags.names) do
          if not tags[c.screen][i].selected then			--удаляем из списка выбранный тег/теги
              table.insert(tag_menu, { tostring(t), function() awful.client.movetotag(tags[c.screen][i]) end } )
          end
     end
     taskmenu = awful.menu({ items = { { "Переместить на", tag_menu },
                                       { cli_min, function() c.minimized = not c.minimized end },
                                       { "Fullscreen", function() c.fullscreen = not c.fullscreen end, beautiful.layout_fullscreen },
                                       { cli_float,  function() awful.client.floating.toggle(c) end },
                                       { cli_top, function() c.ontop = not c.ontop end },
                                       { "Закрыть", function() c:kill() end },
                                      width = 150
                                     } )
     taskmenu:show()
     return taskmenu
end

==Отобразить только иконки или текст==

Если вас не устраивает отображение текста и иконок одновременно (например вы большой любитель Unity или Win7), то можно настроить Awesome для отображения только иконок или только текста у приложений. Есть один недостаток, если для приложения не назначено иконки, то соответсвенно и отображать будет нечего (у меня такая ситуация наблюдалась с терминалом xterm, если у вас похожая ситуация, то назначьте иконку по умолчанию для приложений не имеющих собственных иконок(описано ниже).

Откройте ~/.config/awesome/awful/widget/tasklist.lua и в функции widget_tasklist_label_common() (для 3.4) или tasklist_label (для 3.5) замените return text, bg.... на следующий код:

return not theme.tasklist_only_icon and text or '', bg, status_image, not tasklist_disable_icon and c.icon or nil

Затем, создайте переменную в вашем theme.lua со следующим содержанием:

--для отображения только иконок
theme.tasklist_only_icon = true
--для отображения только текста
tasklist_disable_icon = true

Примечание: Не определяйте как одновременно обе этих переменных, иначе вы вообще не увидите своих задач.

Есть еще один способ убрать текст в Awesome 3.4 (к сожалению в 3.5 код вызываемой функции был изменен и поэтому этот способ в нем не работает), но здесь все манипуляции мы будем производить только с файлом rc.lua. Найдите следующий код:

mytasklist[s] = awful.widget.tasklist(function(c)
                                              return awful.widget.tasklist.label.currenttags(c, s)
                                          end, mytasklist.buttons)
И замените его на :
 mytasklist[s] = awful.widget.tasklist(function(c)
                              local task = { awful.widget.tasklist.label.currenttags(c, s) }
                              return '', task[2], task[3], task[4]
                          end, mytasklist.buttons)
В принципе данный код аналогичен первому, только здесь мы производим дополнительное действие.

Аналогичным способом можно удалить и иконки в Awesome 3.4. Откройте ваш rc.lua, найдите

mytasklist[s] = awful.widget.tasklist(function(c)
                                              return awful.widget.tasklist.label.currenttags(c, s)
                                          end, mytasklist.buttons)
И замените его на :
 mytasklist[s] = awful.widget.tasklist(function(c)
                              local task = { awful.widget.tasklist.label.currenttags(c, s) }
                              return task[1], task[2], task[3], nil
                          end, mytasklist.buttons)

==Иконка по умолчанию==

Для некоторых приложений не установлены иконки по умочанию (обычно это терминалы), и если вы, например, используете только иконки в панели задач, или используете отображение приложений в тегах, то приложения без иконок вы просто не увидите. Для решения этой проблемы отредактируйте функцию "tasklist_update" в файле ~/.config/awesome/awful/widget/tasklist.lua. В функции tasklist_update перед строкой table.insert вставьте следующий код:

if not c.icon then
    c.icon = capi.image("path/to/icon/default_icon.png")
end

==Настройка внешнего вида==

Для настройки панели задач, в theme.lua вы можете определить следующие переменные:

===Awesome 3.5===

theme.tasklist_fg_normal - цвет текста панели задач, если значение не определено, то используется значение theme.fg_normal

theme.tasklist_bg_normal - цвет фона панели задач, если значение не определено, то используется значение theme.bg_normal

theme.tasklist_fg_focus - цвет текста активного приложения, если значение не определено, используется значение theme.fg_focus

theme.tasklist_bg_focus - цвет фона активного приложения, если значение не определено, то используется значение theme.bg_focus

theme.tasklist_fg_urgent - цвет текста «срочного» приложения, если не определено, то будет использоваться значение из theme.fg_urgent

theme.tasklist_bg_urgent цвет фона «срочного» приложения, если не определено, то будет использоваться значение theme.bg_urgent

theme.tasklist_fg_minimize - цвет текста свернутого приложения, если не определено, то будет использоваться значение из theme.fg_minimize

theme.tasklist_bg_minimize - цвет фона свернутого приложения, если не определено, то будет использоваться значение из theme.bg_minimize

theme.bg_image_normal - позволяет установить изображение для неактивных в данный момент клиентов

theme.bg_image_focus - позволяет установить фоновое изображение для активного клиента

theme.bg_image_urgent - позволяет установить фоновое изображения для «срочного» клиента

theme.bg_image_minimize - позволяет установить фоновое изображение для свернутого клиента

theme.tasklist_disable_icon - позволяет отключить отображение иконок, если значение равно true

theme.tasklist_font - шрифт для панели задач, если не определено, то будет испльзоватся шрифт из theme.font

theme.tasklist_sticky - позволяет установить текст для «липкого» клиента, если значение не установлено, то используется «▪»

theme.tasklist_ontop - позволяет установить текст/символ для приложения «поверх всех», если значение не установлено, то используется '⌃'

theme.tasklist_floating - текст для приложения в «плавающем» режиме, если значение не установлено, то используется '✈'

theme.tasklist_maximized_horizontal - текст для развернутого по горизонтали приложения, если на установлено, то используется '⬌'

theme.tasklist_maximized_vertical - текст для приложения развернутого по вертикали, если на установлено, то используется '⬍'

===Awesome 3.4===

Здесь возможностей по настройке намного меньше, это еще одна причина перейти на более новую версию.

theme.tasklist_fg_focus - цвет текста активного приложения, если значение не определено, используется значение theme.fg_focus
theme.tasklist_bg_focus - цвет фона активного приложения, если значение не определено, то используется значение theme.bg_focus
theme.tasklist_fg_urgent - цвет текста "срочного" приложения, если не определено, то будет использоваться значение из theme.fg_urgent
theme.tasklist_bg_urgent цвет фона "срочного" приложения, если не определено, то будет использоваться значение theme.bg_urgent
theme.tasklist_fg_minimize - цвет текста свернутого приложения, если не определено, то будет использоваться значение из  theme.fg_minimize
theme.tasklist_bg_minimize - цвет фона свернутого приложения, если не определено, то будет использоваться значение из  theme.bg_minimize
theme.tasklist_floating_icon -  иконка для приложения в "плавающем" режиме
theme.tasklist_font - шрифт для панели задач, если не определено, то будет испльзоватся шрифт из theme.font

===Высота панели ===

Если вас не устраивает стандартная высота панели задач, то ее можно изменить, для этого найдите в rc.lua код отвечающий за создание контейнера mywibox и измените его следующим образом:

mywibox[s] = awful.wibox({ position = "top", height = 24, screen = s })
Здесь вы можете изменить ее расположение, top - сверху, bottom - снизу. height - это высота панели. Или даже можете создать себе вторую панель, переместив панель задач сверху вниз(на примере 3.4):
bottomwibox = {}
bottomwibox[s] =  awful.wibox({ position = "bottom", height = 27, screen = s })
bottomwibox[s].widget = {
              {
                  mylauncher,
                  layout = awful.widget.layout.horizontal.leftright
              },
          mytasklist[s],
          layout = awful.widget.layout.horizontal.rightleft
      }

==Порядок открытых приложений==

По умолчанию новое приложение отображается слева от открытых ранее. Но если вы привыкли к другому, например в Gnome или KDE, то можно настроить, чтобы вновь открываемые приложения открывались справа, т.е. список задач был отсортирован по запуску, где первым в списке будет первое открытое приложение, а последним соответственно последнее. Для этого необходимо открыть файл ~/.config/awesome/awful/widget/tasklist.lua. Все манипуляции с этими файлами лучше всего делать когда они находится в домашнем каталоге, чтобы если вы что-то испортите, можно было их легко восстановить. Итак, найдите в этом файле функцию "function tasklist_update" в ней есть следующая строка:

"'Awesome 3.4"'

table.insert(shownclients,c)
Замените ее на:
table.insert(shownclients, 1, c)
"'Awesome 3.5"'
table.insert(clients, c)
Замените ее на:
table.insert(clients, 1, c)
Перезапустите Awesome.

==Ширина приложений в списке задач ==

Если вас не устраивает, то, что одно запущенное приложение можент занимать все доступное пространоство, на панели задач, то это поведение можно немного изменить. Для этого потребуется отредактировать файл ~/.config/awesome/awful/widget/tasklist.lua

===Awesome 3.4===

Найдите функцию new, в ней необхоидмо изменить

layout = layout.horizontal.flex
На тот вариант расположения виджетов, который вас устраивает. Их полный список находится в файлах awful/widget/layout horizontal.lua и vertical.lua
layout = layout.horizontal.leftright
===Awesome 3.5===

Найдите функцию tasklist.new затем замените

local w = base_widget or flex.horizontal()
Например следующим кодом:
local w = base_widget or fixed.horizontal()
А в начало файла добавьте
local fixed = require("wibox.layout.fixed")
Если предоженный вариант вас не устраивает, можете поэкспериментировать с layout'ами, они находятся в каталоге ~/.config/awesome/wibox/layout

Правда ширина каждого клиента будет зависеть от названия, в принципе это тоже можно поправить если вам требуется фиксированная ширина клиентов, для этого нужно изменить в файле tasklist.lua функцию widget_tasklist_label_common (3.4) или tasklist_label (в 3.5): В начало файла поместите

local string = string
Затем перед строкой "if capi.client.focus == c then" поместите следующий код:
if #name >20 then
    name = string.sub(name,1,20)
end
Здесь мы ограничиваем название 20-ю символами, если вам требуется другое значение, измените его.

Есть еще один ньюанс, при изменении испльзуемой схемы(layout), приложения теперь перестают масштабироваться, и в результате их теперь на панель входит штук 5, конечно это можно изменить, но изменений потребуется достаточно много и они уже выходят за рамки данной статьи.

==Список клиентов ==

По умолчанию в файле rc.lua для обработки списка клиентов для tasklist используется следующий код:

Awesome 3.5
mytasklist[s] = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, mytasklist.buttons)

Awesome 3.4
mytasklist[s] = awful.widget.tasklist(function(c) 
                               return awful.widget.tasklist.label.currenttags(c,s)
                          end, mytasklist.button)
Т.е. изучив данный код, можно понять, что на панели задач, будут отображены клиенты для текущего тега. Если данное положение дел вас не устаривает, то вы можете например отобразить все клиенты со всех тегов, для этого нужно заменить соотвествующую функцию на одну из следующий:
Awesome 3.4
awful.widget.tasklist.label.allscreen		- для отображения клиентов со всех экранов
awful.widget.tasklist.label.alltags		- для отображения клиентов со всех тегов текущего экрана
awful.widget.tasklist.label.currenttags		- для отображения клиентов с текущего тега
awful.widget.tasklist.label.focused		- для оторажения только клиентов в фокусе

Awesome 3.5
awful.widget.tasklist.filter.allscreen		- для отображения клиентов со всех экранов
awful.widget.tasklist.filter.alltags		- для отображения клиентов со всех тегов текущего экрана
awful.widget.tasklist.filter.currenttags	- для отображения клиентов с текущего тега
awful.widget.tasklist.filter.minimizedcurrenttags	- для отображения свернутых клиентов на текущем теге
awful.widget.tasklist.filter.focused		- для оторажения только клиентов в фокусе
Помимо этого, есть еще ряд приложений, которые не будут отображаться в списке клиентов, эта функция прописана в следующем коде:
Awesome 3.5 - tasklist.lua - function tasklist_update
if not (c.skip_taskbar or c.hidden
            or c.type == "splash" or c.type == "dock" or c.type == "desktop")
            and filter(c, s) then
            table.insert(clients, c)
        end
Похожий код используется и в 3.4, но без строки "and filter(c, s)". Т.е. здесь мы пропускаем часть клиентов, если какие то из них вам все же нужны, удалите код отвечающий за них.

==Сигналы==

Сигналы - это система сообщений которую рассылает ядро Awesome для управления виджетами, клиентами, тегами и т.д. Подробне ознакомится с системой сигналов вы можете [Signals/ru|здесь]. Итак, поддерживаются следующие сигналы:

    tag.attached_connect_signal(screen, "property::selected", u) 
    tag.attached_connect_signal(screen, "property::activated", u)
    capi.client.connect_signal("property::urgent", u)
    capi.client.connect_signal("property::sticky", u)
    capi.client.connect_signal("property::ontop", u)
    capi.client.connect_signal("property::floating", u)
    capi.client.connect_signal("property::maximized_horizontal", u)	
    capi.client.connect_signal("property::maximized_vertical", u)
    capi.client.connect_signal("property::minimized", u)
    capi.client.connect_signal("property::name", u)
    capi.client.connect_signal("property::icon_name", u)
    capi.client.connect_signal("property::icon", u)
    capi.client.connect_signal("property::skip_taskbar", u)
    capi.client.connect_signal("property::screen", u)
    capi.client.connect_signal("property::hidden", u)
    capi.client.connect_signal("tagged", u)
    capi.client.connect_signal("untagged", u)
    capi.client.connect_signal("unmanage", u)
    capi.client.connect_signal("list", u)
    capi.client.connect_signal("focus", u)
    capi.client.connect_signal("unfocus", u)
Названия сигналов говорят сами за себя, единственное, первые 2 улавливают события от тегов, для того, чтобы при смене тега отобразить актуальный список клиентов на нем. После того, как будет принято данное событие будет вызвана функция u:
u = function () tasklist_update(screen, w, buttons, filter, data, style, uf) end
Т.е. панель задач будет обновлена. Так что если вы где то будете менять какое то свойство для клиента, можете не беспокоиться, оно будет отловлено и корректно обработано. Если же нужного вам сигнала здесь нет, то вы всегда можете создать свой.

 

Faiver
()

Awesome WM 4.0

Галерея — Скриншоты

Перебрался на четвертую версию awesome, в честь этого решил отметиться в галерее напоминанием о данном wm и своих конфигах.

В процессе перехода потерялись: виджет для аудио плеера exaile, система группировки окон с табами в заголовке. По поводу виджета, были идеи как его переписать в сторону универсальности, но в итоге забил отодвинув эту затею в далекое и неопределенное будущее. Группировку окон просто выкинул, там нужно было править изрядный говнокод, а грядущие инновации самого wm грозят сделать эту работу бесполезной. Да и не пользовался я ей практически.

В процессе перехода нашлись: минималистичный «дефолтный» конфиг (по идее должен из коробки работать на любой машине), унифицированная система хоткеев, продвинутая подсказка по ним, слегка переработанная система полуручного тайлинга, новая зеленая тема. Последнюю делал фактически из желания попробовать icon only тасклист с поддержкой цветов темы, получилось как-то так.

Скринов больше нет (лень), но есть небольшое демо видео.

Конфиги можно посмотреть все там же.

>>> Просмотр (1920x1080, 156 Kb)

 ,

Worron
()

Сделать из vim C++ IDE, подскажите, пожалуйста, список дополнений

Форум — Development

Предъистория: несколько раз пытался пользоваться vim и каждый раз бросал. Всякий раз он мне казался неудобным. В этот раз плюнул на стандартные настройки, перенастроил его по-нормальному и да, теперь им сходу стало можно пользоваться как редактором текста. В частности: перенёс перемещение курсора с hjkl на esdf и esc на shift+space. Также, курсор при движении влево-вправо теперь не останавливается на конце строки.

Вимом стало возможно нормально пользоваться! Теперь, я хочу затюнить его под С++ кодинг.

Для этого мне минимально необходим следующий функционал:

  • переключение между заголовочником и исходником,

  • переход к определению функции под курсором,

  • переход к объявлению функции под курсором,

  • переход к предыдущей позиции курсора (не используя закладки),

  • плагин для содержащания файлов проектах,

  • переход к файлу, указанному директивой include под курсором,

  • аналог вкладок в других редакторах и переключение между ними,

  • подсветка синтаксиса,

  • подсветка всех слов аналогичных тому, что под курсором (по клавише),

  • инкрементальный поиск,

  • поиск во всех файлах проекта с подсветкой найденного,

  • переименование метода класса в исходнике с автоматическим изменением сигнатуры в заголовочнике,

  • astyle (ну это просто),

  • автодополнение (уже подсказали в другой теме, не пишите про него),

  • дебаггер (с вычислением символа под курсором и переходом из одной точки дебага в другую),

  • листинг ошибок компиляции со списком для удобного перехода на строку с ошибкой (такая штука, которая внизу экрана любой обыяной IDE).

  • Ну и, конечно, сохранение/открытие проекта, быстрый запуск компилятора и скомпилированного файла.

Ну вот и всё. Вроде ничего не забыл.

 ,

next_time
()