Я ищу подсказки для изучения Vim или Emacs умный путь

Другое использование произошло со мной сегодня, таким образом, я искал сеть взволнованно и нашел существующее упоминание о ней: Переменные Определения в Области действия блока .

Фон

JavaScript, несмотря на его поверхностное подобие C и C++, не определяет объем переменных к блоку, в котором они определяются:

var name = "Joe";
if ( true )
{
   var name = "Jack";
}
// name now contains "Jack"

Объявление закрытия в цикле является общей задачей, куда это может привести к ошибкам:

for (var i=0; i<3; ++i)
{
   var num = i;
   setTimeout(function() { alert(num); }, 10);
}

, поскольку для цикла не представляет новый объем, тот же num - со значением 2 - будет совместно использован всеми тремя функциями.

А новый объем: let и with

С введением let оператор в [1 113] ES6, становится легко представить новый объем при необходимости для предотвращения этих проблем:

// variables introduced in this statement 
// are scoped to each iteration of the loop
for (let i=0; i<3; ++i)
{
   setTimeout(function() { alert(i); }, 10);
}

Или даже:

for (var i=0; i<3; ++i)
{
   // variables introduced in this statement 
   // are scoped to the block containing it.
   let num = i;
   setTimeout(function() { alert(num); }, 10);
}

, Пока ES6 не универсально доступен, это использование остается ограниченным новейшими браузерами и разработчиками, готовыми использовать transpilers. Однако мы можем легко моделировать это поведение с помощью [1 110]:

for (var i=0; i<3; ++i)
{
   // object members introduced in this statement 
   // are scoped to the block following it.
   with ({num: i})
   {
      setTimeout(function() { alert(num); }, 10);
   }
}

цикл теперь работает намеченным, создавая три отдельных переменные со значениями от 0 до 2. Обратите внимание, что переменные объявили в [1 115], блок не ограничен по объему к нему, в отличие от поведения блоков в C++ (в C, переменные должны быть объявлены в начале блока, так способом это подобно). Это поведение на самом деле весьма схоже с let синтаксис блока представленный в более ранних версиях браузеров Mozilla, но не широко принятое в другом месте.

38
задан Community 23 May 2017 в 11:53
поделиться

15 ответов

Я бы посоветовал проверить и то, и другое стоит потраченного времени из-за различных причин, уже охваченных другими ответами или темами «Emacs vs vim vs XY».

Тем не менее, если вам придется выбирать одно из них я бы выбрал vim по одной причине:

Доступность

Vi (m) имеет то преимущество, что он устанавливается (не только доступен) по умолчанию почти в любой системе * nix. Так что неважно, ваша система или чья-то еще, и разрешено ли вам вносить в нее изменения или нет, ваш любимый текстовый редактор и друг ждут вас.

Как только вы узнаете vi ( м) это здорово в тех ситуациях, когда вы подключаетесь к машине по ssh и вам нужно что-то делать с текстом (навигация по файлу, редактирование, что угодно). Вы почувствуете себя королем. Я помню несколько раз, когда я почти волновался, потому что nano или pico не были установлены, и мне приходилось использовать «этого уродливого зверя vi», который делал непредсказуемые вещи, когда я начинал печатать (потому что я не был в режиме вставки и даже не знал что это было) и когда я был счастлив погуглить, что ": wq!" возвращает меня из ада. Теперь я могу оглянуться назад и улыбнуться этому.

У меня общее ощущение, что vim и emacs - это не редактор вы учитесь, «играя с ним», хотя

Vim и Emacs, безусловно, являются редакторами, которые вы « изучаете, выполняя ».

Конечно, вопрос требует включения этих высоконаучных графиков кривой обучения текстового редактора =)

classical learning curves for some common text editors

Вначале Vim может быть немного сложнее, потому что его модальное редактирование поначалу может показаться совершенно незнакомым. Я думаю, что мотивация здесь ключ. Статья " Почему, о, ПОЧЕМУ, эти # ? @! психопаты используют vi? ", я думаю, довольно хорошо объясняет преимущества. На мой взгляд, действительно стоит попробовать, даже если кривая обучения может быть круче, чем с другими редакторами, и похоже, что вы приносите необходимую мотивацию.

Вернемся к обучению путем выполнения .

Что-то, что я бы хотел сделать в первый раз:

Посмотрите Vimtutor . Это интерактивное руководство, демонстрирующее мощь vim, демонстрируя его основные команды и то, как они могут быть составлены. Просто введите vimtutor в свой терминал.

