2011-12-26 14 views
8

Tôi đang cố gắng thuyết phục GVim 7.3 để in chính xác (:hardcopy) ký tự trung tâm châu Âu (šđčćž ŠĐČĆŽ) sang PDF. Cài đặt mà tôi tin là có liên quanKý tự trung Âu trong Vim và in (PDF) chúng ra

set encoding=utf8 
set fileencodings=ucs-bom,utf8,cp1250,latin1 
set guifont=Consolas:h9:cEASTEUROPE 
set printfont=Consolas:h9:cEASTEUROPE 

Sau khi thay đổi mã hóa để cp1250 (và viết chúng một lần nữa, vì sự thay đổi trong vít mã hóa lên) họ in ra một cách chính xác.

Bây giờ, tôi nghĩ utf-8 là một bộ lớn hơn và hoàn chỉnh hơn nhiều so với cp1250. Tại sao sau đó thay đổi họ in ra một cách chính xác, hoặc quan trọng hơn, tại sao tôi không thể sử dụng chúng kết hợp với enc=utf-8 (mà tôi thường sử dụng vì sự phong phú của các nhân vật khác, không bình thường có thể truy cập)?

enter image description here

enter image description here


:version 
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Oct 27 2010 17:59:02) 
MS-Windows 32-bit GUI version with OLE support 
Included patches: 1-46 
Compiled by [email protected] 
Big version with GUI. Features included (+) or not (-): 
+arabic +autocmd +balloon_eval +browse ++builtin_terms +byte_offset +cindent +clientserver +clipboard +cmdline_compl 
+cmdline_hist +cmdline_info +comments +conceal +cryptv +cscope +cursorbind +cursorshape +dialog_con_gui +diff +digraphs -dnd 
-ebcdic +emacs_tags +eval +ex_extra +extra_search +farsi +file_in_path +find_in_path +float +folding -footer +gettext/dyn 
-hangul_input +iconv/dyn +insert_expand +jumplist +keymap +langmap +libcall +linebreak +lispindent +listcmds +localmap -lua +menu 
+mksession +modify_fname +mouse +mouseshape +multi_byte_ime/dyn +multi_lang -mzscheme +netbeans_intg +ole -osfiletype 
+path_extra +perl/dyn +persistent_undo -postscript +printer -profile +python/dyn +python3/dyn +quickfix +reltime +rightleft 
+ruby/dyn +scrollbind +signs +smartindent -sniff +startuptime +statusline -sun_workshop +syntax +tag_binary +tag_old_static 
-tag_any_white +tcl/dyn -tgetent -termresponse +textobjects +title +toolbar +user_commands +vertsplit +virtualedit +visual 
+visualextra +viminfo +vreplace +wildignore +wildmenu +windows +writebackup -xfontset -xim -xterm_save +xpm_w32 
    system vimrc file: "$VIM\vimrc" 
    user vimrc file: "$HOME\_vimrc" 
2nd user vimrc file: "$VIM\_vimrc" 
     user exrc file: "$HOME\_exrc" 
    2nd user exrc file: "$VIM\_exrc" 
    system gvimrc file: "$VIM\gvimrc" 
    user gvimrc file: "$HOME\_gvimrc" 
2nd user gvimrc file: "$VIM\_gvimrc" 
    system menu file: "$VIMRUNTIME\menu.vim" 
Compilation: cl -c /W3 /nologo -I. -Iproto -DHAVE_PATHDEF -DWIN32 -DFEAT_CSCOPE -DFEAT_NETBEANS_INTG -DFEAT_XPM_W32 -DWINVE 
R=0x0400 -D_WIN32_WINNT=0x0400 /Fo.\ObjGOLYHTR/ /Ox /GL -DNDEBUG /Zl /MT -DFEAT_OLE -DFEAT_MBYTE_IME -DDYNAMIC_IME -DFEAT_GUI_W3 
2 -DDYNAMIC_ICONV -DDYNAMIC_GETTEXT -DFEAT_TCL -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"tcl83.dll\" -DDYNAMIC_TCL_VER=\"8.3\" -DFEAT_PYTH 
ON -DDYNAMIC_PYTHON -DDYNAMIC_PYTHON_DLL=\"python27.dll\" -DFEAT_PYTHON3 -DDYNAMIC_PYTHON3 -DDYNAMIC_PYTHON3_DLL=\"python31.dll\" 
-DFEAT_PERL -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl512.dll\" -DFEAT_RUBY -DDYNAMIC_RUBY -DDYNAMIC_RUBY_VER=191 -DDYNAMIC_RUBY_DLL 
=\"msvcrt-ruby191.dll\" -DFEAT_BIG /Fd.\ObjGOLYHTR/ /Zi 
Linking: link /RELEASE /nologo /subsystem:windows /LTCG:STATUS oldnames.lib kernel32.lib advapi32.lib shell32.lib gdi32.lib comdl 
g32.lib ole32.lib uuid.lib /machine:i386 /nodefaultlib gdi32.lib version.lib winspool.lib comctl32.lib advapi32.lib shell32.lib 
/machine:i386 /nodefaultlib libcmt.lib oleaut32.lib user32.lib  /nodefaultlib:python27.lib /nodefaultlib:python31.lib e:\t 
cl\lib\tclstub83.lib WSock32.lib e:\xpm\lib\libXpm.lib /PDB:gvim.pdb -debug 
Press ENTER or type command to continue 

Khi gõ và lưu với enc = utf8:

