Notepad ++: cursor após o final da linha / espaços virtuais?


11

TL; DR - Como habilitar espaços virtuais para mover o cursor após o final de uma linha de texto?

Versão longa - No Notepad ++, ao tentar selecionar (usando o mouse) uma longa linha de texto que ultrapassa a borda direita da janela, fazendo com que ela role horizontalmente, meu mouse às vezes sobe ou desce o suficiente para mover o cursor para a linha adjacente (geralmente muito mais curta), fazendo com que o cursor volte à esquerda onde a linha adjacente termina; que, por sua vez, rola a janela horizontalmente de volta para a esquerda, dificultando o reajuste e o término do arrastamento da minha seleção.

Alguns (apesar de poucos) editores de texto têm uma opção para "espaços virtuais" ou cursores após a EOL, para tornar muito mais fácil passar o mouse / flecha sem se restringir ao texto / espaço em branco existente.

Como posso fazer isso acontecer no Notepad ++ (sem cortar a fonte sozinho)?


1
início da linha, mantenha pressionada a tecla SHIFT + END, a linha inteira foi selecionada? Eu sei que não é o mesmo que você queria, mas é o que eu faço.
Rob

1
Não é o que você pergunta, mas o problema desapareceria com a quebra de linha.
Eroen

@ Rob: Isso geralmente é um problema quando estou tentando selecionar um pedaço longo específico de uma linha muito longa de código, mas essa linha é misturada com outras linhas muito mais curtas. Eu também poderia usar SHIFT + CTRL + RIGHTARROW para selecionar rapidamente para a direita do meu ponto de partida uma palavra por vez, o Notepad ++ é muito bom em detectar caracteres de quebra de palavra, como pontos, parênteses, etc., quando não há espaços reais separando palavras (como em uma referência a objeto longo) por exemplo (javascript):someObjectName.subObject.property['index'](parameter)
acatalept 16/16

@Eroen: feliz que você sugeriu isso, eu não uso quebra de linha no N ++ há muito tempo, pois ele costumava fazer o programa ficar de joelhos com arquivos grandes ... mas na verdade funciona muito bem mesmo para meus 20k maiores arquivos de linha e até alinha indentações em linhas
quebradas

Respostas:


14

Tipo de invasão (envia uma mensagem da janela diretamente para o controle de edição do Scintilla na inicialização), mas funciona muito bem:

  1. Instale o plugin NppExec

  2. Vá para Plugins -> NppExec -> Executar

  3. Digite o seguinte código:

    // ensure console stays hidden
    NPP_CONSOLE 0
    
    // enable virtual spaces (cursor past end of line) outside column edit mode
    SCI_SENDMSG 2596 3 0
    
    // SCI_SENDMSG == send message to Scintilla edit control
    // 2596 == the message we're sending is SCI_SETVIRTUALSPACEOPTIONS
    // 3 == send the value (SCVS_RECTANGULARSELECTION | SCVS_USERACCESSIBLE)
    // the default value is 1 (just SCVS_RECTANGULARSELECTION) for
    //   virtual spaces in column select mode only
    // you can find these values by poking around the source code a bit, or
    // see http://www.scintilla.org/ScintillaDoc.html
    
  4. Clique no botão Salvar na parte inferior e dê um nome ao script

  5. Agora vá em Plugins -> NppExec -> Opções avançadas

  6. À direita, em "Executar este script quando o Notepad ++ for iniciado", selecione o nome do script que você acabou de salvar

  7. Clique em OK, feche / reabra o Notepad ++ e aproveite;)


onde estão os códigos de mensagem 2596documentados para outros comandos do scintilla? cutucando apenas Scintilla.h? atualmente em tortoisesvn.googlecode.com/svn/trunk/ext/scintilla/include/… ?
N611x007

O que está 0dentro SCI_SENDMSG 2596 3 0?
N611x007

@naxa: consulte a documentação do Scintilla para obter os códigos de mensagem, por exemplo, scintilla.org/ScintillaDoc.html#SCI_SETVIRTUALSPACEOPTIONS (acredito que o terceiro parâmetro não seja usado na maioria deles, mas deve ser definido como 0 em vez de omitido)
acatalept

"Tipo de invasão" - uma invasão significa acessar algo que o software não deveria fazer. Isso parece um recurso para mim.
Natalie Adams

@ Nathan: a semântica é divertida;) eu quis dizer essencialmente que o uso do plug-in NppExec para enviar mensagens da janela diretamente para os controles é uma espécie de hack, não algo que o Notepad ++ foi projetado especificamente para fazer (além de fornecer cuidadosamente uma estrutura de plug-ins para lubrificar o )
acatalept

0

Sem direitos de administrador, instale o NppExec baixando a dll e instalando no diretório / pasta dos plugins do npp. Feche / reabra o npp.

Editar (+2 anos): não sei se isso mudou, mas agora (se não originalmente) colocamos a pasta NppExec na pasta de plugins do npp - com a dll na subpasta NppExec.

Verifique também se as versões correspondem (lembre-se de estar em 32 bits ou 64) e, se você possui uma versão recente (2019), pode precisar da versão _PA do NppExec.

Por que não consigo instalar o plugin NppExec para o Notepad ++?


Algo mudou no Notepad ++. O Executar não está mais lá. Existem correções para isso?
user215779
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.