Como me livrar da string "default" (usada pela última vez) em algumas funções do emacs?


12

Eu tenho o seguinte problema: quando eu uso 'Cx rt' (retângulo de seqüência de caracteres), sou solicitado a inserir uma sequência de caracteres para substituir o retângulo selecionado. Vamos dizer que eu digite ";;" (para comentar o retângulo). Isso funciona muito bem, mas da próxima vez que chamo a mesma função e quero substituir por nada (string vazia), não posso fazer isso, porque existe a string "padrão" ;; " que eu usei anteriormente e, se eu pressionar Enter, o comando usará esse ";;" string em vez de uma vazia. Como faço para defini-lo como string vazia?

Problema semelhante que tive com algumas funções de pesquisa / substituição. Basicamente, quando ele se lembra da última string que usei e a define como padrão, como "insiro" a string vazia?

EDIT:

O Kill-rectangle, mencionado pelo YoungFrog resolve o problema específico, mas eu tinha outra coisa em mente: basicamente, em qualquer função que o emacs se lembre do último valor digitado, e o use como "padrão" quando você pressionar Enter, você deve capaz de limpar esse "padrão" para o padrão real antes de você usar a função pela primeira vez. Aqui está outro exemplo:

No modo direcionado, se você 'Mx rgrep', ele solicita 3 entradas:

1) O que procurar: o que você digitar aqui, será usado como padrão na próxima vez que você usar o rgrep. Como alguém apontou, não faz sentido procurar uma string vazia, portanto, limpar esse valor "padrão" nunca é necessário, eu acho.

2) Em seguida, ele perguntará em quais arquivos procurar. Seu padrão real é "todos" os arquivos. Se eu digitar * .txt e pesquisar, na próxima vez em que usar o rgrep, * .txt será usado como "padrão". Agora, desejo limpar esse "padrão" * .txt e retornar ao seu padrão original "todos", exatamente como queria limpar ";;" "default" na função de retângulo de string para o padrão real, string vazia.

Obviamente, esse problema específico para todos os arquivos provavelmente poderia ser resolvido com a digitação *? Mas esse problema geral permanece potencialmente com outros comandos que lembram o último valor usado.

3) Em seguida, solicitará o diretório Base, não há problema aqui.

Então, do jeito que eu vejo, sempre que o emacs tenta me ajudar, lembrando meu último valor usado em algum comando (o que eu acho muito útil na maioria das vezes), deve haver uma maneira de limpar esse valor usado como se eu nunca tivesse usado aquele comando antes.

PS Ainda sou novo no emacs, e talvez a funcionalidade que eu exija não seja necessária, pois sempre há alguma solução alternativa?


1
Eu acredito que é difícil, porque a leitura e a troca do valor padrão pela string vazia não acontecem na mesma função na maioria dos casos. Nesse caso específico, delete-rectangleé uma opção.
politza

Se você deseja inserir espaços no retângulo selecionado, pode usar clear rectangle.
precisa

Se você simplesmente deseja bloquear comentários / comentários, por que não usar comment-dwim? A inserção de uma string "vazia" para pesquisa não faria sentido, mas você poderá inserir uma string vazia para a peça de substituição. Estou curioso para ver mais exemplos em que a inserção de uma string vazia pode ser necessária para um usuário.
precisa

3
Basta olhar sua descrição rapidamente, mas parece que pode haver um problema com o design do comando string-rectangle. Sempre que uma string vazia faz sentido como uma entrada possível, deve haver uma maneira de inseri-la, diferente de aceitar um valor padrão. Observe atentamente o documento para o comando (e seu código-fonte, se você estiver satisfeito com isso), para ver se há de fato uma falha de design aqui. Se você acha que existe, então por favor relate-: M-x report-emacs-bug.
Tirou

Para 2), você pode literalmente entrar all, o que é um pouco diferente de *: ele .*também corresponde .
npostavs 19/09/2015

Respostas:


3

Não use C-x r t( string-rectangle), use C-x r k( kill-rectangle).


1
Eu só respondi o exemplo específico dado, porque na OMI o caso geral (a pergunta no título) não admite resposta (geral). Ainda assim, quero mencionar que C-j(em vez de RET) pode ajudar em alguns casos, por exemplo, modo ido.
YoungFrog

3

No caso geral, o que você deseja não pode ser alcançado. Isso ocorre porque vários utilitários e modos no Emacs armazenam seu histórico de conclusão de leitura em diferentes variáveis, não em um local. Você pode definir manualmente essas variáveis ​​de histórico para nil(por C-x r texemplo, (setq string-rectangle-history nil)), mas elas não são dimensionadas. Também não é fácil descobrir os nomes das variáveis ​​do histórico sem ler o código.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.