Estou usando o ViM, TextMate e GNU Emacs há anos.
Por exemplo, aqui está o texto que eu quero editar
foo
foo
foo
E aqui está o resultado do texto que eu quero ter
bar foo
bar foo
bar foo
Quando estou no Vim, posso executar "Ctrl v" na primeira linha e na primeira coluna, pressionar "2 j", pressionar "i" e digitar "bar", pronto.
Quando estou no Textmate, posso pressionar "Apple Command Option" enquanto seleciono para baixo (com o mouse) e, em seguida, digite "bar".
Mas quando estou no GNU Emacs 23.1, não sei como fazê-lo. : (((
Eu pesquisei no EmacsWiki e procurei no Google, mas não consegui a solução. Por favor, me guie se você conhece minha solução. Ficaria grato por isso.
Respostas:
Duas opções vêm à mente. O primeiro são retângulos (como mencionado em outra resposta). As instruções explícitas para isso são:
Outra opção, que fornece comandos muito agradáveis de edição de retângulos / colunas, é o modo CUA . Aqui está um post (divulgação: meu blog) que descreve como usá-lo. Para ver o poder do modo CUA, vale totalmente a pena assistir este vídeo de três minutos .
Integro o modo CUA com o seguinte (porque prefiro não ter o modo de marca transitória):
fonte
No Emacs-24.4, o suporte básico para retângulos foi aprimorado um pouco; portanto, em vez de usar
C-SPC
seguido porC-x r t
, você pode:Uma das coisas legais sobre isso em comparação com o
C-SPC
método é que você receberá feedback visual sobre o retângulo que está selecionando. Obviamente, ocua-mode
método também funciona (e funciona de maneira semelhante).fonte
cua-mode
tinha mais razão ... Só para mencionar uma coisa: emcua-mode
, enquanto um retângulo está destacado, posso digitar e adicionar texto. No atual "suporte básico" do emacs interno, o destaque desaparece (a seleção é "cancelada") e a entrada é inserida no ponto do cursor. Este é um contra-senso e não o que eu normalmente quer (e se acostumar à forma comocua-mode
o faz)(global-set-key [?\C-x ?\s] 'cua-rectangle-mark-mode)
.C-t
operação de retângulos que não seja CUA (também conhecida comoC-x r t
) também mostra uma visualização do texto recém-inserido à medida que você o digita.No emacs, esse tipo de coluna é chamado de 'retângulos'. então esta é a página de documentação relevante.
Todos esses comandos exigem que a região contenha o retângulo no qual você está operando. Portanto, você precisa definir a marca no caractere superior esquerdo no retângulo e estender a região para o caractere inferior direito no retângulo. O comando
M-x string-insert-rectangle
que você procura é o que solicita a inserção da string.fonte
Resposta mais curta: ative o modo retângulo CUA por C-RET.
Então, para o seu caso, seria
bar
SPCVeja a resposta do @Trey para uma solução mais elaborada e links para o CUA.
fonte
Você pode usar replace-regexp para isso:
Isso adicionará uma barra ao início da linha.
fonte