Меню сайта
   Главная   
   Обо мне   
   Статьи   
   Дневник   
   Картинки   
   Файлы   
   Форум   
   Гостевая книга   

Категории раздела
Куклы и игрушки [60]
Личное [116]
Музыка [19]
Общее [305]
Японский язык [12]
ZX Spectrum [70]
Субмарины [98]
Настольные игры [34]
Го (碁) [11]
Книги [16]
Япония [26]
Таро [4]
Запертый шкаф [17]
CSA (КША) [15]
GNU/Linux [134]
Ubuntu [103]
Manjaro Linux [40]
Python [3]
Магнитольное [44]
Commodore64 [15]
Игровые приставки [2]
ПЭВМ КУВТ [3]


 
Дневник (2017 » Июнь » 19 в 03:25)
GNU/Linux Как пользоваться Vim и Nano?


Любой текстовый редактор можно освоить «методом тыка». Но только не vim.

Чем nano лучше vim?
Из nano можно выйти без reset'а!

(с) Интернет



Для быстрого перехода к списку команд nano или vim нажмите на картинку.

Изначально я не планировал писать об обоих редакторах, а хотел сделать краткую справку только по nano, но в процессе сбора информации накопились данные и по vim тоже. Тут я обнаружил, что Vim не так уж и страшен, если знать команды и концепцию его использования.

Что это и зачем нужно?

Когда недоступна графическая среда, например при работе по ssh, настройке системы до загрузки xserver, либо просто из любви к извращениям красноголазию начинаешь чувствовать себя ущербным инвалидом в консольном текстовом редакторе, клавиш управления которым не знаешь от слова совсем. Даже навигация по файлу и копипаста начинают представлять собой почти непреодолимую преграду. Просто потому, что в консоли не работают многие привычные комбинации клавиш, будучи задействованными под другие нужды ещё во время дискет 5.25" на 320Кб.

Я долгое время использовал редактор от Midnight Commander mcedit, немного пользовался nano, и совсем не пользовался vim. Вызубрить все эти комбинации за гранью возможного - даже потратив на это время, через какой-то период простоя они успешно забываются. До того, как я взялся за написание этой статьи, я не мог заставить себя осилить даже азы vim, он пугает уже на стадии запуска, "пытаешься из него сразу же выйти, и не можешь!" Это как вы сейчас зайдёте в интерпретатор ZX Spectrum BASIC48, то не зная азов даже простейшей программы PRINT "Hello World!" не напишите. Я не переставал задавать себе вопрос: "Интересно, и за что гуру vim так любят? Зачем тратить кучу времени на переобучение, и главное как не растерять навыки, для каких целей его постоянно использовать, этот vim?"

Ниже я опишу самые необходимые комбинации клавиш и приёмы работы в обоих редакторах.

Nano



После комбинации Alt-6, как команды «скопировать» я даже и не знаю что сказать
Наверное автор Nano был пианистом
(c) из хабра-комментариев

Основой мне послужила статья на хабре: "Nano: И всё-таки его придётся выучить", а также все комментарии к ней. Они не просто её дополнили, но и заставили посмотреть в сторону vim.


РосNano-концепция:

В терминах nano текст, отделённый пустыми строками называется «параграф». Все команды отдаются нажатием комбинаций клавиш — функциональными кнопками или комбинацией Ctrl+буква или Alt+буква. Если в каком-либо случае комбинация с Ctrl или Alt забронирована системой, следует использовать дублирующие комбинации с Esc.

Одинарное нажатие на Esc эмулирует клавишу Alt. Двойное Esc Esc эмулирует клавишу Ctrl. То есть вместо Alt+X можно набрать Esc X, вместо Ctrl+K можно набрать поочерёдно Esc Esc K.


Самое важное:

Alt+U (Esc U) — Undo, отмена последнего действия.
Alt+E (Esc E) — Redo, повтор отменённого действия.

F1 (Ctlr+G) — Показать справку
F2
— Выход с сохранением файла
Ctrl+X
— Вернуться к редактированию из справки, и прочих диалоговых окон, выход из программы.


Копирование и вставка текста:

Alt-A (Ctrl-6)
— установить\снять маркер начала выделения текста (либо просто стрелки с shift)
Alt+6 (Esc 6) — копировать выделение текст в буфер обмена. Комбинация alt+6 у меня занята и не заработала.
Ctrl+K (или F9) — вырезать выделенный фрагмент в буфер обмена, при отсутствии выделения удалить строку.
Ctrl+U (или F10) — вставить фрагмент из буфера обмена
Ctrl+Shift+V — вставить из GUI буфера обмена
Ins — Вставка текста из другого файла, либо вывода команды.


Поиск и замена:

Ctrl+W — Поиск
Alt+W — Повторный поиск
Ctrl+\ — Замена. Помнит последний поиск как изменяемое по умолчанию.


Навигация:

Alt+\ (Ctrl+Home) — В начало файла
Alt+/ (Ctrl+End) — В конец файла
Ctrl+Y (PgUp)— На страницу вверх
Ctrl+V (PgDn) — На страницу вниз
Alt+S — Переключение между плавной прокруткой страниц и фиксированной

