Настройка vim

apt-get install vim

vim называют Богом редакторовоткрыть в новом окне. Вы будете использовать vim для кода во всех PA и лабораторных, а также для редактирования других файлов. Если вы предпочитаете emacs, можете скачать и установить emacs с сетевых зеркал.

Изучение vim

Вас попросят изменить файл с помощью vim. Для большинства из вас это будет первый раз, когда вы используете vim. Операции в vim сильно отличаются от других редакторов, которыми вы пользовались. Чтобы выучить vim, вам нужно руководство. Есть два способа получить руководства:

  • Выполните команду vimtutor в терминале. Это запустит учебник по vim. Этот способ рекомендуется, потому что вы можете читать учебник и практиковаться одновременно.
  • Ищите в интернете по ключевому слову "vim 教程", и вы найдёте много руководств по vim. Выберите некоторые из них для чтения, а пока можете практиковаться с временным файлом командой
vim test

ПРАКТИКА ОЧЕНЬ ВАЖНА. Вы ничему не научитесь, только читая руководства.

Почему вы не учите меня пользоваться GNU/Linux на занятиях?

Вы можете думать: это мой первый раз с GNU/Linux, почему вы не покажете, как им пользоваться, на занятиях?

Потому что руководства не для того, чтобы их рассказывали, — их нужно читать и пробовать. Вы не изучаете инструменты по слухам, вы учитесь делая. То, что вы должны изучать в университетской аудитории, — это знание. Затем нужно думать о принципах и идеях за этим знанием и уметь применять эти принципы и идеи в новых областях.

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

Некоторые игры, в которые играют с vim

Вот несколько игр, которые помогут освоить базовые операции в vim. Развлекайтесь!

Сила vim

Вы, возможно, никогда не задумывались, что можно сделать в таком «ПЛОХОМ» редакторе. Посмотрим два примера.

Первый пример — сгенерировать следующий файл:

1
2
3
.....
98
99
100

В этом файле 100 строк, и каждая строка содержит число. Что вы будете делать? В vim это проще простого. Сначала переведите vim в обычное состояние (когда vim только что открыт, он в обычном состоянии), затем последовательно нажмите следующие клавиши:

i1<ESC>q1yyp<C-a>q98@1

где <ESC> означает клавишу ESC, а <C-a> здесь означает "Ctrl + a". Вы нажимаете не больше 15 клавиш, чтобы сгенерировать этот файл. Удивительно? А файл на 1000 строк? Нужно нажать всего на одну клавишу больше:

i1<ESC>q1yyp<C-a>q998@1

Магия за этим примером — запись и воспроизведение. Вы инициализируете файл первой строкой. Затем записываете генерацию второй. После этого воспроизводите генерацию 998 раз, чтобы получить файл.

Второй пример — изменить файл. Предположим, у вас такой файл:

aaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccccccddddddddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeeeeefffffffffffffffffffffffff
ggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhh
iiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjj

Вы хотите изменить его в:

bbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaa
dddddddddddddddddddddddddccccccccccccccccccccccccc
fffffffffffffffffffffffffeeeeeeeeeeeeeeeeeeeeeeeee
hhhhhhhhhhhhhhhhhhhhhhhhhggggggggggggggggggggggggg
jjjjjjjjjjjjjjjjjjjjjjjjjiiiiiiiiiiiiiiiiiiiiiiiii

Что вы будете делать? В vim это тоже проще простого. Сначала поставьте курсор на первую "a" в первой строке. Переведите vim в обычное состояние, затем последовательно нажмите следующие клавиши:

<C-v>24l4jd$p

где <C-v> здесь означает "Ctrl + v". А файл со 100 такими строками? Нужно нажать всего на одну клавишу больше:

<C-v>24l99jd$p

Хотя эти два примера искусственные, они показывают мощную функциональность vim по сравнению с другими редакторами, которыми вы пользовались.

Включение подсветки синтаксиса

vim даёт больше улучшений по сравнению с vi. Но эти улучшения по умолчанию выключены. Поэтому сначала их нужно включить.

Возьмём подсветку синтаксиса как пример, чтобы показать, как включать возможности vim. Для этого нужно изменить конфигурационный файл vim. Файл называется .vimrc и находится в каталоге /etc/vim. Сначала скопируем его в домашний каталог командой cp:

cp /etc/vim/vimrc ~/.vimrc

И перейдите в домашний каталог, если вы ещё не в нём:

cd ~

Если вы используете ls, чтобы перечислить файлы, вы не увидите .vimrc, который только что скопировали. Это потому, что файл, имя которого начинается с ., в GNU/Linux является скрытым. Чтобы показать скрытые файлы, используйте ls с опцией -a:

ls -a

Затем откройте .vimrc с помощью vim:

vim .vimrc

После того как вы освоите некоторые базовые операции в vim (например, перемещение, вставку текста, удаление текста), можете попробовать изменить файл .vimrc следующим образом:

--- before modification
+++ after modification
@@ -17,3 +17,3 @@
 " Vim5 and later versions support syntax highlighting. Uncommenting the next
 " line enables syntax highlighting by default.
-"syntax on
+syntax on

