Vim / vi Практические советы для освоения системы

Хуан,

Мне нравится думать о интерфейсах как способе охарактеризовать класс. Определенный класс породы собак, скажем, YorkshireTerrier, может быть потомком родительского класса собак, но он также реализует IFurry, IStubby и IYippieDog. Таким образом, класс определяет, что такое класс, но интерфейс сообщает нам об этом.

Преимущество этого заключается в том, что он позволяет, например, собрать все IYippieDog и выбросить их в мою коллекцию Ocean. Поэтому теперь я могу охватить определенный набор объектов и найти те, которые соответствуют критериям, на которые я смотрю, не слишком внимательно изучая класс.

Я считаю, что интерфейсы должны действительно определять подмножество публики поведение класса. Если он определяет все публичное поведение для всех реализуемых классов, то обычно это не требуется. Они не говорят мне ничего полезного.

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

Поэтому, если вы думаете, как я, вы определенно скажете, что Cat and Dog - это IPettable. Это характеристика, которая соответствует их обоим.

. Другая часть этого, хотя, должна ли она иметь тот же базовый класс? Вопрос заключается в том, что их нужно рассматривать в целом как одно и то же. Конечно, они оба - Животные, но это соответствует тому, как мы будем использовать их вместе.

Скажем, я хочу собрать все классы Animal и поместить их в контейнер Ark.

Или они должны быть млекопитающими? Возможно, нам нужна какая-то крестовая доильная фабрика?

Нужно ли вообще связываться с ними? Достаточно ли просто знать, что они оба являются IPettable?

Я часто чувствую желание получить целую иерархию классов, когда мне действительно нужен только один класс. Я делаю это в ожидании, когда-нибудь мне это понадобится, и обычно я никогда этого не делаю. Даже когда я это делаю, я обычно нахожу, что я должен многое сделать, чтобы исправить это. Это потому, что первый класс, который я создаю, - это не Собака, мне не повезло, это вместо Платипа. Теперь вся моя иерархия классов основана на странном случае, и у меня много потерянного кода.

В какой-то момент вы также можете обнаружить, что не все кошки имеют IPettable (например, этот голый). Теперь вы можете перенести этот интерфейс на все подходящие производные классы. Вы обнаружите, что гораздо менее резкое изменение, которое внезапно вызывают кошки, больше не происходит из PettableBase.

21
задан 4 revs, 3 users 100% 26 June 2009 в 04:54
поделиться

31 ответ

Я сохранял Карта Vi Reference со мной в течение многих лет. Это очень полезно.

27
ответ дан hongster 29 November 2019 в 06:10
поделиться

Как переключиться между режимами (я для ввода режима вставки (один из многих путей), esc для выхода из режима вставки, двоеточия для командного режима) и как сохранить и выйти. (: wq)

0
ответ дан DJ Capelis 29 November 2019 в 06:10
поделиться

Другая полезная команда должна искать что-то: / например, понедельник / будет искать (и в случае выделения энергии) любые происшествия понедельника в Вашем файле.

0
ответ дан 29 November 2019 в 06:10
поделиться

Как несколько других людей уже упомянули, vimtutor является способом пойти. Это будет преподавать Вам все, что необходимо знать в энергии. Одна часть общих рекомендаций, которые я дал бы Вам, должна остаться вне режима вставки как можно больше. Существует огромное питание в других режимах, просто требуется определенная практика для привыкания к нему.

0
ответ дан Paul Wicks 29 November 2019 в 06:10
поделиться