Это помогло мне действительно « получить его » после попытки выучить редактирование с помощью vim несколько раз в прошлом. Учебное пособие значительно упрощает процесс обучения, поскольку объясняет команды и заставляет вас выполнять их, чтобы они стали привычкой. Это действительно имеет значение по сравнению с разочарованием из-за чувства инвалидности. Используя vimtutor , вы также увидите, каковы преимущества модального редактирования, и вместо того, чтобы бороться или игнорировать его, вы воспользуетесь им, потому что вы испытали преимущества на собственном опыте. Думаю, самому этому научиться довольно сложно. Так что эти 30 минут того стоят.

Используя vimtutor , вы также увидите, каковы преимущества модального редактирования, и вместо того, чтобы бороться или игнорировать его, вы воспользуетесь им, потому что вы испытали преимущества на собственном опыте. Думаю, самому этому научиться довольно сложно. Так что эти 30 минут того стоят.

Используя vimtutor , вы также увидите, каковы преимущества модального редактирования, и вместо того, чтобы бороться или игнорировать его, вы воспользуетесь им, потому что вы испытали преимущества на собственном опыте. Думаю, самому этому научиться довольно сложно. Так что эти 30 минут того стоят.

34
ответ дан 27 November 2019 в 03:19
поделиться

Этот замечательный учебник очень помог мне в моих первых шагах в Vim. Это мягкое введение и в то же время приятное объяснение философии vim:

aByteOfVim

1
ответ дан 27 November 2019 в 03:19
поделиться

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

1
ответ дан 27 November 2019 в 03:19
поделиться

Это действительно должно быть комментарием, но против какого ответа ...

С Vim я бы предложил для начала использовать версию с графическим интерфейсом пользователя, просто погрузитесь, встроенная справка превосходна (: h , и экран разделяется, добавляется панель с подробными страницами справки с гиперссылками). С vim единственная потенциально опасная операция - это запись, все остальное, что вы делаете, можно восстановить с помощью команды или редактирования (отменить и повторить).

Приобретаемая сила легко стимулирует обучение.

1
ответ дан 27 November 2019 в 03:19
поделиться

Возможно, хороший способ - изучить vim / emacs при использовании eclipse. Попробуйте плагины vimplugin или emacsplus для eclipse.

1
ответ дан 27 November 2019 в 03:19
поделиться

Прежде всего, будь скромным.

Пока вы понимаете, что это очень мощные инструменты, с вами все будет в порядке. Если вы считаете задачу очень сложной и думаете: «Отстой у меня только я, а не редактор», значит, вы в правильном уме, чтобы учиться и совершенствоваться.

7 привычек Брэма - хорошие принципы, которым нужно следовать. http://www.moolenaar.net/habits.html

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

2
ответ дан 27 November 2019 в 03:19
поделиться

Вау, vi / vim против emacs, какое искушение ...

С точки зрения пользователя vi ...

  • Всегда там
    vi включен почти во всех unix система, когда-либо выпущенная, в установке по умолчанию и доступная для Win
  • Может спасти вас от RSI
    vi использует клавиши домашней строки практически для всего, модификаторы, такие как control и meta, используются только для редко вызываемых функций и даже shift -ключевое использование умеренное. Вероятно, все это было просто счастливой случайностью, но не смейтесь над RSI. Это может случиться с кем угодно, это очень болезненно, это может привести к окончанию карьеры и трудно вылечить.
  • Запускается мгновенно .
    В прошлом это было огромным преимуществом перед emacs. Пользователям Emacs приходилось запускать только один раз и перемещаться по emacs повсюду. Сегодня запускается быстрее, но в vi это ' Совершенно разумно полностью отказываться от него в каждом цикле компиляции или тестирования.
  • Имеет потрясающий линейный режим
    Строчный режим в vi обратно совместим с исходной программой Unix ed (1), редактором, в котором был только линейный режим. То есть механизм подстановки регулярных выражений - / - line-editor в vi когда-то был редактором сам по себе.
  • Легко настраиваемый
    Есть кое-что, что вы хотите сделать с каждым .whatever файлом в вашем проекте? Легко написать декларативный сценарий, который будет редактировать последовательность файлов. Нет необходимости в императивном или процедурном программировании.
  • Легко расширяемый
    Vim, по крайней мере, может быть расширен на Python.
2
ответ дан 27 November 2019 в 03:19
поделиться

Я бы выбрал Emacs. Явное имя команды облегчит вашу задачу. Я перешел на emacs после того, как у меня был многолетний опыт работы с vi, и никогда не оглядывался назад. Сначала обратитесь к руководству. Общайтесь на #emacs в irc, и люди будут рады помочь вам в реальном времени во всем, что вам нужно.

3
ответ дан 27 November 2019 в 03:19
поделиться