0000000: c5a1 2020 2020 c5a0 0d0a c491 2020 2020 .. ......  
0000010: c490 0d0a c48d 2020 2020 c48c 0d0a c487 ...... ...... 
0000020: 2020 2020 c486 0d0a c5be 2020 2020 c5bd  ...... .. 
0000030: 0d0a 0d0a 0d0a       ...... 

... với enc = cp1250

012.
0000000: 9a20 2020 208a 0d0a f020 2020 20d0 0d0a . .... ... 
0000010: e820 2020 20c8 0d0a e620 2020 20c6 0d0a . .... ... 
0000020: 9e20 2020 208e 0d0a 0d0a     . ..... 
+0

Bạn sẽ nhận được các ký tự cụ thể nào khi in/PDF? – dusan

+0

Hãy thử đặt mã hóa in ấn một cách rõ ràng trước khi đưa ra lệnh ': hardcopy':': set printencoding = utf-8'. –

+0

@ib. - Tôi không có tùy chọn 'printencoding' có sẵn, do + máy in nhưng -postscript. Ngoài ra, tôi quên đề cập đến, những gì tôi yêu cầu đã làm việc trên một trong các phiên bản cũ của Vim (6.9, 7.0 ??) với một số thiết lập (?). Than ôi, thua tôi. – Rook

Trả lời

1

Dưới đây là một số very nice thread thảo luận về điều gì đó rất gần với điều này. Kết luận cuối cùng là, "nó không hoạt động, không làm điều đó" - chỉ cần lưu tập tin trong UTF-8 và in nó với cái gì khác, ví dụ: sổ tay.

này hoạt động trên hệ thống của tôi:

:silent !notepad /pt "%" "PDFLite" 

nơi PDFLite là tên của máy in print-to-PDF của tôi.

Chỉnh sửa: Tôi đang sử dụng mã hóa "utf-8" trong vim.

+0

Đó không phải là rất an ủi xem xét những người là một phần của bảng chữ cái của tôi, và do đó thường được sử dụng. Tôi có thể sử dụng cp1250, và in ra như vậy (hoạt động cháy), nhưng sau đó tôi thiếu khả năng sử dụng tất cả các "biểu tượng mát mẻ" utf có:/(chưa kể rằng các ốc vít với khá một vài plugin phụ thuộc vào utf8 để hoạt động đúng) – Rook

+0

Điều này không giải quyết được vấn đề của bạn? Nó sẽ thay thế việc bạn sử dụng ': hardcopy' bằng lệnh trên và mọi thứ hoạt động. Bạn có thể sử dụng UTF-8. –

+0

Nó chỉ là một giải pháp một nửa, không chỉ khiến tôi nghĩ về những gì PDFPrinter tôi có trên máy tính nào, mà còn tất cả các vấn đề khác phát sinh từ thực tế là utf8 không được triển khai đúng (màu cú pháp đầu tiên xuất hiện trong đầu). Tôi nghĩ rằng tôi sẽ dính vào loạt mã hóa cpxxxx trong tương lai ngay lập tức cho bây giờ:/ – Rook

0

Cài đặt các khoảng trống, nó hoạt động tốt thông qua lệnh trong vim "! Paps <%> out.ps", sau đó bạn có thể chuyển đổi bằng cách sử dụng ps2pdf sang pdf.

Nếu trên máy Mac, hãy sử dụng 'brew install paps'

+0

Không sử dụng ps2pdf. Thay vào đó, hãy lấy phiên bản mới nhất của các lỗ hổng từ github/dov/paps và hỗ trợ xuất PDF trực tiếp. –

0

Tôi đang sử dụng cùng phiên bản Vim làm OP. Câu thần chú kỳ diệu của tôi cho việc in ấn nội dung đó là:

:se fenc=cp1252 
:w 
:e ++enc=cp1252 
:se enc=cp1252 
:se fenc=cp1252 
:se penc=cp1252 
:hardcopy 

Sử dụng một mã có thể áp dụng cho bạn. Ba dòng đầu tiên (tức là tiết kiệm và tải lại) có thể không cần thiết, nhưng nó phải đảm bảo văn bản thực sự được chuyển đổi (thay vì bộ đệm vừa được giải thích lại). AFAICT encpenc cần phải được đặt, fenc chỉ là CYA. Sau đó sử dụng :hardcopy tùy theo cách bạn muốn.

Hãy nhớ thay đổi mã hóa có liên quan (enc, fenc) quay lại và lưu lại nếu bạn muốn lưu trữ tệp trong một số mã khác (latin1, utf-8, v.v.). Quy trình có :se fenc:w.Sau đó, bạn có thể tiếp tục với :e (có thể đã thêm ++enc=xxx) và :se enc=xxx để kiểm tra và đảm bảo rằng bạn đang làm việc trên một bản sao bằng cách sử dụng mã ưa thích của mình, cộng thêm một vòng :se fenc=xxx:w khi bạn hoàn thành ở bên an toàn.

Đó là tất cả một chút dư thừa, nhưng đó là một cách để chắc chắn Vim là trên cùng một trang với bạn. Như bạn đã nhận thấy có một cái gì đó buồn cười về việc xử lý mã trên Windows (ít nhất là in WRT), vì vậy tôi không nhất thiết phải tin tưởng nó để làm tất cả những điều đúng hoàn toàn trong nội bộ. Tôi chỉ buộc nó thay đổi biểu diễn byte thực tế và sau đó đảm bảo nó sử dụng nó.

Các vấn đề liên quan