я - режим вставки (Escape для выхода) dd - удаляет увертливую строку - 'янки' (копия) строка p - 'Помещенный' (вставка) shift-v строки (строк) - режим Visual раньше выбирал текст (пробующий 'дергающий' этот текст и 'помещающий' его где-нибудь. ctrl-w n - создает новое окно (можно открыть файл или запустить новый файл здесь), ctrl-w v - разделил существующее окно вертикально ctrl-n (в режиме вставки) - автоматическое заполнение (если поддерживается):! выполнять команду оболочки, обычно со стандартом в как файл или выбор (shift-V)

Полезные плагины для взгляда на: * Буферный Проводник - использует \be для просмотра файлов в буфере (и выбор, чтобы вновь открыться)

0
ответ дан jonfm 29 November 2019 в 06:10
поделиться

NB vi не является энергией! энергия быстро превращается в emacs нового века. nvi является, вероятно, самой близкой вещью к исходному vi. Вот хорошая подсказка: "xp" будет обмениваться двумя символами (попробуйте его).

0
ответ дан 29 November 2019 в 06:10
поделиться

замените 'нечто' 'панелью' везде в файле: %s/foo/bar/gc

0
ответ дан nikolay 29 November 2019 в 06:10
поделиться

Действительная мощность находится в поиске. Вот существенные команды:

/Steve найдет первую инстанцию "Steve" в тексте. n найдет следующего "Steve" в тексте.: %s//Stephen/g заменит все те экземпляры "Steve", которого Вы просто искали с "Stephen".

для Не продвижения меня но я записал сообщение блога на этом предмете. Это фокусируется на критических частях Vim для новичка.

0
ответ дан Steve Rowe 29 November 2019 в 06:10
поделиться

Одна из моих любимых команд является %G, который берет к непосредственно до конца файла. Особенно полезный в файлах журнала.

0
ответ дан 29 November 2019 в 06:10
поделиться

Моя самая большая подсказка: ctrl + q спасает положение, когда Вы случайно совершаете нападки ctrl + s , чтобы сохранить файл, Вы работаете над

1
ответ дан Valery Viktorovsky 29 November 2019 в 06:10
поделиться

Хотя это - вопрос персонального предпочтения, я нашел, что одна из существенных вещей сделать состоит в том, чтобы повторно отобразить Esc на что-то еще.

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

я в настоящее время использую следующее отображение с помощью Control + S:

inoremap <C-s> <Esc>:w<CR>

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

3
ответ дан Sergio Acosta 29 November 2019 в 06:10
поделиться
6
ответ дан metao 29 November 2019 в 06:10
поделиться

Когда у Вас есть некоторое повторяющееся действие для взятия Макросов, обычно быстрее, чем regex. Просто тип

q[0-9a-z] in normal mode

, который Многие люди используют

qq

, потому что это быстро. Нажмите q в нормальном режиме снова, чтобы прекратить записывать. Тогда просто тип

@[0-9a-z] in normal mode

для повторения то, что Вы просто записали.

@q

для примера как вышеупомянутый.

Отредактированный для добавления: можно также повторить макрос. Скажем, Вы программировали макрос, чтобы перейти главе строки, вставить вкладку, и затем спрыгнуть от одной строки. Вы тогда тестируете свой макрос путем ввода "@q" для выполнения его однажды. Тогда можно повторить действие еще девять раз путем ввода "9@q".

5
ответ дан Community 29 November 2019 в 06:10
поделиться
:q -> quit
:w -> save
:q! -> quit and don't save
:x -> save and quit
:[number] -> go to line number
G -> go to end of file
dd -> delete line
p -> "put" line
yy -> "copy" line
:s/[searchfor] -> search

я предполагаю, что те - основной для запуска от

4
ответ дан kementeus 29 November 2019 в 06:10
поделиться

Используйте 'J' (J для Соединения; верхний регистр), управляют для удаления новой строки в конце строки. Вы найдете его хитрым иначе.

4
ответ дан Agnel Kurian 29 November 2019 в 06:10
поделиться
4
ответ дан gnobal 29 November 2019 в 06:10
поделиться
" ~/.vimrc
" Turn on line numbering
set nu
" Turn on syntax highlighting
syntax on    
" Set 4 space expanding tabs
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
"turn off line wrapping
set nowrap
" Map CTRL-N to create a new tab
:map <C-n> <ESC>:tabnew<RETURN>
" Map Tab and CTRL-Tab to move between tabs
:map <Tab> <ESC>:tabn<RETURN>
:map <C-Tab> <ESC>:tabp<RETURN>
2
ответ дан 29 November 2019 в 06:10
поделиться

При использовании энергии команда 'u' (в командном режиме) Отменит последнюю команду, которую Вы ввели. Можно использовать эту команду неоднократно для отмены ошибок, которые Вы, возможно, сделали прежде, чем сохранить файл.

2
ответ дан 29 November 2019 в 06:10
поделиться

См. http://www.rayninfo.co.uk/vimtips.html для большого набора подсказок по Vim от основного can't-live-without до очень сложного материала, что Вы никогда, возможно, не думали о попытке.

2
ответ дан JP Lodine 29 November 2019 в 06:10
поделиться

Много больших команд перечислено в подсказки Wiki по Vim.

2
ответ дан Jonas 29 November 2019 в 06:10
поделиться

Также хорошо работать vimtutor при изучении этих команд

1
ответ дан epatel 29 November 2019 в 06:10
поделиться

исказите vi nedit:)

