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?
delete-rectangle
é uma opção.clear rectangle
.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.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
.2)
, você pode literalmente entrarall
, o que é um pouco diferente de*
: ele.*
também corresponde .Respostas:
Não use
C-x r t
(string-rectangle
), useC-x r k
(kill-rectangle
).fonte
C-j
(em vez deRET
) pode ajudar em alguns casos, por exemplo, modo ido.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
(porC-x r t
exemplo,(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.fonte