Por que o uso de teclas de seta no modo normal é considerado uma má prática?


43

Eu li em muitos artigos ( por exemplo ) que é uma prática ruim usar as teclas de seta no modo normal. Alguém poderia explicar por que é considerado uma prática errada, se é que existe?


5
Um bom motivo para não usar o hjkl é se você usar outro layout de teclado. Por exemplo, hjkl não é espacialmente correlacionado em Dvorak e, portanto, é difícil de usar.
Kylos

1
@ Kylos eu uso hjklem Dvorak. É definitivamente menos sensato do que no qwerty, mas não sei se chamaria de "difícil de usar"; são apenas chaves, e não é difícil alcançá-las ou qualquer coisa assim que você estiver acostumado.
Dougal 28/03

2
Existem muitos mitos sobre por que hjkldeveria ser a melhor opção para mover um documento. A verdade é que alguns teclados estavam com as teclas de seta hjklno momento em que o vi foi criado; portanto, o vi usou as mesmas teclas no modo normal para corresponder ao layout do teclado. Aqui está um artigo com uma foto do teclado: catonmat.net/blog/why-vim-uses-hjkl-as-arrow-keys
allo

8
Qualquer coisa com reputação de dificuldade ... atrai um certo tipo de pessoa. Crossfit, Vim, programação funcional, veganismo, etc. Agora, certamente, nem todas as pessoas que realizam uma dessas atividades são desse tipo, mas elas aparecem desproporcionalmente com frequência. E parte do fascínio por essa pessoa é a dificuldade da própria atividade . Coisas que abaixam a barra de entrada são um anátema para elas: elas as tornam menos especiais. Há razões para preferir hjkl. Bons. Mas eles são inflados ao status de dogma, pelo menos em parte, porque as pessoas precisam sentir que são melhores que outras.
Jared Smith

@Kylos Concordo que hjklnão são os melhores de sempre em dvorak. Mas como usuário do dvorak, posso encontrá-los um pouco úteis, uma vez que estão emparelhados: como em jkum lado do quadro; e hl do outro lado.
nilon 5/09

Respostas:


66

Na verdade, essa não é uma prática ruim.

Muitas pessoas ( incluindo o documento de Vim como mostra a resposta da @B Layer ) argumentam que você não deve usar as setas, porque faz com que suas mãos se movam da linha inicial (a segunda linha do teclado onde você tem hjkl) e isso o torna menos eficiente .

Este é (pelo menos a IMO) um mau resultado do círculo "purista" do vim: novos usuários seguem isso cegamente, alguns até desabilitam as teclas de seta e depois reclamam que não são tão eficientes quanto antes.

A única regra real para uso vim é usá-lo de forma eficiente: se você se sentir mais confortável usando Lefte Rightque he l ser-lo, use as setas do teclado. Vim ainda tem set mouse=aopção se você quiser usar um mouse!

Uma vez que você se acostumar com Vim e ficar melhor com os diferentes movimentos disponíveis ( f, t, ,, ;, w, b, e, ge, e, basicamente, tudo em :h quickref) você pode perceber que você faz uso não as setas que muito. E se você ainda usá-los, não há problema, use com o que você é mais eficiente.

Observe que o argumento de não sair da linha de casa para obter mais eficiência não é tão bom na minha opinião: se você der uma olhada em Por que o vim usa hjkl, verá que essas chaves foram escolhidas porque não havia nenhuma seta teclas quando Vi foi escrito. Alguém poderia argumentar que talvez se os teclados fossem diferentes nesse momento, ninguém consideraria não usar as teclas de seta uma boa prática.


13
Muitas vezes me vi dobrando muito o pulso para alcançar as teclas de seta porque estava acostumado a elas. Acabei desativando as teclas de seta para me acostumar hjklapenas para aliviar um pouco a dor do meu pulso.
Shahbaz 26/03

9
Gostaria de ressaltar que isso só faz sentido nos teclados QWERTY. Para alguns layouts, o hjkl pode ser uma verdadeira dor de cabeça.
coteyr

1
Você pode usar as duas opções: escolhendo hjkl ou setas, pode vincular o outro conjunto de teclas para cima / para baixo para mover pelas linhas na tela e não pelas linhas de arquivo. Ajuda na edição de arquivos com longas filas.
user31389

1
Antes de ler sua resposta, eu não tinha percebido que mal uso hjkl e teclas de seta porque me acostumei aos comandos avançados de movimento mencionados. Bom ponto!
Spiros 28/03

4
Por mais que eu aprecie sua resposta correta aos meus olhos, eu poderia, por favor, prevalecer sobre você, como moderador e vi aficionado, em tentar o máximo possível para encontrar frases alternativas menos “decadentes” para evitar empurrões que não evocam a imagem vividamente perturbadora? de um anel sem calças de garotos ou homens se masturbando juntos na companhia um do outro ... Muito por favor? :)
tchrist

40

Não sei mais se isso é realmente relevante, mas eu sou veterano, então aqui está um pouco de história.

Antigamente, os terminais VT100 tinham teclas de seta, mas pressionar um transmitia uma sequência de escape como <ESC>[Apara cima, <ESC>[Bpara baixo, etc.
Além disso, sendo um terminal serial se comunicando a 9600 baud, era possível que o usuário pressionasse as teclas muito rápido transmitir a sequência inteira, o que causaria um pressionamento de tecla para interromper a sequência do pressionamento de tecla anterior e confundir vi.

Isso faria com que o vi inexplicavelmente entre no modo de inserção e insira [B [B [B [B [B [B [B [B [B [B [B [B [B [B [B [B [B [B [B [B [B [B [B [B]]]]]]]] no arquivo) se você mantiver pressionada a seta para baixo). Digo inexplicavelmente porque não há nada nessa sequência que deva entrar no modo de inserção e o fato de que cada sequência começa com um caractere ESC deveria ter saído do modo de inserção. Mas, ainda assim, inseriria lixo. Nem sempre - apenas quando você estava com pressa.

Um deles rapidamente se cansou disso e decidiu ficar com as hjklchaves.


8
Por qualquer motivo, os programas de terminal TCP ainda usam teclas de seta baseadas em escape e ainda não têm uma maneira 100% confiável de distinguir entre pressionar a tecla de escape e enviar o primeiro byte de uma sequência de escape de teclas de seta.
Supercat

1
@supercat Eles fazem têm uma maneira confiável para distinguir aqueles. É chamado usando o SC81T . O problema é mais que muitos programas não negociam isso e alguns terminais provavelmente não o suportam.
jamessan

1
@jamessan: Se eu entendi direito, você está sugerindo que a maneira confiável de distinguir escape das teclas de seta é não usar teclas de seta baseadas em escape, que se encaixam no meu comentário "por qualquer motivo" sobre programas que ainda usam escape- teclas de seta baseadas.
Supercat 27/03

Hmm, eu tenho um antigo terminal IBM que pode emular um VT100, talvez precise experimentar isso
uma peruca de orelha

3
Certamente posso confirmar que isso era verdade, pelo menos há muito tempo, já que durante os anos 80 tivemos que colocar placas na sala de graduação para não usar as setas do vi por esse motivo. Eles continuaram bagunçando seus arquivos quando o driver tty interrompeu as interrupções.
Tchrist 29/03/19

28

Embora eu concorde com a @statox que ninguém deve ser castigado, evitado, excomungado ou manchado de penas se optar por usar as teclas de seta ... use seu software da maneira que achar melhor ... eu não exalarei como uma atitude de laissez-faire, se eu estivesse orientando um novo usuário de mente aberta. Eu recomendo fortemente que eles comecem com as práticas recomendadas a seguir. São "práticas recomendadas" por um motivo ... elas foram empregadas com bons resultados por muitas pessoas que vieram antes de você e eu.

Caramba, até a própria ajuda de Vim o leva nessa direção , embora não sem hipérbole (" desacelere bastante ") ...

Você também pode mover o cursor usando as teclas de seta. No entanto, se você fizer isso, você diminui bastante a velocidade da edição, pois, para pressionar as teclas de seta, você deve mover a mão das teclas de texto para as teclas de seta. Considerando que você pode fazer isso centenas de vezes por hora, isso pode levar uma quantidade significativa de tempo.

Há também o fato de que quaisquer que sejam as escolhas que você faça no início podem se tornar hábitos difíceis de quebrar, se você quiser mudar no futuro. Então, tudo o mais é igual, por que não adotar um hábito recomendado agora, em vez de arriscar que usar as setas do teclado é ineficiente ou mata o carpo?

Em suma, considere fazer um esforço honesto para fazer as coisas sem as teclas de seta. Depois de um tempo razoável, se você simplesmente não pode viver sem cima / baixo / esquerda / direita ... não.

... é o que eu diria a um novo usuário interessado na minha opinião. Não leve para o lado pessoal se não concordar (estou falando com você, desautorizado).


9
Mesmo se você aceitar que é realmente melhor do que as teclas de seta (nem estou convencido de que seja), ele está em algum lugar no final da lista de todas as possíveis "melhores práticas". Eu diria que há muitas muitas coisas mais importantes do que usando hjkl.
Martin Tournoij 26/03

5
@Carpetsmoker Não acho necessário classificar as melhores práticas. A menos que você tenha um forte desejo de usar as setas, por que não fazer o que o Vim recomenda? Especialmente se você é novo no Vim ... todos sabemos o quão difícil é mudar a maneira como fazemos algo quando está enraizado.
2

1
"você desacelera bastante sua edição" - isso me parece um exagero ... no entanto, eu concordo que vale a pena tentar. Honestamente, não é importante o suficiente para acabar com a guerra.
Shadow

2
@ Blayer, não, não aqui - esta é a discussão mais civilizada sobre o tópico que acho que já vi. Mas as guerras certamente foram travadas ...
Shadow

1
don't think it's necessary to rank best practicesBem, parece-me que devemos nos concentrar nas coisas que nos dão o melhor valor na vida, dado que os recursos são finitos e a vida é curta. Por acaso, sei que as teclas hjkl são o coração devido a uma infância perdida, tocando ladino, larn, angband etc. em um laptop sem teclado numérico, mas algumas pessoas passaram a infância melhor e terão que "desaprender" as teclas de seta independentemente. Penso que os movimentos de aprendizagem, os intervalos etc. são uma maneira muito mais útil de passar o tempo.
Martin Tournoij 27/03

16

Outras respostas disseram que a perda de eficiência ao mover suas mãos da linha de casa não é grande coisa, e eu concordo principalmente. No entanto, o que é um grande negócio é quando você está aprendendo vim, sempre usando as setas para evitar voltar a mudança para o modo normal.

Em outras palavras, usar um único onde você teria usado hnão é uma enorme perda de produtividade, mas usar onde você poderia ter usado EscI é uma enorme perda.

É por isso que as pessoas dizem para você evitar as setas do teclado quando você está aprendendo o vim, porque isso o força a aprender o modo normal em vez de nunca sair do modo de inserção. O modo normal é onde estão todos os seus ganhos de eficiência.


1
+1. Em outras palavras: "Não use as teclas de seta e não use hjkl". (Retendo a hipérbole intencional.) #
Wchargin 29/03

3
Na verdade, em vez de 10 vezes você poderia ter usado 1 0 ou, ainda mais simples Home,. O último funciona mesmo no Windows Notepad.
Ruslan

7

Há duas razões principais pelas quais as pessoas dizem que você não deve usar as teclas de seta. Alguns afirmam que o hjkl é preferido porque mantém suas mãos na linha de casa, o que não é falso , mas também não importa. Outros, inclusive eu, diriam que você não deve usar as teclas de seta se estiver movendo mais do que alguns caracteres, mas também não deve usar o hjkl.

O importante não é quais chaves você está usando, mas quantas . Se você quer passar para o início da palavra, não bate hhh; você bate b. Fim da palavra é e, não llll. Início da linha: 0, fim da linha: $. E mais, /searchpara o texto que existe para onde você deseja ir. (ou qualquer um dos comandos avançados de movimento que você preferir).

Mas sempre que você digitar a mesma chave mais de duas vezes seguidas, há uma maneira melhor de fazê-lo.


7

Uma declaração mais precisa pode ser "usar as setas do teclado é uma prática ruim ao tentar aprender melhor o vim " . As pessoas novas no vim estão acostumadas a usar as setas do teclado para se movimentar e, portanto, não aprendem hjkl, não tendo a chance de ver se isso é preferível.

Pessoalmente, depois de ganhar alguma familiaridade geral com o vim, desabilitei as teclas de seta por um tempo para pegar o jeito hjkle as reativei mais tarde para simplificar o meu .vimrc. A sabedoria convencional vale no meu caso; Depois que soube usar hjklas teclas de seta e as duas , me vi quase exclusivamente usando a primeira.


6
Discordo. Como este blog diz, essa abordagem "tudo ou nada" para iniciantes ajuda a causar a reputação "hostil ao usuário" do vim. Novos usuários começam, ficam atolados e sobrecarregados e (não surpreendentemente) concluem que o vim é uma bagunça profana e voltam para um editor onde possam ser decentemente produtivos. - Se você está aprendendo a nadar, não se joga do barco para o mar aberto. É perfeitamente aceitável remar em volta da piscina infantil até você se sentir confortável com a água.
RM

2
... para não dizer que desativar as teclas de seta não funcionará para as pessoas. Mas é uma etapa "Eu gosto do vim e quero aprender a usá-lo melhor", e não uma etapa "Eu sou novo no vim e quero aprender a usá-lo".
RM

5

A resposta usual envolve eficiência. Você provavelmente foi treinado ao longo dos anos para empregar a digitação por toque, que mantém as mãos em asdf e jkl ;. A grande maioria das ligações de teclas no Vi é projetada para esse fato, incluindo os comandos de movimento hjkl.

Pessoalmente, eu realmente uso os dois. Uso o hjkl quando estou editando ativamente grandes seções de texto e as teclas de seta ao percorrer os arquivos de log (e |, g e / quando estou fazendo edições especiais em um arquivo). É o que funciona bem para mim e, em um caso como esse, é o que realmente importa.


2

Há muito tempo, muitos terminais não possuíam teclas de seta ou não possuíam todos os quatro. Os sistemas de software que precisavam de navegação normalmente forneciam algum tipo de abordagem de navegação sem depender de teclas de seta, e o hjkl do vi é um exemplo canônico. (Outro exemplo clássico é o ^ E- ^ S- ^ X- ^ D do WordStar.) À medida que a utilidade da navegação por teclado se tornava cada vez mais óbvia, mais e mais novos terminais começaram a aparecer com teclas de seta, e os sistemas de software frequentemente os mapeavam para as formas antigas de navegação. No entanto, isso forneceu uma espécie de preocupação de portabilidade: se as crianças treinadas nas escolas passassem a confiar em um recurso tão sofisticado como as teclas de seta, pensava-se que elas talvez não fossem capazes de ser produtivas no - uma vez comum - teclados sem teclas de seta.

Assim, os professores dos cursos de computação básica começaram a advertir cautelosamente os alunos a aprender a usar o menor denominador comum, a fim de maximizar sua empregabilidade. E essa prática sobreviveu por muito tempo a quaisquer razões que possa ter tido.

Nas implementações modernas do vi, o principal motivo para preferir o hjkl é que é um pouco mais rápido usar as teclas já em sua mão do que movê-la para onde quer que estejam as teclas de seta. A desvantagem de evitar a troca de contexto da sua mão, é claro, é que você pode precisar executar uma troca de contexto do vi. Hoje em dia, quando os humanos raramente apreciam a velocidade da digitação, se você faz um ou outro é uma questão de preferência pessoal, e não há mais nada de inerentemente ruim em usar as setas, se é que houve.

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.