весь юмор в стороне.. для vi ЕСЛИ НЕ с помощью nedit..

  • i (переключаются на режим вставки)
  • a (добавляют =, перемещаются в конец строки и переключаются на режим вставки)
  • esc (выйдите из режима вставки)
  • dd удаляют строку
  • x, удаляют символ
  • :wq (сохраните и выйдите)
  • / запускаются, поиск
  • n находят Затем
  • ? поиск назад..
  • yy (рывок) копия строка к буферу
  • pp (вставка) вставляет его здесь
  • r (замените символ)
  • <N> <command> это - аккуратное - но функция ухудшения, которая позволяет Вам ввести цифры и затем команду так
  • 5dd, удалит 5 строк

, но в этой точке Вы могли бы также - man vi и обновлять Вашу память

, В то время как существуют ПАРТИИ больше, я переключился от Vi на nedit несколько лет назад, который я нахожу, имеет больше функций, которые я могу использовать регулярно более легко. Редактирование с вкладками, возрастающая панель поиска, выбор столбца, копия и вставка. вид выбрал строки, "найти и уничтожить" в рамках выбора, целого документа или всех открытых документов.. слеза - от выпадающих меню.. и это поддерживает подсветку синтаксиса для всех языков, которые я использую.. (с файлами шаблона я использовал долгое время за эти годы. VIM многие теперь быть эквивалентным, но Это должно представить функцию, которую Nedit не делает и простой способ переместить мои файлы шаблона, прежде чем я переключусь снова.

1
ответ дан jbdavid 29 November 2019 в 06:10
поделиться

Мне нравится справочник Vim 5.6 Bram Moolenaar и Oleg Raisky.
можно непосредственно распечатать его в форме буклета, легкой читать, у меня всегда есть он кладущий вокруг.
Это немного старо, но что такое составляют 8 лет в продолжительности жизни Vi?

1
ответ дан Berzemus 29 November 2019 в 06:10
поделиться

В первую очередь, необходимо знать, как закрыть vi: ctrl-c: q!

Отдых может быть найден от vimtutor. Запустите vimtutor путем ввода vimtutor в командной строке

3
ответ дан 29 November 2019 в 06:10
поделиться
:set ignorecase smartcase

Делает поиск нечувствительным к регистру, если Ваш поиск не включает прописную букву. Не большинство необходимый, возможно, но я устанавливаю эту опцию любое время, которое я редактирую в новом месте. Это находится в любом vimrc файле, которым я владею.

1
ответ дан Jeff 29 November 2019 в 06:10
поделиться

Я был очень счастлив день, который я узнал об использовании * или # для поиска, вниз или соответственно, для слова под курсором. Удостоверьтесь к :set incsearch и :set hlsearch сначала.

8
ответ дан MarkHu 29 November 2019 в 06:10
поделиться

Что я нахожу незаменимыми (потому что это работает в vi также, в отличие от визуального режима энергии) метки. Можно отметить различные пятна с m (нижний регистр) и затем буква по Вашему выбору (например, x). Тогда Вы идете в другое место и можете возвратиться с ''x (backquote letter) to the exact spot, or with 'x' (буква апострофа) для движения в строку.

Эти перемещения могут использоваться в качестве аргументов командам (рывок, удалить, и т.д.). Например, Вы хотите удалить 10 строк; вместо того, чтобы рассчитать и затем переместиться в самую верхнюю строку и войти 10dd, Вы переходите к запуску или в концу блока, нажимаете mm (отметьте m), затем перейдите к другому концу блока и нажмите d'm (удалите апостроф m). Если Вы будете использовать одинарную левую кавычку вместо апострофа в этом примере, то удаление будет работать символьно-мудрое, не мудрый строкой. Попытайтесь отметить посреди строки с "меткой m", переместившись в середину другой строки, затем введя "d одинарную левую кавычку m", и Вы будете видеть то, что я имею в виду.

14
ответ дан Rich 29 November 2019 в 06:10
поделиться

Мои избранные:

%  find matching bracket/brace 
* and #  next/previous match
gg top of page
G end of the page
<Ctrl-v> Change to visual mode and select column
<Ctrl-a> increase current number by 1
<Ctrl-x> decrease current number by 1
Running macros
0
ответ дан 29 November 2019 в 06:10
поделиться
:%!xxd

Просмотр содержимого буфера в шестнадцатеричном формате. Для возврата:

:%!xxd -r 
1
ответ дан 29 November 2019 в 06:10
поделиться

Я использую vi очень слегка, и я только использую следующие команды:

a   - switch to insert mode (after the cursor)
esc - return to command mode
:wq - save and quit
:q  - quit (no save, only without modification)
:q! - force quit (no save, also with modification)
x   - delete one character (in command mode)
dd  - delete the whole line (in command mode)

я знаю, что еще существуют многие, но тех достаточно для получения Вас.

0
ответ дан Giuseppe Ricupero 29 November 2019 в 06:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: