Используя вкладки Vim как буферы

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

357
задан Keith Pinson 2 July 2012 в 08:59
поделиться

6 ответов

Остановитесь, остановитесь, остановитесь.

Это не то, как вкладки Vim разработаны, чтобы использоваться. На самом деле они неверно называются. Лучшее имя было бы "областью просмотра" или "расположением", потому что это что вкладка is— это - различное расположение окон [1 116] весь из Ваших существующих буферов.

Попытка разбить Vim в 1 вкладку == 1 буфер является упражнением в тщетности. Vim не знает или заботится, и он не будет уважать его на всем commands— в частности, что-либо, что использует буфер quickfix (:make, :grep, и :helpgrep те, которые приходят на ум) счастливо проигнорирует вкладки, и нет ничего, что можно сделать для остановки этого.

Вместо этого:

  • :set hidden
    , Если у Вас уже нет этого набора, затем сделайте так. Это заставляет энергию работать как любые несколько-редакторов-файлов над планетой. Можно было отредактировать буферы, которые не видимы в окне где-нибудь.
  • Использование :bn, :bp, :b #, :b name, и ctrl-6 для переключения между буферами. Мне нравится ctrl-6 самому (один, это переключается на ранее используемый буфер, или #ctrl-6 переключатели для буферизации номера #).
  • Использование :ls для списка буферов или плагина как [1 113] MiniBufExpl или BufExplorer.
616
ответ дан OliverUv 23 November 2019 в 00:19
поделиться

Я столкнулся с той же проблемой. Я хотел, чтобы вкладки работали как буферы, и мне никогда вполне удается получить их к. Решение, на котором я наконец обосновался, состояло в том, чтобы заставить буферы вести себя как вкладки!

Выезд плагин, названный Мини-Буферный Проводник , когда-то установленный и настроенный, Вы будете в состоянии работать с буферами фактически тот же путь как вкладки, не теряя функциональности.

15
ответ дан Dominic Dos Santos 23 November 2019 в 00:19
поделиться

Взгляд на: вкладки справки это не похоже на энергию, хотят работать способ, которым Вы делаете...

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

Это - хорошая идея, все же.

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

4
ответ дан Mike G. 23 November 2019 в 00:19
поделиться
  • можно отобразить команды, которые обычно управляют буферами для управления вкладками, поскольку я сделал с gf в моем .vimrc:

    map gf :tabe <cfile><CR>
    

    я уверен, что можно сделать то же с [^

  • , я не думаю, что энергия поддерживает это для вкладок (все же). Я использую gt и gT для перемещения в следующие и предыдущие вкладки, соответственно. Можно также использовать Ngt, где N является числом вкладки. Одна обида, которую я имею, - то, что по умолчанию число вкладки не отображено в строке вкладки. Для фиксации этого я поместил пару функций в конце мой .vimrc файл (я не вставлял здесь, потому что это длинно и не отформатировало правильно).

4
ответ дан Lucas Oman 23 November 2019 в 00:19
поделиться

Я использую буферы как вкладки, с помощью плагин BufExplorer и некоторые макросы:

" CTRL+b opens the buffer list
map <C-b> <esc>:BufExplorer<cr>

" gz in command mode closes the current buffer
map gz :bdelete<cr>

" g[bB] in command mode switch to the next/prev. buffer
map gb :bnext<cr>
map gB :bprev<cr>

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

4
ответ дан jkramer 23 November 2019 в 00:19
поделиться

Здесь немного поздно для стороны, но удивлен Я не увидел в этом списке следующего:

: tab sball - это открывает новую вкладку для каждого открытого буфера.

: help switchbuf - это контролирует поведение переключения буфера, попробуйте : set switchbuf = usetab, newtab . Это должно означать переключение на существующую вкладку, если буфер открыт, или создание новой, если нет.

271
ответ дан 23 November 2019 в 00:19
поделиться