Дублирование курсорных клавиш, то чем так гордится vim, только врастапырку:
Ctrl+B — Влево на символ
Ctrl+F — Вправо на символ
Ctrl+N — Вниз на символ
Ctrl+P — Вверх на символ

Ctrl+Space — На слово вперёд, можно просто Ctrl+курсор. (курсор встаёт в начале слова)
Alt+Space (ESC Space) — На слово назад.
(у меня эта комбинация вызывает строку быстрого запуска KRunner в KDE, поэтому использую ESC Space)

Alt+- — Прокрутка вверх не меняя позиции курсора
Alt+= — Прокрутка вниз не меняя позиции курсора
Alt+7 (Esc 7) — К предыдущему блоку текста, либо просто Ctrl+курсор
Alt+8 (Esc 8) — К следующему блоку текста.
Alt+0 (Esc 0) — К следующему параграфу (до первой пустой строки вниз).
Alt+9 (Esc 9) — К предыдущему параграфу (до первой пустой строки вверх).

Alt+G — Переход на строку с указанным номером.

Alt+< — Переход к предыдущему открытому файлу (Если nano запущен с несколькими файлами)

Alt+> — Переход к следующему открытому файлу.

Ещё пишут про команду Alt+F, которая не то включает такую возможность, не то позволяет зачем-то иметь отдельные буфера обмена на каждый файл, но как она работает я не понял.



Редактирование текста:

Ctrl+D (Del) — стереть символ под курсором
Ctrl+H (BSp) — Стереть символ слева от курсора
Ctrl+M (Enter) — Вставка пустой строки.
Ctrl+I (Tab) — Вставка табуляции.
Alt+Shift+{ — Уменьшить отступ параграфа удалением табуляции или пробелов
Alt+Shift+}
— Увеличить отступ параграфа, вставкой табуляции. Если уже был отступ пробелами, добавит к нему табуляцию и подсветит красным.
Ctrl+] — Автодополнение слов, например команд в программе. Программисты оценят!
Alt+3 (Esc 3) — За(рас)комментировать символом # текущую строку, выделенный параграф.
Alt+J (F4) — Justify, выровнять текущий абзац


Разное:

Esc Esc 220 ­— Ввод символов по десятичному коду. Например 220 - ввод Ü с умляутом.
Alt+V — Ввод ASCII последовательности комбинации или клавиши.
Alt+T — Trunkate. Стирает всё от курсора и до конца файла.
Ctrl+C (F11) — Разово выводит информацию по текущей строке, колонке, номеру символа.
Alt+D — Подсчитать количество слов, строк, символов в файле
Ctrl+L — Обновить экран


Настройки nano:

Alt+Shift+4 — Мягкий перенос длинных строк разрешить/запретить
Alt+K
— переключает действие по Ctrl+K между удалением по умолчанию всей строки и удалением от курсора до конца строки.
Alt+Q — Переключиться с табуляций на ввод пробелов.
Alt+L — Включить и выключить жёсткий перенос строк.
Alt+C
— Переключает постоянный вывод инфо по строке по Ctrl+C
Alt+X — Показать\скрыть строку подсказки внизу экрана.
Alt+Shift+3 — Показывать номера строк.
Alt+P — Показывать пробелы символом "·"
Alt+Y — Показывать подсветку синтаксиса.
Alt+H (Esc H) — Включить умную клавишу Home (переводит курсор не в 1ю колонку, а на 1й символ строки)
Alt+I (Esc I) — Включить автоотступы (перевод строки на новую с таким же отступом, как у предыдущей)
Alt+B — Переключиться на создание резервных копий и обратно
Alt+M — Включить "поддержку мыши". лучше не использовать, ерунда!


Говорят, что nano по умолчанию не поддерживал отмену действий (undo). У меня в Manjaro всё поддерживает, но на всякий случай решение - запускать nano с ключом -u: nano -u filename.
Для включение подсветки синтаксиса в nano следует раскомментировать директивы include в файле /etc/nanorc.


На этом всё.

Другие использованные ссылки:

https://freethegnu.wordpress.com/2007/06/23/nano-shortcuts-syntax-highlight-and-nanorc-config-file-pt1/
http://freethegnu.wordpress.com/2007/06/23/nano-shortcuts-syntax-highlight-and-nanorc-config-file-pt2/
http://help.ubuntu.ru/wiki/nano


Vim, немного крипоты

«у vi есть два режима: бибикать и всё портить»
(c)
Холиварненько

Изначально Vim разрабатывался для аппаратного терминала ADM-3A, он слева на фото.

Приведу несколько цитат перед статьёй, которые как бы намекают читателю: "— Ужаснись и беги. Слышишь смертный? Беги! И не говори потом, что тебя не предупреждали..."



Продвинутый текстовый редактор — кошмар для случайного пользователя. Если его удается в конце концов закрыть, то вздыхаешь с облегчением и твердой уверенностью, что больше не будешь запускать эту программу ниразу в жизни. Пожалуй, Vim нельзя просто запустить и начать работать — требуется определенная подготовка. Зато стоит раз испытать его в деле и поражаешься тому, как можно было без него обходиться.
(c) https://ru.wikibooks.org/wiki/Vim
* * *

