Записки Краснодарского Программиста

Интересы: GNU/Linux, BASH, Ruby, Ruby on Rails, SCRUM, создание сайтов, продвижение сайтов, программирование, DevOps, серверное и системное администрирование.

Команды Vim

Записи про Ruby — тут
Записи про Vim — тут
Записи про Bash и Linux
Горячие клавиши — тут

City: Краснодар
E-mail:

2017   bash   linux   shuf
2017   bash   linux   sed

Редактирование файла sudoers

Узнать права пользователя:


sudo -l

Редактирование файла sudoers — дадим возможность запускать sudo для пользователя petrovich:

Чтобы открыть /etc/sudoers, введите:


sudo visudo

Запишем в файл и сохраним:


petrovich ALL=(ALL:ALL) ALL

2017   root   sudo   sudoers

Плагины Vim

Поиск плагинов:
https://github.com/vim-scripts/
http://vim-scripts.org/vim/scripts.html
http://vimawesome.com/

Установка менеджера пакетов Vundle ( https://github.com/VundleVim/Vundle.vim ) :


git clone https://github.com/VundleVim/Vundle.vim ~/.vim/bundle/vundle

Добавить в  ~/.vimrc


set nocompatible
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
filetype plugin indent on

Добавить в  ~/.vimrc


Plugin 'scrooloose/nerdtree'
Plugin 'kien/ctrlp.vim'
Plugin 'mileszs/ack.vim'
Plugin 'SirVer/ultisnips'
Plugin 'scrooloose/syntastic'
Plugin 'AutoComplPop'
Plugin 'motemen/git-vim'
Plugin 'majutsushi/tagbar'
Plugin 'DfrankUtil'
Plugin 'vim-scripts/vimprj'
Plugin 'thinca/vim-template'
Plugin 'mattesgroeger/vim-bookmarks'
Plugin 'mattn/emmet-vim'
Plugin 'freitass/todo.txt-vim'
Plugin 'rlofc/vorg'
Plugin 'auxiliary/vim-layout'
Plugin 'Lokaltog/vim-powerline'

Plugin 'tpope/vim-rails'
Plugin 'vim-ruby/vim-ruby'
Plugin 'slim-template/vim-slim'
Plugin 'tpope/vim-bundler'
Plugin 'thoughtbot/vim-rspec'
Plugin 'xmisao/rubyjump.vim'
Plugin 'vim-rubyformat'

Plugin 'jvanja/vim-bootstrap4-snippets'
Plugin 'Chiel92/vim-autoformat'

Набрать в режиме команд Vim:


:source ~/.vimrc
:PluginInstall

Как добавить локальный репозиторий:


Bundle '~/my/plugin'

Если вы хотите избавиться от плагина, то удалите его из вашего .vimrc (или закомментируйте). Затем команда :BundleClean удалит все плагины, которые не прописаны в .vimrc.

По теме:
http://geeksmagazine.org/post/17/5-plaginov-vim-delayuschih-iz-nego-ide
https://habrahabr.ru/post/148549/
http://jenyay.net/Programming/VimPlugins2
http://chuwy.me/vim-cheatsheet.html

2017   vim

Tutorial for Emmet


http://vimawesome.com/plugin/emmet-vim
https://raw.githubusercontent.com/mattn/emmet-vim/master/TUTORIAL

2017   emmet
2017   bash   linux   tune2fs
2017   bash   linux   tmux   терминал

Команда cron запускает процесс, выполняющий команды в указанные дни и время — crontab

Работа с командой at описана тут: https://krdprog.ru/?go=all/planirovanie-zadach-s-pomoschyu-at/

Узнать запущен ли cron:


service cron status

Просмотр задач в crontab:


crontab -l

Настройка crontab:


crontab -e

Описание как создавать расписание: http://devacademy.ru/posts/15-otlichnykh-primierov-dlia-sozdaniia-cron-zadach-v-linux/

Можно записать задания из заранее подготовленного файла:


crontab cron-file.txt

ПРИМЕРЫ РАСПИСАНИЙ corntab:

Источник: https://www.shellhacks.com/ru/crontab-format-cron-job-examples-linux/

/var/spool/cron/ — задания для планировщика cron хранятся в данной директории

crontab — http://www.opennet.ru/man.shtml?topic=crontab&category=1
at — http://www.opennet.ru/man.shtml?topic=at&category=1

Man по-русски: http://www.opennet.ru/man.shtml?topic=cron&category=1&russian=0

2017   bash   cron   crontab   linux
2017   vim

Настройка редактора vim через файл ~/.vimrc


syntax on
set number

set t_Co=256
color molokai

set linebreak
set showcmd
set title

set ignorecase
set hlsearch
set mouse=a
set laststatus=2
set completeopt=menu

set textwidth=80
set wrap
set whichwrap=b,s,<,>,[,],l,h

set tabstop=2
set shiftwidth=2
set autoindent
set smartindent
setlocal cinwords=if,elif,else,for,while,try,except,finally,def,class
set cursorline
set encoding=utf-8
set termencoding=utf-8
set mps+=<:>

for prefix in ['i', 'n', 'v']
  for key in ['', '', '', '']
    exe prefix . "noremap " . key . " "
  endfor
endfor

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

2017   vim
2017   css   html

Самые необходимые команды редактора VIM


ctrl + c вместо Esc

d3d y3y - строки
d3w y3w - слова
d3l y3l - символы

d3l - удалить 3 символа
y3l - скопировать 3 символа

gd - перейти от места использования переменной к её локальному объявлению

di" - удалить внутри кавычек
dit - удалить содержимое внутри тега
daw - удалить всё слово (независимо от того, в какой части слова стоит курсор)

vim -o 01.txt 02.txt 03.txt - откроет с разделением экрана 3 файла (горизонтально)
vim -O 01.txt 02.txt 03.txt - откроет с разделением экрана 3 файла (вертикально)

:qall выйти из всех окон
:wall сохранить во всех окнах
:wqall сохранить и выйти из всех окон
:qall! выйти из всех окон несмотря на изменения

:!ls - выполнить команду в оболочке

shift + i - добавить в начале строки
shift + a - добавить в конце строки

vim +200 text.txt - открыть файл и сразу перейти к строке 200

ctrl + d - перемещение вниз по документу
ctrl + u - перемещение вверх по документу
gg - на первую строку
shift + g - на последнюю строку
20gg - на строку 20

f<символ> - переместиться на ближайший символ f, - к запятой, fk - к букве k

r<символ> - замена символа под курсором на указанный символ
shift + R - режим замены (insert-режим)

:set number - включить нумерацию строк
:set nonumber - отключить нумерацию строк

e - перемещение в конец слова
b - перемещение в начало слова

^ - переместиться в начало строки
$ - переместиться в конец строки
x - удалить символ под курсором
dw - удалить слово (от курсора до пробела или конца строки)
dd - удалить текущую строку
d$ - удалить символы от курсора до конца строки
J - слить следующую строку с текущей (удалить перевод строки)
i - начать ввод текста с позиции перед текущим симоволом (insert)
a - начать ввод текста после текущего симовола (append)
o - вставить пустую строку после текущей и начать ввод текста
O - то же, но строка вставляется перед текущей
. - повторить последнюю команду
u - отменить последнюю команду
U - отменить все изменения внесённые в текущую строку
h - влево, j - вниз, k - наверх, l - вправо
:qa! - выход без сохранения изменений
vim file.txt - откроет и создаст файл, если его нет
Esc - выход из режима ввода в режим команд

/ Enter - поиск слова
/ Enter - повторный поиск
? Enter - поиск в обратном направлении

:w - сохранить редактируемый файл
:w  - записать файл под новым именем 
:w! - сохранить, игнорируя (по возможности) флаг readonly 
:wq - сохранить и выйти из vim 
:q - выйти из vim 
:q! - выйти из vim без сохранения, сбросив сделанные изменения
:r  - прочитать содержимое файла name.txt и вставить его в редактируемый текст
:e  - начать редактирование ещё одного файла
:ls - показать список редактируемых файлов (активных буферов)
:b  - перейти к буферу номер 
:245 - перейти на строку (в примере 245 строка) - или 245gg
ctrl + ^ - переход между редактируемыми файлами

V - выделение блока из целых строк
v - выделение блока из произвольного количества символов (границы задаются клавишами: h, j, k, l)

Комментирование:
шаг 1. визуальный режим: Shift + v - построчное выделение строк
шаг 2. командный режим: :'<,'>s/^/#/ - комментирование выделенных строк.

d - удалить выделенный блок
y - скопировать выделенный блок
(d, y - помещает текст в специальный буфер)

p - вставить содержимое буфера (после курсора)
P - перед курсором

Все удаляющие команды помещают текст в буфер (x, dd, dw, d$, и т.п.)

yy - копировать строку
yw - копировать слово под курсором
y$ - копировать от курсора до конца строки

:%s/foo/bar/gi - заменить foo на bar (замена текста в файле)

:syntax on - включить подсветку кода
:syntax off - выключить подсветку кода

:set wrap - перенос строк
:set nowrap - запретить перенос строк

8 i foo Esc - создаст 8 копий введённого текста (8 - это для примера)

vip - выделить параграф
viw - выделить слово
vi( - выделить всё между ближайшими круглыми скобками, аналогично vi" - кавычки, vi{
va( - выделить всё между ближайшими круглыми скобками, включая сами скобки, аналогично va" - кавычки, va{
v2j - выделить на две строки вниз

vit - выделить то, что между тегами
vat - выделить вместе с тегами, выделится вся конструкция вместе с тегами

dip - вырезать параграф
di( - вырезать содержимое круглых скобок
da( - вырезать содержимое круглых скобок и сами скобки
y2y - скопировать две строки
yiw - скопировать слово
vt, - выделить всё до ближайшей запятой (или любого символа, который указать)

5dd - удалить 5 строк (или любое другое число)

"add - вырезать строку в буфер a
"ap - вставить из буфера a

5j - переместиться на 5 строк вниз

cw - заменить слово
c2w - заменить 2 слова
cl - заменить символ
c4l - заменить 4 символа
с$ - заменить всё до конца строки

g~~ - инвертировать регистр (без «g» применяется к символу под курсором)

( - начало предложения
) - конец предложения
{ - начало абзаца
} - конец абзаца

>> - увеличить отступ
<< - уменьшить отступ

gggqG - заставляет Vim переформатировать весь текст

:sh - открыть терминал (после выхода ctrl+d происходит возврат обратно в редактор)

Макросы:
qa - начать запись в регистр a
q - закончить запись
@a - воспроизвести запись из регистра a

:split (или :sp)
:vsplit (или :vsp) - ещё одно окно рядом
ctrl + w ctrl + w - перейти на следующее окно

:split или Ctrl+w s — добавляет в сессию Vim горизонтальное окно
:vsplit или Ctrl+w v — добавляет в сессию Vim вертикально окно
:split filename  — добавляет в сессию Vim горизонтальное окно и загружает в него filename
:vsplit filename  — добавляет в сессию Vim вертикальное окно и загружает в него filename
Ctrl+w h — переключает на левое окно, относительно текущего
Ctrl+w l — переключает на правое окно, относительно текущего
Ctrl+w j — переключает на нижнее окно, относительно текущего
Ctrl+w k — переключает на верхнее окно, относительно текущего
Ctrl+w Ctrl+w — переключает на следующее окно
Ctrl+w r — передвигает окна по часовой стрелке
Ctrl+w R — передвигает окна против часовой стрелки
Ctrl+w c — закрывает текущее окно

Открыть файлы во вкладках
$ vim -p filename1 filename2 filename3

Открыть файл во вкладке
:tabnew filename

Команда gt переключит на следующую вкладку, а команда gT — на предыдущую.

w - следующее слово
b - предыдущее слово
0 - начало строки
$ - конец строки

H - в верхний левый угол экрана
M - на первый символ середины экрана
L - правый нижний угол (последняя строка на экране)

dL - удалить с текущей строки до нижней строки экрана
dH - удалить с текущей строки до верхней строки экрана
Полезно будет ещё пройти vimtutor, прочитать http://www.moolenaar.net/habits_ru.html Ещё: http://zzapper.co.uk/vimtips.html https://ru.stackoverflow.com/search?q=vim http://gnu.su/plugins/forum/forum_viewtopic.php?803.last http://wiki.solab.rshu.ru/Vim_%D1%83%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA
2017   imagemagick   rmagick   ruby
2017   bash   ruby   shell   ссылка

Hotkeys Youtube (горячие клавиши Youtube)


Нажатие клавиши «F» (fullscreen) — приведет к открытию полноэкранного режима и обратно
Нажатие клавиши «K» — приведет к паузе или проигрыванию видео
Нажатие клавиши «space» (пробел) — также приводит к паузе или проигрыванию видео
Нажатие клавиши ← (назад) поможет перемотать видео на 5 секунд назад
Нажатие клавиши → (вперед) поможет быстро перемотать видео на 5 секунд вперед
Нажатие клавиши «J» — поможет перемотать видео на 10 секунд назад
Нажатие клавиши «L» — поможет быстро перемотать видео на 10 секунд вперед
Нажатие клавиши «M» — поможет отключить или включить звук в видео
Нажатие клавиши ↑ (вверх) поможет увеличить громкость
Нажатие клавиши ↓ (вниз) поможет уменьшить громкость
Нажатие клавиши цифры «0» — вернет вас в начало видео
Нажатие клавиши «Home» — также вернет вас в начало видео
Нажатие клавиши «End» поможет перемотать видео в конец
Нажатие цифр от «1» до «9» — позволит  перепрыгнуть вперед на 10% — 90% воспроизводимого видео
Нажатие клавиши «N» (next) — позволит запустить следующее видео
Нажатие клавиши «P» (previous) — позволит запустить предыдущее видео
Нажатие клавиши «/» — перенесет курсор в поле поиска 

И, не забывайте про функцию увеличения скорости просмотра. Управление этой функцией спрятано в шестерёнке внизу справа. Скорость можно увеличить до 1.25, 1.5, и до 2. Т. е. ролик в 1 час можно посмотреть в 30 минут. Очень полезная функция для увеличения продуктивности в изучении материала.

2017   https   ssl

Отследить изменения в каталоге средствами md5sum


# формируем файл с контрольными суммами
md5sum * | sort -u > md5.sum

# вносим изменения в каталог
touch test.txt

# формируем ещё раз файл с контрольными суммами
md5sum * | sort -u > md5-2.sum

# сравниваем 2 файла с контрольными суммами
diff md5.sum md5-2.sum

# разницу (если она есть) покажет предыдущая команда

Проверить целостность файлов указанных в сгенерированном списке md5.sum


md5sum -c md5.sum

# если какой-то файл изменён, то будет показано.

Ещё: https://ru.wikipedia.org/wiki/Md5sum

2017   bash   diff   linux   md5sum
2017   bash   linux   scp

Проверьте ваши учётные записи на предмет утечки

Касперский рекомендовал сервис для проверки своих учётных записей и e-mail на наличие в базах которые увели.

https://haveibeenpwned.com/

Проверяйте и принимайте меры по смене пароля, его усилению и защите.

Рекомендация сервиса найдена на сайте: https://securelist.ru/

2017   защита

Планирование задач в *NIX с помощью at

После запуска at предлагает вам ввести последовательность команд для выполнения. Чтобы закончить ввод команд, следует использовать комбинацию клавиш CTRL-D. Описание основных параметров командной строки at приведено ниже:


at [-m] [-q очередь] [-f файл] ВРЕМЯ

Значение этих параметров:

-q используется для указания очереди. Очередь обозначается одной буквой; корректными очередями считаются очереди с идентификаторами от a до z и от A до Z.

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

-f позволяет прочитать команды из файла, а не со стандартного ввода.

В качестве времени at принимает строки в форматах, совместимых со стандартом POSIX.2. Принимается строка, указывающая время в формате ЧЧ:ММ, позволяющая выполнить команду в назначенное время в течение дня. Месяц, день, год: ММДДГГ или ММ/ДД/ГГ или ДД.ММ.ГГ. Указание даты должно следовать за указанием времени.

Пример:


at 20:05
[Enter]
> touch foo.txt
[Ctrl + D]

Посмотреть задания в очереди:


atq

Удалить задачу (узнав номер задачи через atq:


atrm 3

Если пользователю не разрешено выполнять команду at, то в файле /etc/at.allow указать имя пользователя, которому дать право на исполнение команды:


nano /etc/at.allow

http://rus-linux.net/MyLDP/admin/manage-planned-tasks-on-linux-with-the-command-at.html

2017   at   bash   linux

SCRUM for ONE

Сортировка:
M — Must — Обязательно
S — Should — Должно быть
C — Could — Если можно
W — Want — Хотелось бы

https://kanboard.net/

2017   agile   scrum
2017   apt   awk   bash   dkpg   linux
Ctrl + ↓ Ранее