Настройка 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 может повысить вероятность найти решение, включая
- Искать общие вопросы с помощью поисковика Google
- Использовать английскую Википедию для проверки понятий
- Искать вопросы, связанные с программированием, на сайте вопросов и ответов stack overflow
Если вы не использовали вышеперечисленное для 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. Короче, «Бог редакторов» — не просто так.