Ну, смотрите, человек запускает vim, курсором доползает до нужного места, стирает лишнее, начинает печатать, в какой-то момент доходит до буквы 'i'/'c' и т.д., после чего остаток введённого появляется на экране не там, где человек хотел. Он нажимает esc, q, у него начинается какая-то фигня, он нажимает несколько раз esc, esc, потом пишет :q, потом нажимает три раза Esc пишет :Q!, потом нажимает ещё пару раз Esc, пишет :q!, потом снова vim и уже редактировать. (q) Пример ада с vim

* * *

У меня кстати была обратная ситуация, когда я подошел к сотруднику подсказать что подправить в конфиге и в фаровском редакторе напечатал ему полстрочки букв j, прежде чем понял, что что-то не так, курсор двигается вправо, а не вниз и ещё и мусор какой-то появляется. (q) Байка о силе привычки

* * *

Судя по тому, что я сейчас прочел, пользователи… нет, скорее «активисты» vi — не просто придурки, а отборные мазохисты. Не знаю, может кто-то в этой статье видит преимущества vi, я же вижу убийственный гемморой, переусложняющий простой ввод кода до уровня секвенирования ДНК. (й) +15 голосов в хаброкомментах

* * *

Cейчас средства разделились на редакторы (набрать текст) и IDE (работать с проектом). Вим получается посередине, как утка. Но это уже не нужно. Если я хочу набрать текст — мне не нужен редактор который осваивать дольше чем IDE, мне нужен ee/nano. А если мне нужна работа с проектом — мне нужна нормальная IDE с большими возможностями и низким порогом вхождения, а не школа белого нидзя по освоению навороченного текстового редактора. (q) убийственный хаброкоммент



Выше показана старая клавиатура IBM PC AT original keyboard. Приглядитесь повнимательнее.
Vim разрабатывался ещё в те времена, когда клавиша Ctrl находилась на месте CapsLock, где удобнее нажимать мизинцем. Как часто вы пользуетесь этой клавишей? А клавишей Ctrl? Но фирма IBM решила иначе, и всё сложилось как сложилось.

Тем не менее, мы попытаемся!


VIM — это слепой десятипальцевый метод редактирования текста. (й) youtube


Следует запомнить, что Vim имеет два режима: командный и модальный. В первом вводятся команды, например просто введя двоеточие : можно стрелками вверх-вниз перебирать историю ранее введённых команд. Введя начало команды, по Ctrl+d можно увидеть список похожих команд, а по Tab дополнить сокращение до полного названия команды. Все команды, начинающиеся с : должны завершаться нажатием ENTER, остальные исполняются моментально. Во втором режиме правится текст. Вход в модальный режим по a, i. После правки фрагмента текста, всегда нажимайте Esc, чтобы вернуться в командный режим, и у вас никогда не возникнет вопроса, в каком режиме сейчас редактор.

Поясняющая цитата о вводе команд: Команды в vim задуманы комбинируемыми: 'd' значит "удалить", 'e' значит "переместить курсор в конец слова", поэтому 'de' завершенная команда, означающая "удалить все от текущего положения курсора до следующего конца слова" Команды регистрозависимы!

Например войдя в модальный режим (редактирование текста) по i, введя "True", и выйдя в командный по Esc,
вы можете перемещаться по файлу со всей мощью команд навигации и нажимать '.' везде, где нужно повторить команду, то есть вставить слово "True" в текущую позицию курсора в данном случае. Учитывается весь введённый фрагмент с перемещениями курсора и стиранием символов. Так можно по точке автоматизировать ввод форм в одинаковые блоки.

Команды Vim:


Возможно, это только для меня стало внезапным открытием, но вся справка на русском языке по клавишам vim доступна внутри терминала в виде уроков по команде (в том числе по ней я делал этот конспект):
vimtutor ru

Перемещение
:

hjkl — дублирование курсорных клавиш влево,вниз,вверх, вправо.
^ или 0 (нуль) — В начало строки
$ — В конец строки
w — Переход к началу следующего слова.
e — Переход в конец текущего, затем следующего, слова.
E (Shift+e)
—Как e только без учета символов препинания.
% — Перемещение в строке между скобками: (){}[]

Ввод числа перед оператором перемещения приведёт к его повторению заданное количество раз.
2w — Перемещение курсора вперёд к началу второго слова.
3e — Перемещение курсора вперёд к концу третьего слова.

Комбинирование команд упрощает навигацию:
j$
—Вниз, в конец следующей строки.

Alt+{ (Alt+Shift+[) — Переместиться на пустую строку перед текущим параграфом
Alt+} (Altl+Shift+]) — Переместиться на пустую строку после текущего параграфа

Shift+g — Перейти в конец файла. Если перед этим ввести номер строки, то переход к ней.
507 Shift+g — Например вот так будет переход не в конец, а к строке номер 507
:45 Enter или 45gg — Переход к строке номер 45

Вместо k может быть любая маленькая буква для локальных меток, и большая для глобальных, к которым можно обращаться из другого файла.
mk
— Пометить текущую позицию как k
‘k — Перейти к раннее созданной метке k
'. — (backquote, dot) перейти по автоматической метке в начало последней отредактированной строки.

