Подписка магазина должна возвращать функцию отмены подписки , которую можно вызвать в componentWillUnmount для успешной отмены подписки из хранилища.
Вы можете определить и сохранить его в состоянии непосредственно в componentWillMount :
this.setState({
unsubscribe: store.subscribe(() => {
translateTexts(this.state.texts),store.getState().translate.userLanguage).then((res) => {{
this.setState({texts: res.data});
});
});
});
и затем вызвать unsubscribe
для componentWillUnmount
componentWillUnmount() {
this.state.unsubscribe()
}
Документы Redux : https://redux.js.org/api/store#subscribe
То, что Вы делаете, по существу 'grep-n файл маркировки' из командной строки. Таким образом, можно выполнить ту команду и> это в файл достаточно легко.
Деривация 'grep' даже из в основном того же источника.
:redir > matches.txt|execute 'g/foo/#'|redir END
Посмотрите :h :redir
, можно также перенаправить к регистрам, переменным, буфер обмена и т.д.
не ясно из исходного сообщения, что Вы подразумеваете "под работой легко с ним", но часто полезно видеть и быстро перейти между всеми соответствиями в буфере, не "извлекая" соответствия к отдельному буферу.
энергии встроили внутренний grep. Ваш пример был бы чем-то вроде этого (в энергии, %
обозначает текущий файл),
:vimgrep /label/ %
Это возьмет Вас к первому вхождению и сообщит, сколькими там были соответствия. Что в моде то, что можно посмотреть на все соответствия, перечисленные путем открытия quickfix ошибочного использования списка
:cope
Теперь можно просто прокрутить вокруг и нажатие enter
на строке для перехода к точной позиции соответствия.
quickfix ошибочный список является точно тем же буфером, который Вы используете, если Вы работаете, делают из энергии, и Ваш компилятор бросает ошибки: это дает Вам список того, что и где ошибки.
После перехода к одному местоположению, на которое указывает quickfix можно перейти к форвардам и назад в списке через :cn
и :cp
. :ccl
закрывает ошибочный список.
Можно также развернуть "ошибочный" список через :vimgrepa /newpattern/ %
или :vimgrepadd
(Зарегистрированный) протест состоит в том, что внутренний grep энергии медленнее, чем самые собственные grep реализации (но Вы действительно получаете его "бесплатно" в окнах, например). Если Вам действительно устанавливали grep, можно использовать: grep вместо: vimgrep для подобных результатов.
заключение в кавычки :help grep
Vim имеет два способа найти соответствия для шаблона: Внутренний и внешний. Преимущество внутреннего grep состоит в том, что он работает над всеми системами и использует мощные шаблоны поиска Vim. Внешняя grep программа может использоваться, когда Vim grep не делает то, что Вы хотите.
Внутренний метод будет медленнее, потому что файлы читаются в память. Преимущества: - разделители строки и кодирование автоматически распознаны, как будто файл редактируется. - Шаблоны поиска Vim использования. Могут использоваться многострочные шаблоны. - Когда плагины включены: могут искаться сжатые и удаленные файлы.
Можно также использовать список местоположения, если Вы уже используете ошибочный список для контакта с ошибками компиляции. просто добавьте l
(для location
) к началу команды grep (:lvimgrep
,:lvimgrepa
:lgrep
, :lgrepa
) и используйте :lopen
:ln
:lp
:lcl
вместо :c*
.
Поскольку больше команд консультируется
:help grep
:help quickfix-window
:help quickfix
:help quickfix-error-lists
Я получил это сети в какой-то момент:
function GoToLine(mainbuffer)
let linenumber = expand("<cword>")
silent bd!
silent execute "buffer" a:mainbuffer
silent execute ":"linenumber
silent nunmap <Enter>
endfunction
command -nargs=1 GoToLine :call GoToLine(<f-args>)
function GrepToBuffer(pattern)
let mainbuffer = bufnr("%")
silent %yank g
enew
silent put! g
execute "%!egrep -n" a:pattern "| cut -b1-80 | sed 's/:/ /'"
silent 1s/^/\="# Press Enter on a line to view it\n"/
silent :2
silent execute "nmap <Enter> 0:silent GoToLine" mainbuffer "<Enter>"
" silent nmap <C-G> <C-O>:bd!<Enter>
endfunction
command -nargs=+ Grep :call GrepToBuffer(<q-args>)
Поместите его в свой .vimrc, затем: Grep Foo
Требует, чтобы внешняя grep программа работала правильно.
(Просто идея - непротестированный.)
Можно удалить все строки с шаблоном в нем, записать в другой файл и отменить удаление.
:g/label/d
:w matches
u