My advice for learning emacs is to understand that everything is done by a command (written in elisp) that is connected (bound) to the key strokes that you make. The power of emacs comes from being able to write new commands and use commands that are not bound to keys (there are too many commands to bind each one to a command.) as well, of course, read and modify commands that are already in emacs.

Next learn how to use the Help key and how to make a key binding list, then how to search for relevant commands (apropos) and see if they are bound already.

Be ready to take learning diversions into the emacs manual (Help, Read manual, Emacs manual).

2
ответ дан 27 November 2019 в 03:19
поделиться

Некоторое время назад я решил изучить vim помимо Eclipse из-за его мощных функций текстового редактирования, поиска и навигации. Но - в то же время - мне понравились функции Eclipse для обработки проекта, завершения кода, рефакторинга и отладки, и я не хотел их терять.

В настоящее время я использую плагин Eclipse под названием vrapper , который предоставляет me почти все основные функции vim внутри Eclipse без потери функциональности Eclipse. Конечно, это не полнофункциональный vim, но он дал мне "ожидаемый" прирост производительности (движения, оператор точки, регистры и метки). Кроме того, этот плагин можно считать «пробной» версией vim, где вы можете изучить все базовые и некоторые расширенные возможности в своей «самой известной» среде.

Есть еще один интересный подход, называемый eclim . Eclim интегрирует Eclipse с vim со стороны vim, поэтому вы можете использовать многие функции Eclipse в vim.

Для изучения основ vim эта графическая шпаргалка мне очень помогла.

4
ответ дан 27 November 2019 в 03:19
поделиться

I came to Vim when I started using Linux after years of Windows development, and had to do a lot of work on remote systems via ssh. For the first couple of weeks hated it. After that I could not live without it.

Probably the best way to start is to use Vim in easy mode ([g]vim -y), most installations have a shortcut called evim. This runs vim in a mode that is in insert mode by default and remaps keys to the usual Windows ones (ctrl-S to save, ctrl-X to cut etc). You can then use it like a regular Windowsy editor but still access the power of Vim.

There is also Cream which is Vim + a bunch of scripts to make it behave even more like a Windows editor.

I started out using evim and Cream, but found I gradually transitioned to using 100% vim.

Also if you use gvim then most of the functionality is also available through the menus and you can see the keystrokes for the same functionality.

Also read the docs - there are extensive help files available on every aspect. I still browse them from time to time and find something new.

7
ответ дан 27 November 2019 в 03:19
поделиться

Для vim попробуйте vimtutor

10
ответ дан 27 November 2019 в 03:19
поделиться

One argument in favor of Vim if you know Python is that you can write Vim scripts in Python. See :h python. Emacs requires you to learn elisp.

I find myself gravitating toward Vim for scripting languages like Ruby/Perl/Python/PHP, and for Emacs for languages that are more interactive (Lisp, essentially). If you develop your Python code using an interactive Python shell a lot, Emacs might be good, because you can embed a Python shell right into Emacs. If you write code and run it from commandline a lot, Vim can handle that easily enough via :make or :!.

I really recommend you learn both and pick whichever you like better. They are both worth knowing.

2
ответ дан 27 November 2019 в 03:19
поделиться

I have the general feeling that vim and emacs are not the kind of editor you learn by "playing with it" though.

My experience with emacs is actually quite the opposite. I tried going through the tutorial, but it didn't seem to help much. The way I ultimately ended up learning is with a reference card and just forced myself to use emacs on my code until I got it correct*. Then again, I do also have a screw loose. Your milage may vary. Offer void where prohibited. You get the idea.

One other piece of advice I recall reading somewhere is to try writing down a list of about 10 commands you want to learn and keep it by you while coding. Once you've mastered those commands, make another list of 10 more. Keep doing this until you've got a big enough chunk of the editor committed to memory.

*Note that the linked reference card is out-of-date. If you google, you can get a more up-to-date reference card.

knowing that I have no prior испытать что-либо на любом из два, которые я использую и развиваю (в основном PHP и Python) на GNU / linux системы (ubuntu, archlinux), есть ли любой из двух, которые будут представлять лучший вариант для начала?

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

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

14
ответ дан 27 November 2019 в 03:19
поделиться

Используя VIM, я считаю следующую краткую справочную карточку очень полезной, особенно для вещей, которые я не делаю каждый день: VIM QuickReference

Для emacs вы должны прочитать Руководство по GNU Emacs . Не пытайтесь делать все сразу. Начните с базовых вещей, а затем переходите к более мощным функциям, когда вы освоите более простые вещи.

4
ответ дан 27 November 2019 в 03:19
поделиться