H, M, L — перемещение курсора на верхнюю, среднюю и нижнюю линию экрана.
zt, zz, zb — перемещение курсора вместе с текстом на верхнюю, среднюю и нижнюю линию экрана.
* — Переместить курсор на следующее слово, такое же, как под курсором
# — Переместить курсор на ПРЕДЫДУЩЕЕ слово, такое же, как под курсором


Оконная навигация — окна и вкладки:

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

:bn — открыть в текущем окне следующий буфер
:bp — предыдущий
:ls — просмотреть список открытых буферов
:b имя_буфера — переключиться на буфер открытого файла, работает автодополнение по Tab.
:bd имя_буфера — удалить буфер по имени
:bd
— удалить текущий буфер, либо выйти из vim, если этот буфер единственное окно.

Разбивка окна на несколько подокон и навигация между ними:
Ctrl+w v — ( :vsplit ) разделить окно по вертикали
Ctrl+w s — ( :split ) разделить окно по горизонтали
Ctrl+w f — разделить окно и в новом открыть файл, имя и путь к которому находится под курсором
Ctrl+w q или c — закрыть текущее окно
Ctrl+w n — создать новое окно ( :new filename )

Сtrl+w o — развернуть текущее окно на весь экран, закрыв прочие подокна.
Сtrl+w _ — (нижнее подчеркивание) развернуть окно до максимального размера
Сtrl+w = — Сделать все окна текущего таба одинакового размера
Ctrl+w+ или Ctrl+w- — увеличение или уменьшение размера текущего окна
Esc 5 Ctrl+w+ или Сtrl+w 5+ — Увеличить размер текущего окна сразу на 5 строк/столбцов.
Esc 5 Ctrl+w - или Сtrl+w 5- Уменьшить размер текущего окна сразу на 5 строк/столбцов.


Ctrl+wCtrl+w — переход к следующему подокну
Ctrl+w HJKL — переместить окно влево/вправо/вверх/вниз, плюс перегруппировка компановки окон
Ctrl
+w hjkl либо курсор — переместить курсор на окно влево/вправо/вверх/вниз

Параметры запуска vim:
vim -o filename1 filename2 — запустить vim с двумя файлами, открытыми в горизонтальных окнах
vim -O filename1 filename2 — запустить vim с двумя файлами, открытыми в вертикальных окнах
vim -d filename1 filename2 — запустить vim с двумя файлами и сравнить их, подсветив отличия.

Помимо окон есть ещё вариант разложить открытые файлы по отдельным вкладкам (Tabs)
:tab ball — Поместить все открытые файлы во вкладки
:tabnew — Создать новую вкладку, чтобы не бить текущее окно на большое количество маленьких подокон
gt — (go to tab) Перейти на следующую вкладку
gT — (go to tab) Перейти на предыдущую вкладку
:tabn — Следующая вкладка
:tabp — Предыдущая вкладка
Ctrl+PageUp и Ctrl+PageDown — стандартные горячие клавиши для перемещения между табами, но они могут быть заняты эмулятором терминала.

:set mouse=a — Если включить, то будет можно мышью выбирать вкладки, окна, и изменять их размер


Вход в модальный режим редактирования текста
:

i
— Insert, переход в режим вставки текста левее курсора
a — Append, переход в режим вставки текста правее курсора
A — App_end, переход в режим вставки текста в конец строки
R — Replace, переход в режим замены текста.
o — создать пустую строку под текущей и перейти к её редактированию.
O — создать пустую строку НАД текущей и перейти к её редактированию.


Редактирование:

u — UNDO, отмена последнего действия
U — UNDO, отмена изменений только в последней строке
Ctrl+r — Redo, повторить отменённое действие текущего модального сеанса редактирования.

Многие команды, изменяющие текст, состоят из оператора и объекта. Например ниже оператор удаления d комбинируется с объектом направления удаления:
dw — (delete word) удалить от курсора до конца слова, включая последующий пробел.
de — удалить от курсора до конца слова, НЕ включая последующий пробел.
d$ — удалить от курсора до конца строки.
d^ — удалить от курсора до начала строки.
ce — удаляет слово и переводит в режим вставки.
c$ — удалить от курсора до конца строки и перейти в режим вставки (редактирования текста).

Ввод числа перед оператором приведёт к его повторению заданное количество раз.
d2w — Удаление двух слов подряд
x — Del, стереть символ под курсором.
dd — Удаление строки
D (Shift+d)— Вырезать в буфер содержимое от курсора до конца строки.
C (Shift+c)— Вырезать в буфер содержимое от курсора до конца строки и перейти в режим правки.


r — замена символа под курсором следующим за r
После нажатия r+символ возвращается в командный режим, что делает неудобным использование для правки русского текста без адаптации командного режима vim к русской раскладке клавиатуры.

diw — (delete inner word) удалить слово под курсором
ciw — (change inner word) заменить слово под курсором (удалить и перейти в режим редактирования)
cib — (change in brackets) Удалить выражение внутри скобок () и перейти к редактированию
c% — Вырезание выражения в парных скобках от курсора до следующих скобок. (% этоShift+5)
dit — (delete in tag) Удалить текст внутри html или xml тэга под курсором
cit(change in tag) Заменить текст внутри html или xml тэга под курсором, (удал. и пер. в реж. ред.)
ce WORD Esc — вводить на первом символе какого-либо слова, чтобы заменить его на WORD. После по точке так можно будет сделать с любым.

