2010-10-02 49 views

Respuesta

27

Digamos que desea reemplazar^C con C:

:%s/CtrlVC/C/g

Dónde CtrlVC significa Tipo V entonces C mientras se mantiene presionado Ctrl.

CtrlV permite introducir los caracteres de control.

+3

También puede utilizar las teclas Ctrl-Q. Esto es útil para algunos usuarios que asignan Ctrl-V a las operaciones del portapapeles –

5

que puede utilizar:

:%s/^C//g 

Para obtener el ^C mantenga pulsada la tecla de control, pulse V continuación C (Ambos mientras presiona la tecla Control) y el ^C aparecerá. Esto encontrará todas las ocurrencias y las reemplazará con nada.

para eliminar tanto ^C y ^B que puede hacer:

:%s/^C\|^B//g 
5

Usted puede utilizar el prefijo CTRL-V a entrar en ellos, o si no son fácilmente tipificables, tirón e insertarlos utilizando CTRL-R".

8

Prueba esto después de guardar el archivo en vim (asumiendo que son en entorno Linux)

:%!tr -cd '[:print:]\n' 
+6

por favor expliquen este día mágico de vudú. – Prospero

+3

@JamesAndino: ':%' filtra todas las líneas usando el programa externo ('!') 'Tr', que _remueve_ (' -d') todos los caracteres que son _not_ ('-c') _printable_ (' [: print: ] ') o _newline_ (' \ n'). – quasimodo

+2

Esto no es compatible con Unicode, ya que es una clase de caracteres POSIX (http://en.wikipedia.org/wiki/Regular_expression#Character_classes). Entonces, si tiene YAML con datos como 你好, 'tr' borrará los datos Unicode cuando use' [: print:] '. – ash

51

excluyendo únicamente los símbolos de control:

:%s/[[:cntrl:]]//g 

Eliminación de caracteres no imprimibles (elimina los caracteres no ASCII también):

:%s/[^[:print:]]//g 
+0

Al menos hasta vim 7.3 [: imprimir:] solo coincide con caracteres imprimibles en ASCII (editó la respuesta para alertar a los lectores sobre este hecho) – ndemou

+0

@ndemou Esto es complicado, con el [] alrededor de [: imprimir:] el^debería invertir el unir y devolver cualquier no imprimible. ¿O tal vez esa fue tu edición? – dragon788

+0

@ dragon788, sí. Estaba al tanto de cómo funciona cuando escribí mi comentario. Pruebe la segunda expresión regular en texto con caracteres Unicode imprimibles fuera de la tabla ASCII para comprender mi comentario (eliminará los caracteres Unicode). – ndemou

4

Ninguna de las respuestas aquí utilizando los caracteres de control de Vim trabajó para mí. Tuve que ingresar a un rango Unicode.

:%s/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]//g 

Ese rango Unicode se encontró en este otro post: https://stackoverflow.com/a/8171868/231914

+0

Como TAB se considera no imprimible, estos [[: cntrl:]] y [^ [: imprimir:]] coinciden con TAB (0x9, C-I) – mosh

Cuestiones relacionadas