online - vim editor commands
Encuentra el personaje debajo del cursor en vim (6)
A continuación se asignará <leader>z
(por lo general, /z
)
:nnoremap <leader>z xhp/<CR>-<CR>
Hazme saber si esto funciona para ti.
En vim, ¿cómo puedo encontrar la siguiente aparición del personaje debajo del cursor? Quiero algo como * pero para un solo personaje en lugar de una palabra.
Ejemplo:
H|o|w are you?
va a:
How are y|o|u?
La razón por la que quiero es porque hay un personaje extraño (uno que ni siquiera sé cómo escribir) en todo mi archivo y quiero eliminarlos todos rápidamente.
Bueno, para usar un truco rápido solo use *
, no encontrará nada, excepto usted, que presione /
, <arriba> y edite el patrón. Solo funciona si vim reconoce el personaje como parte de la palabra, desafortunadamente.
Entonces simplemente use una regla para reemplazarlos a todos
:%s/search/replacement/
Esto reemplaza todas las ocurrencias de search
con replacement
.
En una sola línea puedes usar fo
y luego ;
para avanzar (o ,
hacia atrás).
En líneas múltiples, debe usar /o
y luego n
para avanzar (o N
hacia atrás).
Alternativamente, su problema podría resolverse usando regexp y sustituto, es decir :%s/[your odd character]//g
Para lograr copiar y pegar su "carácter impar", debe ingresar en modo visual usando v para seleccionar el carácter, luego y ESC .
Luego escriba:: :%s/<CTRL+r>"//g
<CTRL+r>"
copiará el contenido del registro de copia en la línea de comando.
También mira
g a (muestra el carácter debajo del cursor como ascii)
g 8 (muestra el carácter debajo del cursor como utf8, incluyendo material Unicode, códigos hexadecimales, etc.)
Y lo más útil:
8 g 8
Find an illegal UTF-8 byte sequence at or after the
cursor. This works in two situations:
1. when ''encoding'' is any 8-bit encoding
2. when ''encoding'' is "utf-8" and ''fileencoding'' is
any 8-bit encoding
Thus it can be used when editing a file that was
supposed to be UTF-8 but was read as if it is an 8-bit
encoding because it contains illegal bytes.
Does not wrap around the end of the file.
Note that when the cursor is on an illegal byte or the
cursor is halfway a multi-byte character the command
won''t move the cursor.
Actualizar
Utilice el plugin vim-characterize
Tim Pope para obtener nombres y datos UNICODE completos:
En Vim, presionar
ga
en un personaje revela su representación en decimal, octal y hex.Characterize.vim lo moderniza con las siguientes adiciones:
- Nombres de caracteres Unicode: U + 00A9 SÍMBOLO DE DERECHO DE AUTOR
- Dígrafos de Vim (escriba después de insertar el carácter): Co, cO
- Códigos Emoji:: copyright:
- Entidades HTML: ©
:exec ''%s/''.getline(''.'')[col(''.'')-1].''//g''
Si es un personaje especial, deberás agregar una barra invertida, pero dado que todos los caracteres especiales son escribibles, supongo que no.
Editar: para que funcione con un carácter de varios bytes, reemplace getline(''.'')[col(''.'')-1]
por matchstr(getline(''.''), ''.'', col(''.'')-1)
(ver esta respuesta ).