2010-05-09 36 views
20

Tôi đã xuất tệp từ Word và nó đã thay thế tất cả các dấu ngoặc kép bằng các ký tự unicode lạ không được hiển thị chính xác trong vim. Vì vậy, bây giờ tôi muốn những nhân vật được thay thế bằng dấu ngoặc kép, nhưng tôi không biết làm thế nào để vào nhân vật này trongCách tìm kiếm và thay thế một ký tự không thể in

:%s/???/'/g 

Các nhân vật trông như thế này: ~ U ~ R. Nhưng tất nhiên tôi không thể chỉ đánh dấu chúng bằng chuột và dán trong lệnh.

+0

không liên quan đến chương trình, thuộc về superuser.com. –

+5

@ax: http://meta.stackexchange.com/questions/25925/vim-questions-so-or-su –

+0

Bạn có thể thay đổi tất cả "dấu ngoặc kép thông minh" từ tài liệu Word (được mã hóa bằng lược đồ mã hóa sở hữu của Microsoft không tương thích với utf-8 và iso-8859-15) với lệnh này: [return] ':% s/\% x92/'/ g' [return] Lưu ý rằng không có ký tự ẩn trong dòng này. –

Trả lời

44

Bạn có thể thử thiết lập các kiểu mã hóa và xem nếu nó sửa chữa visalizations trong những nhân vật:

:set encoding=utf-8 

sau đó bạn có thể sử dụng chúng trực tiếp. Ngoài ra, bạn có thể đặt con trỏ trên nhân vật chưa in ra và nhấn ga, nó sẽ hiển thị mã số thập phân/hex/bát phân của nhân vật đó, sau đó bạn có thể thay thế nó bằng:

:%s/\%xYY/substitute/g 

nơi YY là mã hex của các char, nếu nó multibyte:

:%s/\%uYYYY/substitute/g 

để biết chi tiết:

:help character-classes 
+0

Kỳ lạ thay, '/ \% x00' không tìm thấy bất cứ điều gì, mặc dù các bản in" phổ biến ", như'/\% x41' đã làm. Để có được giá trị null, tôi phải [sử dụng thủ thuật này] (http://superuser.com/questions/75130/how-to-remove-this-symbol-with-vim). – ruffin

+0

Bạn có chắc chắn không có nghĩa là ': set fileencoding = utf-8' thay thế không? Nó làm một cái gì đó khá khác với ': set encoding = utf-8'. – Flimm

7

tôi thường:

  1. xóa ký tự với: x
  2. hoàn tác thay đổi của tôi với: u
  3. làm nhờ thay thế để c_CTRL-R: :%s/^R"/'/g
+1

Tương đương, bạn cũng có thể thực hiện 'y' theo sau dấu cách thay vì' xu', nhưng tùy theo điều gì phù hợp với bạn. – DrAl

+0

Cảm ơn Al! Tôi đã luôn luôn tự hỏi làm thế nào để làm điều này mà không có 'vy' hoặc' xu' –

+0

Ngoài ra 'yl' (' l' là chữ cái). Và cũng có thể là "y ", nhưng đó là một loại vụng về. –

1

bạn cũng có thể lọc nó bằng cách sử dụng các tr lệnh

ví dụ thay thế hex a0 bắt nguồn từ việc cắt và dán MacOs có thể được thay thế bằng khoảng trống như sau (\ 240 là đại diện bát phân của hex a0)

:.,$!tr "\240" " " 
Các vấn đề liên quan