Мы представляем изменение в формате GNU diffоткрыть в новом окне. Если вы не понимаете формат diff, ищите в интернете дополнительную информацию.

Зачем STFW?

Вы можете подумать: «Я спрашиваю, чтобы сэкономить своё время».

Но это век интернета, где можно получить любую информацию. Например, стандартизированная информация вроде формата diff на 100% доступна в интернете Проблема, с которой вы столкнулись, с высокой вероятностью уже кем-то задавалась в интернете. Если для проблемы, решение которой вы могли найти, набрав несколько ключевых слов в поисковике, вместо этого крошечного усилия вы сначала пытаетесь найти кого-то, кто решит её за вас, отнимая чужое драгоценное время, вы будете неудачником эпохи.

Отсюда термин STFW (Search The F**king Web), который означает: попытайтесь самостоятельно найти решение, правильно используя поисковик, прежде чем просить помощи.

Правильный подход к STFW может повысить вероятность найти решение, включая

Если вы не использовали вышеперечисленное для STFW, пожалуйста, не жалуйтесь, что не можете найти решение, и не начинайте просить помощи. Вы должны подумать: «О, я только что пользовался Baidu, дальше стоит попробовать Google». Насчёт использования Google: в университете можно попробовать настроить IPv6 или настроить «Scientific Internet Access», пожалуйста, STFW.

Почему не пользоваться Baidu?

Уверен, вы все пользовались Baidu для поиска нетехнических вопросов, и обычно ответы находятся легко. Но по мере того как вопросы становятся более техническими, результаты поиска Baidu становятся всё менее надёжными. Если вы будете упорно искать технические вопросы через Baidu, вы, скорее всего, столкнётесь с одной из следующих ситуаций.

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

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

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

Когда закончите, сохраните изменение. Выйдите из vim и снова откройте файл .vimrc — вы должны увидеть, что подсветка синтаксиса включена.

Зачем все эти сложности?

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

Это ради того, чтобы «делать как римляне»: мы хотим, чтобы вы поняли, как использовать компьютерное мышление, чтобы кратко и точно выражать то, что мы хотим сделать. Формат diff — обычный способ описывать изменения в файлах. На самом деле в компьютерном мире много соглашений. и по мере того как вы будете с ними знакомиться, вы незаметно для себя поймёте, как устроен компьютерный мир.

Включение дополнительных возможностей vim

Измените упомянутый выше файл .vimrc следующим образом:

--- before modification
+++ after modification
@@ -21,3 +21,3 @@
 " If using a dark background within the editing area and syntax highlighting
 " turn on this option as well
-"set background=dark
+set background=dark
@@ -31,5 +31,5 @@
 " Uncomment the following to have Vim load indentation rules and plugins
 " according to the detected filetype.
-"filetype plugin indent on
+filetype plugin indent on
@@ -37,10 +37,10 @@
 " The following are commented out as they cause vim to behave a lot
 " differently from regular Vi. They are highly recommended though.
 "set showcmd            " Show (partial) command in status line.
-"set showmatch          " Show matching brackets.
-"set ignorecase         " Do case insensitive matching
-"set smartcase          " Do smart case matching
-"set incsearch          " Incremental search
+set showmatch          " Show matching brackets.
+set ignorecase         " Do case insensitive matching
+set smartcase          " Do smart case matching
+set incsearch          " Incremental search
 "set autowrite          " Automatically save before commands like :next and :make
-"set hidden             " Hide buffers when they are abandoned
+set hidden             " Hide buffers when they are abandoned
 "set mouse=a            " Enable mouse usage (all modes)

Вы можете дописать следующее содержимое в конец файла .vimrc, чтобы включить больше возможностей. Заметьте, что содержимое после двойной кавычки " — комментарии, и включать их не обязательно. Разумеется, вы можете разобрать каждую возможность и решить, включать её или нет.

setlocal noswapfile
set bufhidden=hide 
colorscheme evening 
set number 
set cursorline 
set ruler 
set shiftwidth=2 
set softtabstop=2 
set tabstop=2 
set nobackup 
set autochdir 
set backupcopy=yes 
set hlsearch 
set noerrorbells 
set novisualbell 
set t_vb= 
set matchtime=2 
set magic 
set smartindent 
set backspace=indent,eol,start 
set cmdheight=1 
set laststatus=2 
set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ Ln\ %l,\ Col\ %c/%L%) 
set foldenable 
set foldmethod=syntax 
set foldcolumn=0 
setlocal foldlevel=1 
nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR> 

Редактор, который повышает эффективность разработки

На курсе программирования вы научились пользоваться Visual Studio и, вероятно, решили, что программисты пишут код именно так. На самом деле нет: программисты ищут способы повысить эффективность.

::::Это не то что GUI плох, а то что вы пишете код так, как писали бы его в Блокноте.

Поэтому вам нужно измениться и попробовать инструменты, которые помогут быть продуктивнее.

В GNU/Linux изучение основ vim уже может сильно улучшить подход в стиле блокнота. Есть также различные плагины, усиливающие vim, например ctags для перехода по переменным в коде и т.д. Можете потратить время на настройку vim, пожалуйста, STFW. Короче, «Бог редакторов» — не просто так.