Eu aprendi recentemente multiple-cursors
e parece um pacote muito útil. Examinei a documentação do repositório original , mas os comandos ainda me parecem um pouco obscuros.
Eu assisti o vídeo no Emacs Rocks !, e o vídeo é ótimo, mas ele se concentra principalmente no que multiple-cursors
é capaz de fazer, e não em como fazê-lo.
Existem orientações, tutoriais ou exemplos que ilustram sua funcionalidade mais básica?
multiple-cursors
Amelio Vazquez-Reina
fonte
fonte
multiple-cursors
rapidamente, apenas lendo o arquivo README. Minha recomendação é apenas aprendermc/mark-next-like-this
. Experimente e familiarize-se com o que faz. A partir daí, consulte o README sempre que houver uma pergunta que comece com "Gostaria de saber se vários cursores podem fazer ..." Tudo isso dito, acho que é uma introdução mais básica do que o Emacs Rocks! o vídeo seria útil para iniciantes.Respostas:
Além dos usos que o @bastibe descreve, eu uso vários cursores para adicionar ou remover texto do início / fim de um grupo de linhas:
set-rectangular-region-anchor
(ligada a qualquer tecla que você quiser, acho que a sugestão do Magnars foi H-space, se você tiver uma hiper-chave)C-n
eC-p
) até que você tenha um cursor em cada linha que deseja editarC-e
) para fazer alterações.Você pode usar
forward-word
,forward sentence
etc, para frente e para trás ao longo das linhas, o que permite que você edite a quarta palavra em cada linha, mesmo se o texto em cada linha não é idêntico.Como exemplo, eu faço esse tipo de trabalho o tempo todo:
C-u M-!ls / test-dat / pp5 / * fsaRETURN
Isso insere o conteúdo do diretório pp5 no buffer. Coloco ponto
!
no início da listagem:→
→
→
→
E pronto, você converteu uma lista de arquivos no código para ler essa lista. Na verdade, é muito mais difícil descrever do que realmente fazer!
fonte
multiple-cursors
podem fazer uma combinação realmente poderosa.phi-search
pode ser mais robusto do que navegar com comandos comoM-f (x3)
phi-search
, isso parece ótimo!Basicamente, tenho dois casos de uso frequentes para
multiple-cursors
:mc/mark-next-like-this
emc/mark-previous-like-this
para marcar mais instâncias. Em seguida, pressionei imediatamente C-wpara excluir todas as instâncias e, em vez disso, escrevi uma nova string. Eu uso isso frequentemente para renomear uma variável no código.mc/edit-lines
para obter um cursor por linha. Agora você pode usar comandos de edição regulares que operam em cada um desses cursores.O primeiro caso de uso é particularmente útil com
expand-region
. Euer/expand-region
liguei para C-j, emc/mark-next-like-this
emc/mark-previous-like-this
para C->e C-<. Com isso, posso selecionar facilmente a palavra em que o ponto está ativado e marcar a ocorrência seguinte / anterior dessa palavra instantaneamente.O segundo caso de uso substituiu a maioria dos usos de macros para mim. Em vez de gravar uma macro e, em seguida, aplicá-la em vários lugares, eu colocaria um cursor em todos os lugares e faria a operação em todos os lugares ao mesmo tempo.
fonte
multiple-cursors
recomenda ou, por exemplo,mark-next-like-this
&mark-previous-like-this
?C->
eC-<
paramark-next-like-this
emark-previous-like-this
.Eu gostaria de adicionar alguns extras que às vezes uso
multiple-cursors
.Eu achei o seguinte útil:
iy-go-to-char
Às vezes, você precisa mudar para o próximo
#
ou o próximo,
ou algum delimitador específico. Isso é especialmente útil quando você precisa mover diferentes números de palavras para cada cursor. Ele fornece as funçõesiy-go-to-char
eiy-go-to-char-backward
, as quais você pode vincular e usar de maneira adequada.região de expansão
Isso é realmente útil por uma razão semelhante a
iy
- quando você tem linhas ligeiramente diferentes sob cada cursor e talvez queira selecionar a sequência de caracteres citada sob o ponto ou similar.coisas personalizadas
Essas são coisas que acabam de aparecer na minha configuração, mas acho útil. Provavelmente não foi escrito por mim.
Solicitação de entrada
Eu recebi este da Magnars em resposta a uma solicitação para colocar uma string diferente sob cada cursor. O código é simples, mas vinculá-lo a algo e usá-lo em vários cursores é uma maneira prática de inserir itens ligeiramente diferentes em cada local.
Número de incremento no ponto
Isso veio do SO ou do emacswiki. Não tenho certeza qual. É bastante útil por si só e também quando usado em combinação com
mc/insert-numbers
eval-and-replace
Isso é super poderoso e permite alguns bits 'n' pedaços realmente úteis. Ele avalia o sexp que está por trás do cursor e insere o resultado da avaliação.
Combine-o com,
multiple-cursors-numbers
por exemplo, para inserir potências de dois ou uma série que0 1 2 0 1 2 0 1 2
atravesse cada linha ou algo assim. (Eu fiz as duas coisas de maneira útil). Ou use-as.el
para escrever essas configurações tediosas de java com itens padrão. Você escreve cada umCONFIG_VALUE_VARIABLE
e depois transforma isso emCONFIG_VALUE_VARIABLE = "configValueVariable"
execuçãos-camel-case
.fonte
C-S-b
ouM-S-b
para selecionar para trás até obter uma parte selecionada. Você também pode usar a tecla Shift esquerda.C->
(pressione Shift se a tecla>
estiver em cima da tecla do teclado) até obter mais de um item selecionado.* É importante selecionar para trás ou a primeira seleção colocará o cursor na posição errada.
fonte