jEdit admite la edición en bloque, pero Emacs y Vim parecen tener serios problemas de usabilidad sobre el mismo tema. Si alguien pudiera completar las incógnitas aquí, sería mucho más llevadero usar cualquiera de los editores:
- Selección rectangular real : cuando la selección en pantalla es un rectángulo, no una selección lineal que luego se usa para calcular una región como parece limitada Emacs.
- jEdit: Mantenga presionado Ctrly seleccione.
- Vim: haga clic Ctrl-vy seleccione.
- Emacs: Desconocido ; Parece que es necesario un complemento de más de 400 líneas .
- Edición rectangular en vivo : vea cómo se verá el resultado en todas las líneas a medida que edita después de una selección de bloque.
- jEdit: Simplemente comience a escribir, y verá el resultado final a medida que avanza.
- Vim: haga clic Shift-iy escriba. Mostrará el resultado final solo en la primera línea hasta que presione Escpara salir del modo de inserción. Se desconoce si hay alguna forma de ver el resultado en todas las líneas de inmediato.
- Emacs: Desconocido ; parece que la única forma es C-x r tconfigurar el texto para que se complete después de presionar Ret.
- Iniciar y finalizar la selección en posiciones fuera del texto : por ejemplo, me gustaría eliminar los N primeros caracteres de cada línea, pero la primera y la última línea contienen menos de N caracteres.
- jEdit: No hay problema, las selecciones de bloque pueden comenzar fuera del texto.
- Vim:
:set virtualedit=block
. - Emacs: puede ser posible con
artist-mode
y / opicture-mode
.
- Pegar bloque en línea : pegue el bloque copiado como si estuviera pegando varias líneas, como en, empuje el texto que ya está allí hacia abajo , no hacia la derecha.
- jEdit: el valor predeterminado. Para pegar un bloque como bloque, primero debe hacer otra selección de bloque.
- Vim: OEscVp.
- Emacs: Desconocido .
La funcionalidad general de selección de bloques de Emacs se puede encontrar en el cua-mode
complemento .
Respuestas:
Puedo responder por Vim, pero no por Emacs.
Iniciar y finalizar selección en posiciones fuera del texto:
:set virtualedit=block
habilitará el comportamiento que deseas. Puede soltar los dos puntos iniciales y agregarlos a su .vimrc si lo desea. Para más información,:help 'virtualedit'
desde Vim.Pegar bloque en línea:
Si solo presionas pen el modo Comando, Vim insertará el bloque, empujando los caracteres a la derecha en cada línea. Si selecciona otro bloque y presiona p, Vim reemplazará ese bloque con el bloque pegado.
Puede pegar un bloque "en línea" con la secuencia de teclas en modo comando OEscVp. Esto inserta una línea sobre la línea actual (
O Esc
), la selecciona en sentido de línea (V
) y luego la pega (p
). Podría acortar esto a (por ejemplo) ypcon un mapeo como:nmap yp O<Esc>Vp
- escriba eso literalmente; use cinco pulsaciones de teclas en<Esc>
lugar de presionar la tecla Escape.fuente
virtualedit
; Tengo que probar eso. Sobre el pegado en línea, consulte la pregunta actualizada para obtener una descripción de la funcionalidad esperada.Emacs: comience la selección en la primera línea y simplemente agregue el número faltante de caracteres (por ejemplo, espacios) a la última línea y luego use kill-rectangle
Alternativamente, vea
artist-mode
opicture-mode
que le permiten moverse libremente en la ventana independientemente de las longitudes de línea.Emacs: Primero guarde el bloque con kill-rectangle o guardándolo en un registro, luego vaya al punto de inserción, use delete-rectangle y luego inserte el rectángulo guardado.
En el caso de Emacs, ¿por qué es un problema? Se puede compilar un complemento y la filosofía de emacs es que no se pone todo en el núcleo, sino que se usan complementos para ampliar el editor.
fuente
Hay 'cua-mode' que viene con Emacsen 22.1 y posterior, o siga el enlace para descargar versiones anteriores de Emacs. Hay un video corto que presenta la funcionalidad.
Para los comandos generales de rectángulo, intente leer el manual , que proporciona una introducción fácil.
fuente
cua-mode
ve bien! 1 .. No pude encontrar el video que usted ha mencionado, ver de Tom enlace en los comentarios inmediatamente debajo de la pregunta, para un enlace a un (diferente?) Sobre el vídeo ...En vim, la forma típica de eliminar los primeros n caracteres es hacer algo como
:%s/.\{0,6\}//
.%
hará todo el documento; puede reemplazar eso con una selección o con las líneas reales que le interesan. Els
comando es para "sustituto". Reemplazará una expresión regular con lo que le dé, y solo coincidirá una vez en cada línea a menos que agregue una opción específica. El/
es un delimitador: puede ser cualquier carácter, pero/
generalmente se usa a menos que sea ventajoso usar otra cosa (para que no tenga que escapar/
en el resto del comando). El argumento después del primer delimitador es una expresión regular que se utilizará para encontrar cadenas coincidentes en su selección. El argumento después del segundo delimitador es con qué se reemplazará la coincidencia.Entonces, este comando dice encontrar 0 a 6 instancias de cualquier carácter y reemplazarlas con nada.
fuente