d$ или D (Shift+d) — удаляет строку после курсора
db — удалить слово ДО курсора
di( — удаляет то что в скобочках.
di" — то, что в кавычках
ya( — копировать содержимое внутри скобок () вместе с самими скобками

s — Удалить символ под курсором и перейти в режим редактирования
S — Удалить все до конца строки и перейти в режим редактирования
d5d — удалить 5 строк от курсора вниз

Ctrl+a — Увеличить на единицу ближайшее справа число.
Ctrl+x — Уменьшить на единицу ближайшее справа число.
Vu — Перевести строку в нижний регистр
VU — Перевести строку в верхний регистр
g~~ — Инвертировать регистр

Автодополнения:
Ctrl+p
или Ctrl+n — автодополнение команд языков программирования
Ctrl+x Ctrl+f — файлы, они ищутся в текущем каталоге
Ctrl+x Ctrl+d — дефайны
Ctrl+x Ctrl+i — слова из текущего и открытых файлов
Ctrl+x Ctrl+k — из словаря
Ctrl+x Ctrl+] — все тэги
Ctrl+x Ctrl+o — omni completion, работает замечательно с C, Python и т.д.


Поиск:
При достижении конца файла поиск будет продолжен с начала.

f — Поиск следующего за f символа справа в текущей строке
; — Повторить поиск по f, следующее найденное совпадение в текущей строке
/ — Поиск текста по образцу вперёд
? — Поиск текста по образцу назад
n — Следующее найденное совпадение
NПредыдущее найденное совпадение
Ctrl+o — вернуться туда, откуда начали поиск
Ctrl+i — вернуться обратно к найденному после ctrl+o
% — Поиск парных скобок: (), [] или {}


Поиск и замена:

:s/было/стало — Поиск и замена только первого найденного совпадения в текущей строке
:s/было/стало/g — Поиск и замена всех найденных в текущей строке совпадений
:g/string/d Удалить все строки, содержащие "string”
:v/string/d Удалить все строки, не содержащие "string”
:30,90s/было/стало/gc
— поиск и замена с 30 по 90 строку по всей их длине, с подтверждением
:%s/было/стало/gc — поиск и замена во всём файле с подтверждением.

То есть :s/ — текущая строка, :30,90s/ — диапазон, :%s/ — весь файл.
g — во всей строке, c — с подтверждением, иначе только первое совпадение в строке, и без подтверждений.
Можно не писать каждый раз команду заново, достаточно ввести : двоеточие и стрелками курсора вверх-вниз перебирать ранее введённые варианты.


Выделение
:

v — (visual) визуальный выбор, выделение фрагмента текста для операции над ним.
Ctrl+v — выделение прямоугольных блоков.
gv — Повторное выделение последнего выделенного фрагмента.
d
— удаление выделенного фрагмента
c — Вырезать выделенный фрагмент в буфер обмена
y — (yank) копирование выделенного фрагмента
yw — копирование одного слова от позиции курсора до конца слова вместе с пробелом.
p — (paste) вставка скопированного фрагмента
vip — Выделить целиком текущий параграф (разделённый пустыми строками текст)
vgU — выделить в визуальном режиме фрагмент и перевести его в верхний регистр.
vg~ — Выделить в визуальном режиме фрагмент и ИНВЕРТИРОВАТЬ его регистр.

Комбинации ниже работают для выделенного фрагмента. Для одиночной строки нажать дважды. Изменить длину отступа с 8 на 4 можно через конфиг, либо введя в командном режиме :set tabstop=4
Почему-то не работают для комментариев #
< (Shift+,) — Уменьшить отступ выделенного.
> (Shift+.)Увеличить отступ выделенного.


Файловые операции:

:w — сохранить изменения в текущий файл
:w file.txt — сохранить в файл file.txt
:w! file.txt — сохранить и перезаписать file.txt, если существует.
:w~/file.txt — сохранить в файл file.txt в домашней папке
:e — Переоткрыть текущий файл.
:e file.txt — открыть файл file.txt.
:ene — Создать новый файл.
:ene file.txt — Создать файл file.txt.

Перед сохранением фрагмента, следует выделить его по клавише v, при входе в комстроку по : (двоеточию) в ней уже будет префикс выделения :'<,'>  и вручную его писать не надо!

:'<,'>w file.txt    — записать выделенный фрагмент в файл
:'<,'>w! file.txt    — записать выделенный фрагмент поверх уже существующего файла
:'<,'>w>>file.txt — добавить выделенный фрагмент в конец файла
:'<,'>!xclip -sel clip — вырезать выделение в буфер обмера X сервера. (требуется xclip)
:
'<,'>w !xclip -sel clip — копировать выделение в буфер обмера X сервера. (требуется xclip)
Небольшая справка о команде выше. Конструкция  :<диапазон>!<команда оболочки>  использует команду оболочки как фильтр — передаёт ей (на stdin) указанный диапазон строк, и всё, что команда запишет в свой stdout, использует как замену для указанного дипазона строк. Чтобы замены не происходило, можно воспользоваться командой :write (пробел после команды обязателен, иначе получите ошибку)
:<диапазон>write !<команда оболочки>  имя данной команды для удобства можно сократить до одной буквы (w). 
:r!xclip -o  — вставить в текущую позицию курсора содержимое буфера обмена x сервера (требуется xclip)

:r file.txt — вставить содержимое файла file.txt в позицию ниже курсора
:r !uptime - вставить вывод команды в место под курсором
:r!ls — вставить вывод внешней команды ls.
:!python3 % — запустить редактируемый файл в питоне

:call delete(expand('%')) —   Удалить файл текущего документа
:call delete(expand('%')) | bdelete! — Удалить файл текущего документа и убрать его буфер с экрана


Настройки:

По уму настройки следует записать в ~/.vimrc (там они пишутся без двоеточия!) тогда не придется их вводить заново.

:set ic — IgnoreCase, игнорирование регистра при поиске или замене
:set noic — вернуть регистрозависимый поиск или замену
:set hls — Hlsearch, подсвечивать найденное
:set nohls — НЕ подсвечивать найденное
:set is — Incsearch, инкрементный поиск - отображение частичных совпадений при поиске
:set nois — Отключить инкрементальный поиск, искать по enter.
:set nu — показывать номера строк
:set nu! — скрыть номера строк
:set mouse=a — Использовать мышь для выбора окна, позиции курсора.
:syntax on — подсветка кода

Разное:

Ctrl+g — Показывает строку статуса с именем открытого файла, номером текущей строки.
Esc или Ctrl+C или Ctrl+[ — выход в командный режим.
:e Enter
— Выход. Именно с ДВОЕТОЧИЕМ! Я сам долго не мог выйти. Решил, что ':' это часть предложения, а не часть комбинации, которую нужно набрать и долго жал 'q'.
:e! Enter — Выход без сохранения
:x и :wq — выход с сохранением, причём первая сохраняет только в том случае, если были изменения.
:w! или :wq! принудительное сохранение в readonly файле, 2й вариант с выходом.
ZQ ­— Моментальный выход без сохранения и подтверждения.

Настройки по умолчанию можно записать в конфигурационный файл ~/.vimrc
Например без этого я не начну писать в vim ни одной программы на Python:
set tabstop=4 # Длина табуляции
set expandtab # Замена табуляции пробелами


Полезные хитрости:

:%s#>[^<]\+>##g — Очистить текст от HTML-тегов
:%s/^\(.*\)\n\1$/\1/ — Удалить строки, повторяющиеся дважды
:%s/\s\+$// — Удалить пробелы в конце строк, и строки из одних пробелов (link)
:1,$ g/^$/ d — Удалить пустые строки
:g/^$/d — Удалить пустые строки


Приложение:


Обучающие карты расположения команд в картинках. Взято отсюда:
http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

Lesson 1Lesson 2Lesson 3
Lesson 4Lesson 5Lesson 6
Lesson 7


Решение проблем:

Простое решение проблемы командного режима в русской раскладке, положить в файл ~/.vimrc с содержимым в одну строку:
set langmap=ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯЖ;
ABCDEFGHIJKLMNOPQRSTUVWXYZ:,фисвуапршолдьтщзйкыегмцчня;abcdefghijklmnopqrstuvwxyz

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

* * *

Вот эта пара строк сильно экономит время на копание в .vimrc
" ## Edit .vimrc ##
map ,v :vsp $MYVIMRC<CR>
map ,V :source $MYVIMRC<CR>
Первая маппит на ,v открытие .vimrc в вертикальном окошке, а вторая просит VIM пересчитать файл.


* * *

О разнице, какой клавишей выходить в командный режим: Ctlr-C просто переходит в normal mode. Если на выход из insert mode какими нибудь плагинами навешаны какие-нибудь хуки, то при нажатии Ctrl-C vim их проигнорирует, а при нажатии Esc или Ctrl-[ запустит. (й)


* * *

Q (shift+q) — не режим ввода команд. Это переход в устаревший режим Ex, поддерживаемый только для совместимости. Пользоваться им не стоит. Для возврата в обычный режим наберите "visual".


* * *


Список использованной и рекомендуемой литературы:
  1. Статьи на хабре:
    https://habrahabr.ru/hub/vim/

  2. Почему, ну почему, эти #?@! придурки используют vi? (отличная статья! А комменты просто жгут)
    https://habrahabr.ru/post/307084/

  3. Vim и кириллица: парочка приёмов
    https://habrahabr.ru/post/98393/

  4. Аж целую книгу запилили по этому vim, я удивляюсь. Нашёл на файлопомойке тут:
    http://mirrors.pdp-11.ru/_books/desktop%20soft/vim/

  5. Прямая ссылка на книгу:
    O'Reilly - Learning the vi and Vim Editors 7th Edition (перевод).pdf

  6. Книга «Просто о Vim» («A Byte of Vim») русский перевод.
    Скачать в формате .odt или .pdf

  7. Vimtouch под Android. Если готовый в googleplay:
    https://github.com/momodalo/vimtouch

  8. 100 команд vim, которые должен знать каждый
    http://scabere.livejournal.com/62886.html

  9. Окна и буферы — Навигация
    https://habrahabr.ru/post/28572/

  10. Vim Golf — Задачи и решения по vim
    http://www.vimgolf.com/

  11. Много приёмов работы с vim
    http://najomi.org/vim

  12. Настраиваем Vim под Python
    https://habrahabr.ru/post/74128/

  13. VIM как IDE для разработки на Python
    https://habrahabr.ru/post/224979/

  14. Vim как IDE для веб-разработки
    https://habrahabr.ru/post/53435/

  15. Окна и буферы
    https://habrahabr.ru/post/28572

  16. Многооконный режим редактирования файлов в Vim
    https://www.opennet.ru/tips/1714_vip_edit_text.shtml


Видео уроки:

Хороший цикл уроков по vim



запись захабрена.
Категория: GNU/Linux | Просмотров: 1392 | Добавил: harushima | Рейтинг: 0.0/0 |
Всего комментариев: 33.

26.06.2017 15:29
1 harushima
0  
Замечательный комментарий Jef239:
Эх молодежь… Поработайте в mcedit на скорости в 300 бод — и поймете, зачем нужны командные редакторы вроде Edlin из MS-DOS или [url=https://en.wikipedia.org/wiki/TECO_(text_editor)]TECO[/url]. Ну или с данными на перфоленте или магнитной ленте. Как только операция сдвига экрана начинает занимать несколько секунд — командный режим становится очень удобным.

Vi — это наследник командного редактора ed. По сравнению с командными редакторами, двухрежимные — были большим шагов вперед.

Более того, двухрежимный редактор лучше чистого WISIWIG. Попробуйте пожить в чистом WISIWIG, без команд поиска, замены, перехода к строке по номеру…

Если вы сравните vi с другими командными и двухрежимными редакторами, то увидите, что как раз «нормы и концепций пользовательского интерфейса» у них общие. Ну скажем много общего с EDT из RSX-11M. Вот только эти концепции очень старые, вы с ними просто не знакомы. Например, у интерфейса навигации по эрану ноги растут от интерфейсов управления терминалами VT05 и VT52.

Даже на 9600, где перерисовка экрана занимала 2 секунды, двухрежимный EDT был удобнее WISIWYG редактор TED. Примерно до 38400 прокрутка экранов настолько медленна, что её избегают. И только со 115200 WISIWYG становится реально удобен.


01.07.2017 07:58
2 harushima
0  
https://habrahabr.ru/post/98393/#comment_3031341

вариант переключения раскладки. переключение по Ctrl + F.

В ~/.vimrc это оформлено так:

set keymap=russian-jcukenwin " настраиваем переключение раскладок клавиатуры по C-^
set iminsert=0 " раскладка по умолчанию для ввода - английская
set imsearch=0 " раскладка по умолчанию для поиска - английская

" переключение на русскую/английскую раскладку по ^f (Ctrl + F)
cmap <silent> <C-F> <C-^>
imap <silent> <C-F> <C-^>X<Esc>:call MyKeyMapHighlight()<CR>a<C-H>
nmap <silent> <C-F> a<C-^><Esc>:call MyKeyMapHighlight()<CR>
vmap <silent> <C-F> <Esc>a<C-^><Esc>:call MyKeyMapHighlight()<CR>gv

" Переключение раскладок и индикация выбранной в данный момент раскладки -->
" При английской раскладке статусная строка текущего окна будет синего цвета, а при русской - красного
function MyKeyMapHighlight()
if &iminsert == 0
hi StatusLine ctermfg=DarkBlue guifg=DarkBlue
else
hi StatusLine ctermfg=DarkRed guifg=DarkRed
endif
endfunction
" Вызываем функцию, чтобы она установила цвета при запуске Vim'a
call MyKeyMapHighlight()
" При изменении активного окна будет выполняться обновление индикации текущей раскладки
au WinEnter * :call MyKeyMapHighlight()
" <--


05.07.2017 03:41
3 harushima
0  
Поляризированные цветовые схемы для vim:

При установленном менеджере плагинов Vundle, добавить в конфиг ~/.vimrc

Plugin 'morhetz/gruvbox'
colorscheme gruvbox
set background=dark " или светлую =light

В vim выполнить команду :PluginInstall

Всё!


05.07.2017 04:31
4 harushima
0  
Установка плагина автодополнения
При установленном менеджере плагинов Vundle, добавить в конфиг ~/.vimrc

Plugin 'Valloric/YouCompleteMe'
В vim выполнить команду :PluginInstall

До этого выполнить:
sudo pip3 install future frozendict

cd ~/.vim/bundle/YouCompleteMe
git submodule update --init --recursive
./install.py


05.07.2017 06:27
6 harushima
0  
Установка плагина автоввода закрвающих ковыек, скобок.
При установленном менеджере плагинов Vundle, добавить в конфиг ~/.vimrc

Plugin 'jiangmiao/auto-pairs' " авто ввод скобок

В vim выполнить команду :PluginInstall


06.01.2018 23:02
8 harushima
0  
vip (Visual In Paragraph) выделить параграф.
>ip передвинуть блок в питоне вправо
(й) https://lisakov.com/blog/vim-comment-block/


06.01.2018 23:19
9 harushima
0  
Закомментировать фрагмент кода в vim:

^vI# Esc

Ctrl+v выделяем строки
Shift+i вставляем левее курсора
вставляем #
жмем Esc


05.02.2018 02:45
10 harushima
0  
С текущей строки до конца файла объеденить все строки в одну:

:.,$j

© http://najomi.org/vim


20.05.2018 18:14
11 harushima
0  
vim:

:ce - выравнивает строку по центру
:ri - выравнивает строку по правому краю
:le - выравнивает строку по левому краю


20.05.2018 19:54
12 harushima
0  
vim
Если же требуется открыть уже имеющийся документ
:Sex


16.04.2019 12:39
13 harushima
0  
С текущей строки до конца файла объеденить все строки в одну

:.,$j


16.04.2019 12:49
14 harushima
0  
отправить текущий файл на исполнение питоном

:!python3 %


20.04.2019 23:10
15 harushima
0  
Используем внешнюю команду системы:
http://qaru.site/questions/77748/best-way-to-insert-timestamp-in-vim
:r! date


20.04.2019 23:41
16 harushima
0  
https://andreyex.ru/operaci....lyshali

:%TOhtml - Создает HTML версию текущего документа. (Попробуйте, это очень полезно).


18.05.2019 19:40
17 harushima
0  
Явно указать кодировку для открытого файла
:e ++enc=cp1251
:e ++enc=utf-8


26.05.2019 02:39
18 harushima
0  
Выбрать формат переноса строк DOS/UNIX:

:set ff=dos
:set ffs=unix


28.06.2019 11:40
19 harushima
0  
Редактирование длинных многострочных строк:
Добавить в ~/.vimrc

# для курсорных клавиш
:noremap <UP> gk
:noremap <DOWN> gj

# для jk
noremap <silent> k gk
noremap <silent> j gj


01.07.2019 03:01
20 harushima
0  
Ещё вариант настроить мапинг: nnoremap j gj и nnoremap k gk


03.07.2019 01:19
21 harushima
0  
Почему, ну почему, эти #?@! придурки используют vi?
https://habr.com/ru/post/307084/


29.12.2019 00:01
22 harushima
0  
Vim и кириллица: парочка приёмов
https://habr.com/ru/post/98393/


29.12.2019 22:37
23 harushima
0  
Открыть файл в vim на заданной (123) строке:
vim filename +123


11.01.2020 17:54
24 harushima
0  
100 команд vim, которые должен знать каждый
https://scabere.livejournal.com/62886.html?nojs=1


17.02.2020 17:18
25 harushima
0  
Найти и удалить все временные файлы vim'а
find ./ -name '*.sw[op]' -delete


18.05.2020 22:18
26 harushima
0  
Неполохой конспект:
Vim Cheat Sheet
https://vim.rtorr.com/lang/ru/


04.01.2021 04:33
27 harushima
0  
Позволяет водить курсор по всему тексту вне зависимости от того, есть ли что-то в этом месте или нет.
Виртуальный режим редактирования, который включается через комстроку:
set virtualedit=all
или в короткой форме:
set ve=all


04.01.2021 04:43
28 harushima
0  
Замена выделения символом:
Выделить, дальше не выходя из режима выделения набрать r и любой символ.


08.02.2021 15:01
29 harushima
0  
Форматирование текста заданной ширины
:set textwidth=50
gggqG
http://hermitlair.ucoz.com/blog/2021-01-02-1197


03.12.2021 05:21
31 harushima
0  
Форматировать по правой границе:
в командном режиме -
:[range]j[lines]

https://coderoad.ru/6577508....у-в-Vim


06.03.2022 07:57
32 harushima
0  
Удалите первые 2 символа каждой строки:
:%normal 2x

Удалите первые 2 символа каждой строки, только если они пробелы:
:%s/^ /

Переместите отступ влево для каждой строки:
:%normal <<


07.09.2022 20:42
33 harushima
0  
Заменить в документе табуляцию на пробелы и обратно.
https://riptutorial.com/vim....to-tabs

В целях защиты от спама, добавлять комментарии могут только зарегистрированные пользователи. Если Вы не хотите регистрироваться под своим именем, войдите под логином: anonymous, паролем: anonymous.   ( Регистрация,   Вход).
Авторизация
Анонимный вход:
anonymous / anonymous

Календарь
«  Июнь 2017  »
ПнВтСрЧтПтСбВс
   1234
567891011
12131415161718
19202122232425
2627282930

Поиск

Облако тэгов
JGSDF игрушки Брюнетки Кладбище сайты Ярость Дракулы Древний Египет девушки кошки Cthulhu Вампиры Kitsune Ужас Аркхема инструмент комиксы Lovecraft готика Submarine submarine rc toy Hosting игротека Ужас Аркхэма book uboat мобильная связь го Edgar Poe swf Mansions of Madness Nightmares персоны Synergy linux-hardware bash youtube Storages Python Мастер-рукожоп Магнитофоны Entropy Grub2 loglevel WiFi Beeline ОПСОСЫ sharp939 Аудиокассеты Windows linuxwork Хочуны ImageMagick топБарыг C64c Commodore

Статистика
Яндекс.Метрика
Онлайн всего: 1
Гостей: 1
Пользователей: 0

Page QR code


Перепечатка материалов сайта без активной ссылки запрещена. Следить за RSS
(c) hermitlair.ucoz.com 2009-2024
Лучший браузер!
Блокировка рекламы