Giới thiệu về Emacs (cuối)

Sao chép và di chuyển văn bản

Emacs không có lệnh đặc biệt cho sao chép và di chuyển văn bản.

  • di chuyển văn bản: kill và yank trở lại ở nơi khác
  • sao chép văn bản: kill và yank ngay trở lại tại nơi vừa kill, rồi di chuyển đến nơi khác và yank lần nữa

Xem thêm các lệnh sao chép và di chuyển các vùng văn bản ngẫu nhiên (không phải là đối tượng văn bản – textual object) tại Đánh dấu và vùng.

Tìm và thay

Emacs có nhiều lệnh tìm và thay rất mạnh.

Tìm

C-s (isearch-forward): tìm kiếm luỹ tiến (incremental search): Emacs tìm kiếm tích luỹ số từ trong chuỗi bạn gõ vào. Để dùng việc tìm kiếm, gõ RET hoặc một lệnh nào khác. Lặp lại C-s để nhảy tới kết quả phù hợp kế tiếp; để nhảy ngược lại, gõ C-r; gõ DEL để xoá và thay đổi chuỗi đang tìm kiếm.

C-r(isearch-backward): tìm kiếm theo chiều lui. (Dùng C-r để tìm kết quả phù hợp kế tiếp và C-s để đổi chiều tìm kiếm.)

Tìm kiếm không luỹ tiến: C-s RET text RET, trong đó text là văn bản cần tìm.

Tìm kiếm theo từ (word search): C-s RET C-w word word word RET tìm kiếm một chuỗi gồm một hoặc nhiều từ, bất kể chúng được phân cách như thế nào (bằng chữ số hay kết hợp kí tự xuống dòng và khoảng trắng).

Emacs cũng có thể tìm kiếm (không) luỹ tiến với biểu thức chính quy (regular expressions).

Thay

query-replace (M-%): nhắc bạn nhập văn bản thay thế, và văn bản để thay thế cho nó, và rồi tìm và thay trong bộ đệm hiện tại. query-replace có tính tương tác: ở mỗi lần phù hợp, bạn được nhắc để quyết định sẽ làm gì với các tuỳ chọn sau:

SPC
Thực hiện thay thế.
DEL
Không thực hiện thay thế.
RET
Chấm dứt query-replace mà không thực hiện thay thế.
ESC
Giống như RET.
.
Thực hiện thay thế rồi chấm dứt query-replace.
!
Thực hiện thay thế lần này và tất cả những lần còn lại trong bộ đệm mà không hỏi (tức là không điều kiện).

Ngoài ra còn một số lệnh con cho lệnh query-replace.

Có một số lệnh thay thế khác nên xem qua, gồm replace-string (thay thế không điều kiện đơn giản), replace-regexpquery-replace-regexp (dùng biểu thức thường quy), và tags-query-replace (thay thế tất cả identifiers trong một bộ tập tin mã nguồn).

query-replacevà các lệnh thay thế khác theo mặc định khéo về chữ hoa-thường. Thí dụ nếu bạn đang thay thếfoobằngbar, nếu Emacs tìm thấyFoo, nó sẽ thay bằngBar; nếu tìm thấyFOO, nó sẽ thay bằngBAR, v.v.

Đánh dấu và vùng

Xác định vùng

Emacs có thể xử lí một vùng văn bản ngẫu nhiên cũng như các đối tượng văn bản (textual object) rõ ràng.

Vùng là văn bản nằm giữa điểm (point)dấu (mark). Điểm thực ra là thuật ngữ Emacs gọi con trỏ. Còn dấu được thiết lập bằng lệnh C-@ (set-mark-command). Lệnh này thiết lập dấu ngay tại điểm đang đứng, và sau đó có thể di chuyển điểm để được vùng.

Mỗi bộ đệm có một điểm và dấu riêng biệt, nên có một vùng riêng biệt. (Cũng có thể không có dấu trong bộ đệm, và vì vậy không có vùng).

Vùng hoàn toàn như nhau bất kể điểm đến trước hay dấu đến trước.

Thông thường vùng không nhìn thấy (nhưng xem C-x C-x). Tuy nhiên nếu bạn chạy Emacs dưới hệ thống cửa sổ (windowing system), bạn có thể thi hành lệnh M-x transient-mark-mode để làm cho (bật/tắt) vùng thấy được.

Nhiều lệnh di chuyển điểm đi một khoảng cách (như M-<C-s) và dấu được thiết lập tại vị trí mà chúng bắt đầu di chuyển từ đó. Bạn sẽ thấy “Mark set” ở vùng phản hồi khi điều này xảy ra.

Khi dùng Emacs dưới hệ thống cửa sổ như X, chuột có thể được dùng để quét vùng.

Có một số lệnh đặc biệt dùng để xác định vùng.

M-@
mark-word. Thiết lập vùng chứa từ kế tiếp, hoặc từ điểm đến cuối từ hiện tại, nếu đang ở giữa từ.
M-h
mark-paragraph. Thiết lập vùng chứa đoạn hiện tại.
C-M-@
mark-sexp. Thiết lập vùng chứa cùng sexp mà lệnh C-M-f sẽ di chuyển tới.
C-M-h
mark-defun. Thiết lập vùng chứa defun hiện tại.
C-x C-p
mark-page. Thiết lập vùng chứa trang hiện tại.
C-x h
mark-whole-buffer. Thiết lập vùng chứa toàn bộ bộ đệm.

Thao tác trong vùng

C-x C-x
exchange-point-and-mark. Tráo đổi điểm và vùng. Lặp lại nhanh lệnh này sẽ giúp dễ thấy phạm vi của vùng.
C-w
kill-region. Kill vùng. Khi đó nó sẽ vào vòng kill.
M-w
kill-ring-save. Lưu vùng hiện tại vào vòng kill mà không lấy bỏ khỏi bộ đệm. Điều này tương đương với gõ C-w C-y.
C-x C-i
indent-rigidly. Canh lề cứng vùng bởi số kí tự (cột) được cung cấp làm đối số số (mặc định là 1 cột).
C-x C-l
downcase-region. Chuyển toàn bộ văn bản trong vùng thành chữ thường. Theo mặc định lệnh này bị bất hoạt.
C-x C-u
upcase-region. Chuyển toàn bộ văn bản trong vùng thành chữ hoa. Theo mặc định lệnh này bị bất hoạt.
M-x fill-region
fill-region. Điền, nghĩa là canh thẳng lề với bờ phải không đều, tất cả các đoạn trong vùng.

Ngoài ra còn nhiều lệnh khác nữa.

Canh lề

Trong các chế độ ngôn ngữ lập trình, Emacs dùng phím TAB để tự động canh lề một dòng, tuỳ theo quy luật cho ngôn ngữ lập trình đó. Thí dụ ở C Mode (chế độ cho ngôn ngữ C) Emacs hiểu if, while, do, for, functions, switch, v.v và canh lề thích hợp. Bạn có thể thay đổi các canh lề theo ý thích cá nhân.

Chế độ

Cách chủ yếu để Emacs tuỳ biến lệnh cho các loại văn bản khác nhau là thông qua các chế độ(mode) chính (major) và phụ (minor). Mỗi bộ đệm có một chế độ chình và có thể có thêm vài hoặc không có chế độ phụ. Đôi khi Emacs tự động chọn chế độ chính, điển thình là dựa trên phần mở rộng của tên tập tin (thí dụ tập tin tận cùng bằng.csẽ tự động vào C Mode; tập tin tận cùng bằng.tclsẽ tự động vào Tcl Mode). Nhưng bạn có thể thiết lập chế độ theo ý mình cho bộ đệm hiện tại bằng cách dùng M-x majormodename-mode, thí dụ để vào chế độ dành cho Lisp, bạn gõ M-x lisp-mode.

Một số chế độ chính

Fundamental Mode
Chế độ căn bản mà quy chiếu theo đó để định nghĩa tất cả các chế độ chuyên biệt. Hoàn hảo cho soạn thảo bất cứ loại văn bản nào, chỉ không cung cấp các tính năng đặc biệt.
Text Mode
Để soạn thảo văn bản. Có các lệnh đặc biệt để kiểm tra chính tả, canh giữa cho dòng, v.v.
Outline Mode
Giống như Text Mode nhưng được thiết kế dùng cho các phác thảo (outline). Bổ sung folding của các mức phác thảo, v.v.
Lisp Mode
Để biên tập mã nguồn Common Lisp. Có liên kết tương tác đến Common Lisp interpreter trong một bộ đệm khác.
Tcl Mode
Để biên tập mã nguồn Tcl. Có liên kết tương tác đến Tcl interpreter trong một bộ đệm khác.
C Mode
Để biên tập mã nguồn C. Có canh lề đặc biệt, v.v.

Có nhiều chế độ chính khác, như HTML mode, SGML mode, TeX mode,… và một số chế độ rất đặc biệt (thí dụ các chế độ cho soạn thảo email. đọc tin Usernet, duyệt thư mục, duyệt World Wide Web, v.v).

Thông tin thêm

GNU Emacs FAQ (mirror 1: dạng Info Nodes, mirror 2)

GNU Emacs Manual (mirror 1: dạng Info Nodes)

Giới thiệu về Emacs (tiếp 3)

Lệnh thao tác trên cửa sổ

 

C-v
scroll-up. Cuộn tới (về cuối tập tin) một màn hình. Theo mặc định, Emacs chừa 2 hàng từ màn hình trước.
M-v
scroll-down. Như C-v, nhưng cuộn ngược.
C-x o
other-window. Chuyển sang cửa sổ khác. Lặp đi lặp lại lệnh này sẽ di chuyển qua tất cả các cửa sổ, từ trái sang phải và trên xuống dưới.
C-x 1
delete-other-windows. Xoá tất cả các cửa sổ khác, trừ cửa sổ hiện tại. Lệnh này không xoá các bộ đệm và tập tin liên hệ với cửa sổ bị xoá.
C-x 0
delete-window. Xoá cửa sổ hiện tại, thay đổi kích thước các cửa sổ khác cho thích hợp.
C-x 2
split-window-vertically. Chia cửa sổ hiện tại thành hai, theo chiều dọc. Lệnh này tạo một cửa sổ mới, nhưng không tạo bộ đệm mới: cùng một bộ đệm sẽ được xem trong 2 cửa sổ. Điều này giúp xem các phần khác nhau của bộ đệm đồng thời.
C-x 3
split-window-horizontally. Tương tự như C-x 2 nhưng chia cửa sổ theo chiều ngang.
C-M-v
scroll-other-window. Tương tự như C-v, nhưng cuộn các cửa sổ kế tiếp (là cửa sổ mà lệnh C-o sẽ chuyển sang).

 

Các khái niệm căn bản

 

Vào và ra

Để khởi động Emacs:

    emacs

sau đó dùng các lệnh tập tin để đọc tập tin cần biên tập. Thay vào đó, bạn cũng có thể khởi động Emacs với một (hoặc nhiều) tập tin ban đầu:

    emacs foo.bar

 

Để thoát Emacs, dùng lệnh C-x C-c (liên kết với save-buffers-kill-emacs). Nó sẽ đề nghị bạn lưu tất cả bộ đệm và rồi thoát.

Bạn cũng có thể hoãn Emacs (theo nghĩa Unix là dừng nó và đặt vào hậu trường) bằng C-x C-z (liên kết với suspend-emacs). Khởi động lại Emacs tuỳ theo shell, nhưng thông thường dựa trên lệnh fg.

Các lệnh tự điền (self inserting command)

Một khi Emacs đã khởi động, bạn có thể gõ văn bản vào nó. Các kí tự in được tự điền vào vì mỗi kí tự liên kết với lệnh tự điền self-insert-command.

Màn hình

 

Dòng chế độ

Màn hình Emacs hoàn toàn được dành cho văn bản của tập tin, chỉ trừ một dòng gần cuối màn hinh được dành cho dòng chế độ. Dòng này hiển thị các thông tin quan trọng, bao gồm:

  • Trạng thái của bộ đệm: đã thay đổi (cặp dấu sao), chưa thay đổi (dấu gạch ngang), hay chỉ đọc (cặp dấu %).
  • Tên tập tin đang biên tập (sẽ là *scratch* nếu bạn không đang biên tập tập tin nào).
  • Chế độ chính (trong dấu ngoặc).
  • Lượng của tập tin xem trên màn hình:
    All
    Tất cả nội dung của tập tin.
    Top
    Phần đầu của tập tin.
    Bot
    Phần cuối của tập tin.
    NN%
    Phần trăm tập tin trên cửa sổ.

 

Tiểu bộ đệm (minibuffer)

Dòng trắng bên dưới dòng chế độ là tiểu bộ đệm, dùng hiển thị thông điệp và dấu nhắc yêu cầu gõ một cái gì đó (trả lời có/không cho câu hỏi, tên tập tin, tên lệnh dài, v.v).

Tiểu bộ đệm cũng được gọi là vùng phản hồi (echo area), vì Emacs hiển thị các gõ phím ở đây nếu bạn gõ thật chậm. Thí dụ gõ phím đa kí tự (multi-character keystroke) (như ESC q) với khoảng dừng dài giữa các lần gõ.

Thông điệp lạ

Thỉnh thoảng Emacs tự động in các thông điệp trên tiểu bộ đệm mà dường nhu không liên quan gì đến việc bạn đang làm. Hai thông điệp thường gặp nhất là:

Mark set
Emacs đánh dấu cho bạn do kết quả của câu lệnh cuối; đánh dấu tự động là tính năng tiện lợi của một số lệnh, xem Đánh dấu và vùng.
Garbage collecting…
Bộ máy lips của Emacs đang thực hiện lưu trữ, bạn có thể bỏ qua và tiếp tục gõ.

 

Kí tự khôi hài (funny character)

Khi tập tin chứa kí tự điều khiển (control character) hoặc kí tự với high-order bit bằng 1 (được set), Emacs hiển thị chúng bằng dấu gạch xiên ngược và 3 số bát phân (cho giá trị ASCII của kí tự) đi theo sau. Nếu trạm cuối (terminal) có thể hiển thị bộ kí tự 8 bit, như ISO Latin-1, Emacs sẽ hiển thị các kí tự này thay vì các số bát phân.

Dòng dài

Emacs không ngắt dòng tự động nếu không được yêu cầu. Vì vậy nó không làm xáo trộn các dòng dài trong tập tin. Ở các chế độ hướng về soạn thảo văn bản, Emacs có thể thêm ngắt dòng tự động.

Eight-bit clean

Emacs có thể biên tập tập tin nhị phân mà không làm hỏng chúng.

Ngắt ngang và bỏ ngang

 

C-g (liên kết với keyboard-quit) dùng để ngắt ngang công việc Emacs đang làm (chẳng hạn như đang hỏi bạn gì đó mà bạn không hiểu), và nó cũng bỏ ngang một phần chuỗi phím vừa được gõ (ví dụ nếu bạn bất cẩn gõ C-x). C-g là kí tự ASCII BEL, do đó khi bạn gõ chuông sẽ kêu.

Vì Emacs có khả năng đệ quy đầy đủ nên đôi khi cần phải gõ C-g vài lần để thoát khỏi chuỗi lệnh đệ quy. Cũng vậy, nếu Emacs thật sự bị treo, có thể gõ nhanh 3 lần C-g để bỏ ngang cái đang làm treo.

Giúp đỡ

Emacs có hệ thống giúp đỡ trực tuyến phong phú, có thể được truy cập qua phím giúp đỡ C-h. C-h là phím tiền tố. Gõ C-h hai lần để xem danh sách các lệnh con (subcommand); gõ ba lần để được cửa sổ miêu tả tất cả các lệnh này (gõ SPC sẽ cuộn cửa sổ này). Một vài lệnh giúp đỡ thường dùng:

C-h a
command-apropos. Nhắc nhập từ khoá và sau đó liệt kê tất cả các lệnh mang từ khoá đó trong tên dài.
C-h k
describe-key. Nhắc nhập một gõ phím, và miêu tả lệnh liên kết với phím đó, nếu có.
C-h i
info. Gọi trình đọc tài liệu siêu văn bản Info.
C-h m
describe-mode. Miêu tả chế độ chính hiện tại và các liên kết phím (key binding) cụ thể của nó.
C-h p
finder-by-keyword. Chạy trình duyệt hướng chủ đề tương tác (interactive subject-oriented browser) của các gói Emacs.
C-h t
help-with-tutorial. Chạy tài liệu hướng dẫn sử dụng Emacs. Rất có ích cho người mới bắt đầu.

 

Info

Emacs cài đặt sẵn trình đọc tài liệu siêu văn bản được gọi là Info. Để chạy nó, gõ C-h i hoặc M-x info RET. Nó có tài liệu hướng dẫn cho chính nó, được mở bằng cách gõ h.

Undo không giới hạn và redo

Một trong các lệnh quan trọng nhất của Emacs là undo, bằng cách gõ C-_ (control thanh dưới). C-_ là một kí tự ASCII hợp lệ, nhưng một vài bàn phím không phát sinh được kí tự này, khi đó có thể dùng C-x u.

Emacs có thể undo không giới hạn số lần thay đổi trước, và nó cũng có khả năng redo những gì đã bị undo.

Lưu dự phòng và chế độ tự động lưu

Emacs không bao giờ thay đổi tập tin trên đĩa cho đến khi bạn yêu cầu nó làm, nhưng nó rất cẩn thận trong việc lưu công việc bạn đang làm theo một số cách.

Tập tin lưu dự phòng (backup file).
Emacs luôn luôn lưu lại phiên bản trước của tập tin khi bạn lưu tập tin. Nếu tập tin có tênfoo, bản lưu dự phòng sẽ được gọi làfoo~. Emacs có thể lưu giữ bất cứ số phiên bản nào trước đó (tuỳ theo bạn quy định, và theo mặc định là off), đặt tên làfoo.~1~,foo.~2~, v.v.
Tập tin tự động lưu (auto-save file).
Theo mặc định Emacs cũng tự động lưutập tin trong khi bạn đang biên tập nó. Tập tin tự động lưu cho tập tinfoođược gọi là#foo#. Nếu Emacs (hoặc hệ thống) bị crash trước khi bạn lưu các thay đổi, bạn có thể khôi phục gần như toàn bộ từ tập tin này. Tự động lưu (theo mặc định) được thực hiện mỗi 300 kí tự, hoặc khi hệ thống gặp lỗi.

 

Hoàn thành (completion)

Để tiết kiệm gõ phím, Emacs cung cấp nhiều dạng hoàn thành: có nghĩa là Emacs cố gắng hoàn thành tên tập tin, tên lệnh, v.v đã được gõ một phần. Thường dùng phím TAB để gọi chế độ hoàn thành.

Tue, 08/14/2012 – 20:47 — Admin

Cung cấp đối số cho câu lệnh

Cung cấp đối số cho câu lệnh

Nhiều lệnh Emacs lấy đối số, giống như cách một thủ tục hoặc một hàm lấy đối số trong ngôn ngữ lập trình. Hầu hết các lệnh tạo dấu nhắc cho bạn nhập đối số của nó: thí dụ lệnh đọc nội dung tập tin sẽ nhắc bạn nhập tên tập tin.

Có một loại đối số thường được chấp nhận đến nỗi có cách đặc biệt để cung cấp nó: đối số số (numeric argument). Nhiều lệnh hiểu đối số số là một yêu cầu lặp lại bấy nhiêu lần. Thí dụ, lệnh delete-char (liên kết với C-d), thông thường xoá một kí tự bên phải con trỏ, sẽ xoá N kí tự nếu được cho đối số số là N. Nó cũng làm việc với các lệnh tự điên vào.

Để cung cấp đối số số, thí dụ 12, cho một lệnh, gõ C-u 12 trước khi gõ lệnh. Nếu gõ chậm rãi, bạn sẽ thấy:

C-u 1 2-

ở vùng phản hồi. Sau đó gõ C-d và như vậy bạn đã cho lệnh delete-char đối số 12. Dấu gạch ngang dẫn đầu biểu thị đối số âm; dấu gạch ngang duy nhất (không có con số theo sau) biểu thị đối số -1. Bỏ ngang một đối số số vừa gõ bằng C-g.

Vì người ta thường không quan tâm precisely chính xác bao nhiêu lần một lệnh được lặp lại, có cách nhanh để lấy đối số số với các biên độ khác nhau. C-u một mình, không có chữ số nào theo sau, tương ứng với đối số số là 4. Lần C-u tiếp theo sẽ nhân nó lên 4, được đối số số 16. Lần C-u tiếp nữa sẽ nhân thêm 4, được đối số số 64, v.v. Vì vậy C-u được gọi là universal-argument (đối số phổ quát).

Tuỳ theo lệnh, đối số số không nhất thiết được hiểu là số lần lặp lại, mà có thể bị bỏ qua hoặc được hiểu là Boolean (sự có mặt của đối số — bất cứ đối số nào — và ngược lại là sự vắng mặt của nó), v.v.

Trích dẫn các kí tự liên kết với lệnh

Để điền kí tự điều khiển (control character) vào tập tin, có thể dùng lệnh quoted-insert, liên kết với C-q. C-q có tác dụng như lệnh tiền tố, nhưng kí tự kế tiếp sẽ được điền vào bộ đệm thay vì thi hành như một lệnh. Thí dụ C-q ESC sẽ điền một Escape.

C-q cũng có thể dùng nhập kí tự bằng cách gõ C-q và theo sau với mã ASCII ở dạng chữ 3 số bát phân.

Các lệnh bị bất hoạt

Một số lệnh đặc biệt dễ gây nhầm lẫn cho người mới sử dụng được bất hoạt theo mặc định. Khi một lệnh bị bất hoạt được gọi, sẽ xuất hiện hộp thoại ngắn và cửa sổ tài liệu cho lệnh đó, và cho bạn 3 lựa chọn:

  • Space để dùng lệnh đó chỉ ở lần này, và tiếp tục bất hoạt,
  • Y để dùng nó và hoạt hoá nó (sẽ không bị câu hỏi ở lần dùng sau),
  • N để không làm gì hết (lệnh vẫn bị bất hoạt).

Di chuyển và đối tượng văn bản

Emacs cung cấp nhiều lệnh để di chuyển xung quanh đối tượng văn bản. Các lệnh này có thể nhận đối số số để lặp lại. Định nghĩa đối tượng văn bản có thể thay đổi tuỳ theo chế độ (thí dụ dấu gạch dưới (underbar) được xem là yếu tố cấu tạo từ trong C Mode, vì chúng hợp lệ trong tên identifier, nhưng không được xem là yếu tố cấu tạo từ trong Text Mode).

Kí tự

C-f
forward-char. Di chuyển tới (về phải) một kí tự.
C-b
backward-char. Di chuyển lùi (về trái) một kí tự.

Từ

M-f
forward-word. Di chuyển tới một từ.
M-b
backward-word. Di chuyển lùi một từ.

Dòng (dọc)

C-n
next-line. Di chuyển xuống dòng kế tiếp.
C-p
previous-line. Di chuyển lên dòng trước.

Con trỏ vẫn ở cùng cột khi di chuyển theo dòng (hoặc cuối dòng nếu dòng đó ngắn).

Dòng (ngang)

C-a
beginning-of-line. Di chuyển đến đầu dòng hiện tại.
C-e
end-of-line. Di chuyển đến cuối dòng hiện tại.

Câu

M-a
backward-sentence. Di chuyển đến đầu câu hiện tại.
M-e
forward-sentence. Di chuyển đến cuối câu hiện tại.

Đoạn

M-{
backward-paragraph. Di chuyển đến đầu đoạn hiện tại.
M-}
forward-paragraph. Di chuyển đến cuối đoạn hiện tại.

Trang

C-x [
backward-page. Di chuyển đến đầu trang hiện tại.
C-x ]
forward-page. Di chuyển đến cuối trang hiện tại.

Trang được chia bởi kí tự formfeed (C-l) trong hầu hết các chế độ.

Bộ đệm

M-<
beginning-of-buffer. Di chuyển đến đầu bộ đệm.
M->
end-of-buffer. Di chuyển đến cuối bộ đệm.

Biểu thức S (cặp dấu ngoặc)

Biểu thức S (S-expression, gọi tắt là sexp) là tên cho cho các cặp dấu ngoặc (balanced parentheses) (và văn bản chứa trong đó) trong Lisp. Các kí tự mà Emacs nhận biết là dấu ngoặc gồm ngoặc tròn, ngoặc vuông và ngoặc nhọn, nhưng cũng còn tuỳ vào ngôn ngữ lập trình.

Ngoài ra, trong hầu hết các chế độ ngôn ngữ lập trình, các chuỗi đặt trong dấu nháy (quoted string) cũng được xem là sexps (có thể là dấu nháy đơn hay nháy kép).

C-M-b
backward-sexp. Di chuyển lùi đến sexp kế tiếp. Nếu con trỏ ở ngay bên phải của dấu ngoặc trái, C-M-b sẽ bíp, vì không có sexp ở phía trái để di chuyển đến: bạn phải di chuyển lên.
C-M-f
forward-sexp. Di chuyển tới sexp kế tiếp. Tương tự như trên nếu con trỏ nằm ngay bên trái của dấu ngoặc phải.
C-M-u
backward-up-list. Di chuyển lùi lên một cấp dấu ngoặc. Nói cách khác, di chuyển sang dấu ngoặc trái của dấu ngoặc đang chứa con trỏ, bỏ qua các sexp trong các cặp dấu ngoặc.
C-M-d
down-list. Di chuyển xuống một cấp dấu ngoặc. Nói cách khác, di chuyển sang bên phải của dấu ngoặc trái kế tiếp, bỏ qua các sexp trong các cặp dấu ngoặc.

Hàm

Emacs, theo Lips, gọi các hàm và thủ tục là defun.

C-M-a
beginning-of-defun. Di chuyển đến đầu của defun hiện tại.
C-M-e
end-of-defun. Di chuyển đến cuối của defun hiện tại.

Xoá (delete), kill và yank

Xoá (delete): lấy bỏ đoạn văn bản từ bộ đệm mà không lưu lại. Kill: lưu văn bản đã lấy bỏ, nhờ đó có thể yank trở lại ở nơi khác.

Văn bản bị kill được lưu ở vòng kill (kill ring). Vòng kill giữ N kill cuối, mặc định N là 30, nhưng có thể thay đổi bằng cách thay giá trị cho biến kill-ring-max. Vòng kill đóng vai trò như một fifo khi bạn kill một cái gì đó (sau lần kill thứ 30, kill số 1 sẽ biến mất), nhưng như một cái vòng khi bạn yank chúng trở lại (có thể yank vòng quanh một cách tuần hoàn).

Kí tự

C-d, Delete
delete-char. Xoá kí tự bên phải (hoặc dưới, nếu con trỏ là khối chứa một kí tự) con trỏ.
DEL, BS
delete-backward-char. Xoá kí tự bên trái con trỏ.

Từ

M-d
kill-word. Kill đến cuối từ phía bên phải con trỏ (tới).
M-DEL
backward-kill-word. Kill đến đâu từ phía bên trái con trỏ (lui).

Dòng (ngang)

C-k
kill-line. Kill đến cuối dòng hiện tại, không bao gồm kí tự xuống dòng (newline). Vì vậy nếu từ đầu dòng, cần 2 lần C-k để kill toàn bộ dòng và đóng khoảng trắng.
C-u 0 C-k
kill-line. Xoá đến đầu dòng hiện tại, không bao gồm newline.
C-u -n C-k
kill-line. Xoá đến đầu của -n dòng trước.

Câu

M-k
kill-sentence. Kill đến cuối câu hiện tại, bao gồm các newline có trong câu.
C-u -1 M-k
kill-sentence. Kill đến đầu câu hiện tại, bao gồm các newline có trong câu.

Đoạn

Có các lệnh forward-kill-paragraphbackward-kill-paragraph, nhưng theo mặc định chúng không liên kết với phím nào.

Trang

Không có lệnh kill trang (nhưng xem Đánh dấu và vùng).

Bộ đệm

Lệnh kill-buffer không kill tất cả văn bản trong bộ đệm, nhưng kill toàn bộ cấu trúc dữ liệu bộ đệm: xem Đánh dấu và vùng.

Biểu thức S (cặp dấu ngoặc)

C-M-k
kill-sexp. Kill sexp sau con trỏ.
C-u -1 C-M-k
kill-sexp. Kill sexp trước con trỏ.

Có lệnh backward-kill-sexp, nhưng theo mặc định không liên kết với phím nào.

Hàm

Không có lệnh kill hàm (defuns) (nhưng xem Đánh dấu và vùng).

Yank

C-y (yank) lấy (yank) văn bản bị kill gần đây nhất.

M-y (yank-pop) di chuyển sang các văn bản ở các lần kill trước bằng cách thế văn bảng vừa được yank bằng văn bản ở lần kill trước nó. Các lần M-y tiếp theo sẽ di chuyển quanh vòng kill.

Vì Emacs chỉ có một vòng kill (chứ không phải một vòng cho mỗi bộ đệm), bạn có thể kill trong bộ đệm này và yank ở bộ đệm khác.

Giới thiệu về Emacs (tiếp 2)

Tập tin, bộ đệm và cửa sổ

Emacs có 3 (thực ra là 4) cấu trúc dữ liệu liên quan mật thiết với nhau:

Tập tin
Tập tin là tập tin Unix thực sự trên đĩa. Bạn không bao giờ biên tập trực tiếp trên tập tin này. Emacs đọc tập tin vào bộ đệm và viết một bộ đệm vào tập tin để lưu nó.
Bộ đệm (buffer)
Bộ đệm là cấu trúc dữ liệu nội tại giữ văn bản bạn thực sự biên tập. Emacs có thể có con số bộ đệm bất kì tại bất kì thời điểm nào. Hầu hết, nhưng không phải tất cả, các bộ đệm liên hệ với một tập tin. Bộ đệm có tên; một bộ đệm xuất phát từ một tập tin gần như luôn luôn mang tên của tập tin đó, và chúng ta nói rằng bộ đệm đang viếng thăm tập tin. Điều này có nghĩa là khi bạn lưu bộ đệm, nó sẽ được lưu vào tập tin đúng. Vào bất cứ lúc nào cũng chỉ có đúng một bộ đệm được chọn: đây là bộ đệm mà con trỏ phần cứng đang hoạt động và là nơi mà lệnh sẽ có tác dụng. Bộ đệm có thể được xoá theo ý muốn; xoá bộ đệm không xoá tập tin trên đĩa (mặc dù bạn có thể mất các thay đổi đã thực hiện nếu bạn không lưu trước).
Cửa sổ
Cửa sổ là nơi bạn xem bộ đệm. Vì giới hạn thực thể của màn hình, có thể bạn không có chỗ để xem tất cả các bộ đệm cùng lúc. Bạn có thể chia nhỏ màn hình, ngang hay dọc, thành nhiều cửa sổ, mỗi cửa sổ xem một bộ đệm khác nhau. Cũng có thể có vài cửa sổ để xem các phần khác nhau của cùng bộ đệm. Có thể tạo và xoá cửa sổ tuỳ thích; xoá cửa sổ không xoá bộ đệm liên hệ với cửa sổ đó.
Khung (frame)
Khung giống như cửa sổ, nhưng được đối xử như một thực thể riêng biệt trong hệ thống cửa sổ như X.

Lệnh thao tác trên tập tin

C-x C-f
find-file. Nhắc nhập tên tập tin và đọc tập tin vào bộ đệm cho để biên tập. Nếu tập tin đang được biên tập trong một bộ đệm nào đó, nó chỉ chuyển sang bộ đệm đó mà không đọc tập tin.
C-x C-s
save-buffer. Lưu tập tin, hay chính xác hơn là viết bộ đệm hiện tại lên đĩa.
C-x s
save-some-buffers. Lưu tất cả các bộ đệm đang viếng thăm tập tin, truy vấn từng cái và đưa ra một số tuỳ chọn cho mỗi cái (lưu, không lưu, nhìn qua trước rồi có thể lưu nó, v.v).

Lệnh thao tác trên bộ đệm

C-x b
switch-to-buffer. Nhắc nhập tên bộ đệm và chuyển bộ đệm của cửa sổ hiện tại sang bộ đệm đó. Tạo bộ đệm rỗng mới nếu tên mới được nhập vào.
C-x C-b
list-buffers. Xuất hiện cửa sổ mới liệt kê tất cả bộ đệm với tên, đã thay đổi hay không, kích thước theo byte, chế độ chính và tập tin mà bộ đệm đang viếng thăm.
C-x k
kill-buffer. Nhắc nhập tên bộ đệm và dỡ bỏ toàn bộ cấu trúc dữ liệu cho bộ đệm đó khỏi Emacs. Nếu bộ đệm đã thay đổi bạn sẽ có cơ hội lưu nó. Lệnh này không xoá tập tin liên hệ, nếu có.
C-x C-q
vc-toggle-read-only. Đặt thuộc tính chỉ-đọc hoặc đặt thuộc tính đọc-viết nếu nó đang là chỉ-đọc.

Giới thiệu về Emacs (tiếp1)

Bàn phím và bộ kí tự

Tất cả các lệnh của Emacs dùng bộ kí tự ASCII 8 bit.

Kí hiệu

C-x
Kí tự Control-x, với x là phím bất kì.
M-x
Kí tự Meta-x, với x là phím bất kì.
C-M-x
Kí tự Control-Meta-x, với x là phím bất kì.
RET
Phím return (thực ra là C-m).
SPC
Thanh khoảng trắng (space bar).
ESC
Phím escape, hay tương đương, C-[

Cấu trúc lệnh Emacs

Đối với Emacs, mỗi gõ phím (keystroke) thực ra là một lệnh, ngay cả các gõ phím đơn giản như các chữ cái Az: in các ký tự là lệnh điền chúng vào. Các ký tự không in (non-printing) là các lệnh soạn thảo, tức dùng để di chuyển con trỏ, cuộn văn bản, xoá hoặc sao chép văn bản, v.v.

Mỗi lệnh có một tên dài, như kill-line, delete-backward-char, hay self-insert-command. Các lệnh này được liên kết (bind) với một gõ phím để thuận tiện khi soạn thảo. Mỗi cặp gõ phím và lệnh được gọi là liên kết phím (key binding), hoặc gọi tắt là liên kết (binding).

Bộ các liên kết tạo thành bộ lệnh Emacs. Tuy nhiên, chúng có thể được mở rộng và được thay đổi tuỳ thích.

Các phím đơn

  • 95 ký tự ASCII in được, chúng liên kết với self-insert-command để được điền vào văn bản khi được gõ.
  • các ký tự điều khiển: C-a, C-b,…: 32 kí tự soạn thảo.
  • Metađể sử dụng thêm 128 ký tự ở nửa trên của ASCII cho các lệnh soạn thảo:
    • M-a, M-b,… (cũng có M-A là một kí tự riêng biệt, nhưng để giảm thiểu nhầm lẫn các kí tự meta chữ hoa được coi như các kí tự meta chữ thường tương ứng.)
    • C-M-a (tương đương với M-C-a),… (giữ ControlMeta đồng thời và gõ phím kia.)

Các phím tiền tố và tổ hợp

Lệnh tiền tố (prefix command) là một gõ phím đợi một kí tự khác được gõ, tạo thành một cặp gõ phím liên kết với một lệnh. Lệnh tiền tố thường nhóm các lệnh có liên hệ với nhau.

Các lệnh tiền tố tiêu chuẩn là:

C-c
Dùng cho các lệnh đặc hiệu cho các chế độ (mode) cụ thể.
C-h
Dùng cho các lệnh giúp đỡ.
C-x
Chủ yếu dùng cho các lệnh thao tác trên tập tin, bộ đệm và cửa sổ.

Một lệnh của lệnh tiền tố cũng có thể liên kết với một lệnh tiền tố khác.

Dùng các lệnh mở rộng

Đối với một người dùng cụ thể, có những lệnh hiếm khi được dùng, và khi cần có thể tra tên dài của lệnh đó (bằng cách dùng Info, hệ thống giúp đỡ trực tuyến của Emacs) và gõ nó trực tiếp.

Có một lệnh của Emacs có thể được dùng để thi hành lệnh khác bằng cách gõ tên dài của nó: M-x.

Tiền tố ESC

Phím ESC có thể được dùng thay cho Meta, đặc biệt là trong trường hợp bàn phím không có phím Meta hoặc phím Meta không sử dụng được. Điểm cần lưu ý là phím ESC không là phím chuyển (shift key) như Control hay Meta mà thực chất là một ký tự ASCII, do đó cần gõ nó riêng biệt (nếu giữ ESC lâu, nó có thể tự lặp lại như các phím khác). Thí dụ: M-a trở thành ESC a; C-M-f trở thành ESC C-f.

Có quá nhiều lệnh?

Người dùng không cần phải nhớ tất cả các lệnh mà chỉ cần học các lệnh cơ bản và một số lệnh nâng cao phù hợp với nhu cầu của mình.

Giới thiệu và hướng dẫn sử dụng Emacs

Giới thiệu và lịch sử

GNU Emacs là gì

GNU Emacs là trình soạn thảo văn bản

  • tự do: tự do sao chép và phân phối lại
  • có thể chạy trên nhiều hệ điều hành
  • có thể mở rộng: không chỉ thay đổi các xác lập cá nhân mà còn có thể tạo ra những chức năng mới.

GNU Emacs không là gì

GNU Emacs không là trình xử lý từ WYSIWYG (thấy gì được nấy).

Các loại Emacs

Thực ra Emacs là tên của một họ các trình soạn thảo văn bản. Emacs nguyên thuỷ được viết bằng ngôn ngữ lập trình của trình soạn thảo văn bản TECO, và chạy trên DEC PDP-10 và -11.

Emacs đầu tiên cho các máy Unix là Gosling Emacs, sau này được thương mại hoá với tên Unipress Emacs. GNU Emacs được viết bởi Richard Stallman, tác giả chính của TECO Emacs nguyên thuỷ.

Yêu cầu chính để một trình soạn thảo văn bản được gọi là “emacs” là nó có thể được mở rộng đầy đủ với một ngôn ngữ lập trình thực, không đơn thuần là một ngôn ngữ macro. Đối với GNU Emacs, ngôn ngữ này là Lisp.

Về bài viết này

Bài viết này hiện dựa gần như hoàn toàn trên bản “A Tutorial Introduction to GNU Emacs” (http://www.lib.uchicago.edu/keith/tcl-course/emacs-tutorial.html) bởi Keith Waclena – nhưng có thể được bổ sung và mở rộng sau này. Bản mới nhất của tài liệu này có ở http://labang.sourceforge.net.

Cài đặt và bật ssh cho Centos 6 (5 cũng tương tự thì phải)

Để  cài đặt ssh trên Centos6 bạn cần cài đăt các gói cần thiết sau đó bật các service lên để có thể sử dụng một máy khác thực hiện các lệnh thông qua màn hìn Teminal.

 

Bạn cần cài đặt 2 gói là Opensshd-clients (cho ứng dụng client) và Openssd-server (cho chạy trên server).

 

Chuyển qua quyền root gõ:

 

# yum -y install openssh-server openssh-clients

 

(-y dùng để tự động Yes khi nó hỏi bạn có muốn download hay cấu hình gì không, để tránh vất cả thì đặt Yes).

 

Tiếp tục sử dụng các lệnh sau để start service:

# chkconfig sshd on

— Lệnh này dùng để cấu hình cho ssh luôn khởi động cùng hệ thống.


# service sshd start

 

— Bắt đầu Start dịch vụ này.

 

 

Khi cài xong bàn hoàn toàn có thể sử dụng chúng để giao tác từ máy này qua máy kia thông qua lệnh:

 

# ssh username@ip

–username: tên user của máy cần ssh

–ip : là địa chỉ ip của máy đó

 

Cài đặt LAMP và phpMyAdmin

Bật phần mở rộng dom cho PHP:

  yum install php-xml

Khởi động lại dịch vụ:

   service httpd restart

Chữa lỗi /phpmyadmin không chạy khi đã cài đủ sql và phpmyadmin:
Qua quyền root gõ:
   ln -s /usr/share/phpMyAdmin /var/www/html

http://docs.oseems.com/general/web/phpmyadmin/enable-login-without-password

// file phpMyAdmin

http://www.if-not-true-then-false.com/2012/install-phpmyadmin-on-fedora-…

Đàn ông cần phải có tiền !!!

Đàn ông cần phải có tiền !!!

1. Khóc trong xe Lexus hơn cười trên xe đạp?

Có người nói, anh ta không bao giờ để cho người yêu phải đi làm kiếm tiền. Bởi lỡ một ngày đẹp trời, anh ta đặt bàn ăn ở nhà hàng, mua sẵn vé xem phim, hẹn hò cô người yêu đi ăn tối và xem phim. Nhưng tối đó công ty cô ấy phải tiếp khách, sếp muốn cô ấy đi cùng. Thế thì bữa tối lãng mạn của đôi tình nhân bị hủy bỏ ư? Sếp đâu có lỗi, công ty kinh doanh cần phải giữ khách và kiếm lợi nhuận. Cô người yêu đâu có lỗi, cô đi làm việc chứ đâu phải bỏ người yêu đi ăn uống hát hò với kẻ khác?

Thế nhưng để không đối mặt với những tình huống ấy, đàn ông chỉ còn cách là kiếm thật nhiều tiền, nhiều bằng hai người. Đó là cách để đàn ông phòng bị trước những tình cảnh trớ trêu của xã hội.

Có người phải lên đời xế hộp, dù công sở gần chỉ chạy xe máy dăm phút là tới, thậm chí đi bộ cũng được. Là bởi cô người yêu đòi có xe đưa rước nàng. Nếu không có xế hộp, buổi tối có thể là một anh chàng nào đó sẽ tới chở cô và tiễn về, thay bạn.

Cô ấy có quá quắt không? Cô ấy chỉ không muốn đi bộ hoặc ngồi xe máy bụi bặm thôi mà? À mà không, cô ấy chỉ không muốn đi nhờ xe đồng nghiệp thôi mà. Nhưng đó là thực tế tàn nhẫn đối với đàn ông.

Và nhiều gia đình, dù đã kết hôn rồi, nhưng vợ chồng mỗi người một ngả do kiếm sống, công việc lệch giờ hoặc làm tại những thành phố xa nhau. Vợ của bạn tôi được cử ra nước ngoài trong một chương trình giao lưu, kéo dài hai năm. Dù cô ấy ra nước ngoài cũng làm giảng viên đại học, nhưng ông chồng không vui vẻ hãnh diện chút nào. Ông ấy nói, giá như ông ấy có đủ tiền nuôi vợ, để gia đình không có những năm chia cắt.

Ai mà chẳng phải vật lộn với cuộc sống. Nhưng có những lúc, tiền đã sát thương tình yêu.

Tôi thường đưa ra một trắc nghiệm vui, hỏi những đôi yêu nhau: Nếu lấy anh ấy, nếu một mai nghèo khó thì em có chịu húp cháo cùng anh ấy không? Tất nhiên nàng nói rằng OK, chẳng vấn đề gì.

Và tôi sẽ quay sang hỏi người con trai: Thế còn bạn, nếu đến lúc ấy, bạn có đành lòng nhìn người phụ nữ ở bên cạnh mình húp cháo qua ngày không?

SDVkH Đàn ông cần phải có tiền !!!

2. Trò chơi tình ái:

Giống một bộ phim tôi từng xem trên HBO, tên là “Lời đề nghị khiếm nhã”, câu chuyện về một cặp vợ chồng trắng tay ở sòng bạc và bỗng dưng, một tỷ phú đưa ra lời đề nghị đổi một đêm của người vợ này lấy một triệu đô.

Và sự lựa chọn giờ đây là người chồng, một triệu đô thật nhiều, có thể giải quyết mọi khó khăn ngay trước mắt đôi vợ chồng trẻ đang kẹt tiền. Người vợ nghĩ, đổi tiền lấy tình là mình hy sinh cho tình yêu. Còn người chồng sẽ nghĩ, đây không phải là vấn đề tiền bạc, đây là thể diện của đàn ông.

Đổi thể diện lấy tiền, bao nhiêu là xứng đáng?

Nếu người yêu bạn một ngày nhận được một lời đề nghị như thế, một đêm và một tỷ đồng, bạn sẽ phản ứng ra sao?

Người đàn ông đầu tiên nói, nếu một tỷ một đêm, nếu cô ấy đồng ý, tôi sẽ nhắm mắt lại, để cho cô ấy có một tỷ đó. Bởi nếu cô ấy đã ngầm chấp thuận, thì dù tôi có phản đối, biết đâu cô ấy vẫn lén lút theo người đàn ông kia. Vậy thế thì hãy để cô ấy tự quyết định. Tôi không tham gia vào thương vụ “tình một đêm” kia. Và tôi cũng không cầm một đồng nào từ trong tỷ đồng ấy. Tất cả là việc riêng của cô ấy.

Nói thế, nhưng nếu sau khi từ “một đêm một tỷ” quay về, hai người này sẽ nhìn mặt nhau thế nào, tôi không biết chắc.

Người đàn ông thứ hai nói, nếu có ai đó chịu bỏ một tỷ ra chỉ để được một lần cùng người phụ nữ, vậy chắc chắn đó là người rất giàu, và rất yêu cô ấy. Nên tôi sẽ khác, tôi không chỉ đồng ý cho người yêu đi ngủ cùng người đàn ông kia, tôi còn chia tay để cô ấy có thể cả đời đi theo anh ta. Có lẽ, anh ta sẽ là người có điều kiện giúp cô ấy hạnh phúc, đầy đủ, mãn nguyện hơn tôi. Còn tôi, sẽ dùng một tỷ để gây dựng một sự nghiệp riêng mình.

Người đàn ông thứ ba lắc đầu, không chấp nhận bất cứ cái giá nào. Anh nói, nếu lời đề nghị là một trăm nghìn đồng đổi lấy một đêm, tức là xỉ nhục bạn, còn lời đề nghị một tỷ một đêm thì lại được chấp thuận. Vậy phải chăng cứ nhân tiền lên gấp nghìn lần thì một sự xỉ nhục sẽ trở thành một sự ngọt ngào được chấp thuận? Tôi không cần một tỷ đồng ấy! Tôi cần tình yêu, tôi cần người tôi yêu, không giá nào đổi được!

Tôi tưởng cô bạn gái của người đàn ông thứ ba sẽ cảm động, rưng rưng. Nhưng không, cô đứng lên cười khẩy:

– Tôi sẽ tự đi theo người đàn ông một tỷ một đêm. Tôi chắc chắn sẽ yêu người đàn ông vì tôi mà bỏ ra một tỷ của chính mình, chứ tôi không thể tiếp tục yêu người đàn ông sẵn sàng hy sinh một tỷ của… người khác vì tôi!

Có lẽ, cả ba người đàn ông đều sững sờ.

Hóa ra, vì thế đàn ông cần phải có tiền. Không phải là tiền để bản thân mình sung sướng, người yêu mình sung sướng. Mà tiền là để người yêu mình đừng bị cám dỗ bởi tiền của những thằng đàn ông khác!

oOo
Đúng hay sai tùy cảm nhận, suy nghĩ của mỗi người.
Nhưng mà mình thấy cũng … hơi hơi đúng !!!
oOo

Tâm sự của một ‘người lính hèn nhát’

Đừng để những người trẻ tuổi phải chịu đựng những điều ghê rợn của chiến tranh. Nó tàn nhẫn, phi nhân tính và đau đớn vô cùng…

Trong bài “Lối đi” tôi viết về đêm cuối của đời sinh viên. Có nghĩa là đã chuẩn bị tinh thần tốt nhất để lên đường. Nhưng khi đến quân trường nhìn những khối bộ đội hàng ngũ chỉnh tề ngay ngắn đi đều bước, hát vang vang bài quân hành giữa chang chang nắng, mồ hôi đẫm áo, mặt sạm đen hốc hác.. đã choáng. Cái tự ti mặc cảm thường ngày trốn kỹ trong gã tiểu tư sản vờ vịt dũng cảm can trường, nay lú mặt ra ko chút trơ trẽn. Thời gian quân trường qua mau. Khoảng 20% tân binh đào ngũ vì ko chịu nổi gian khổ. 80% ra trận nhưng thực tình, rất ít trong số 80% kia đủ tư cách NGƯỜI CHIẾN SỸ.

Tới làng 9, Lộc Tấn, Lộc Ninh. Làng chiến đấu chông cắm tua tủa, giao thông hào chằng chịt, du kích vừa đi đánh nhau về, áo còn thấm máu. Dân đi sơ tán gần hết, làng xóm hầu như chỉ còn bộ đội & du kích. Biên giới còn khá xa, tiếng súng chỉ văng vẳng vọng về nhưng đêm đầu tiên trên đất bazan, tôi ko sao ngủ được. Thỉnh thoảng những chiếc Đot, GMC, Gat, Zil 130.. lặc lè chở tử sĩ về ngã ba Chầm Chậm. Nghĩa trang có gần 3.000 liệt sỹ chỉ sau 4 tháng khai trương. Sáng hôm sau, khoảng 1/4 tân binh bỏ trốn (Đợt NVQS đó toàn thanh niên tình nguyện nhập ngũ, đa số là sinh viên).

Anh cán bộ quân lực e 205 ái ngại khi đọc phần trích ngang lý lịch của tôi: “Cậu về e bộ nhé? Ở dưới đơn vị nguy hiểm lắm. Tôi ko coi thường cậu nhưng phải có trách nhiệm trước gia đình cậu!” (Khi đó Ba tôi đang ở Quảng Ninh chuẩn bị đối phó giặc Tàu, anh Hai tôi đang ở chiến trường Lào) Tôi cương quyết: “Tôi nhập ngũ là để được chiến đấu chứ ko phải để ngồi bàn giấy. Anh ko giải quyết, tôi sẽ gặp cấp trên của anh”.

Đêm đầu tiên trên chốt lại thức trắng vì sợ. Ko thể lý giải được nỗi sợ hãi lạ kỳ đó. Đội hình phòng ngự rất thưa mỏng. 10 – 15m mới có 1 ụ chiến đấu. Vương trong mùi thuốc súng đắng nghét là mùi máu tanh & xác chết phân hủy. Rừng già thâm nghiêm & âm u. Tiếng sột soạt nào cũng khiến nổi da gà, lạnh toát cả sống lưng, đầu óc hoang mang lo lắng cùng cực. Mờ sáng hôm sau được nếm trận đầu. Bọn Polpot bò vào sát chiến hào, vượt qua bãi mìn dày đặc phía trước. Tôi vẫn đứng trân trân trong chiến hào suốt từ chập tối qua, súng cầm rất chắc (vì sợ quá) vậy mà khi địch ào tới tôi cứ như hóa đá. Mất hết mọi phản xạ, hoàn toàn vô hồn, điếng lặng. Mất dăm phút mới giương súng lên, bóp cò.. nhưng quên mở khóa an toàn. Thấy súng mình im re, cò súng cứng ngắc tôi lại càng thêm rối trí, suýt bật khóc. Nhìn quanh, đồng đội nhảy cả lên trên chiến hào dũng mãnh chiến đấu, họ bắn chi viện cho tôi, cho những người đã hy sinh.. mà xấu hổ tột cùng. Suốt ngày hôm đó tôi rúc sâu xuống hầm ko dám nhìn ai vì nhục nhã. Chính trị viên quấn cho điếu thuốc rê, ân cần trò chuyện: “Lần đầu tiên tớ cũng vậy, đái cả ra quần cơ đấy. Cậu khá lắm, ko nằm bẹp xuống hào (Thực ra tôi vì sợ quá nên quên cả việc nằm bẹp xuống) đã là điều rất đáng nể. Từ trận sau, tin rằng cậu sẽ cứng cỏi hơn”.

Trận sau còn tệ hại hơn. Nổ súng khí thế lắm, nhưng ko hề thấy địch, đạn bay hết lên trời. Họp trung đội anh em kiểm điểm tối tăm mặt mày. “Mỗi viên đạn AK có giá bằng 5 cân thóc. Dù bạn viện trợ nhưng đâu phải cho không? Con cháu ta phải trả nợ sau này. Bắn kiểu ấy là vô trách nhiệm với đất nước.. Hoặc: Nổ súng bừa bãi chỉ là cách tự trấn an bản thân của những kẻ bạc nhược. Quân đội đã dạy cách bắn điểm xạ ngắn, tuyệt nhiên ko được bắn khi chưa ngắm chính xác. Nổ súng như đ/c .. chỉ khiến địch coi thường quân đội chúng ta.. Hoặc: Mỗi thùng đạn đưa lên tới chốt phải đổi bằng máu của thanh niên xung phong & du kích. Người chiến sỹ phải có trách nhiệm với viên đạn trong tay mình…”

Đêm đó tôi phảng phất ý nghĩ tự sát. Đang lùng nhùng bởi những ám ảnh tiêu cực thì địch lại vào. Vỡ chốt! Tiểu đội 3 hy sinh sạch sẽ. Trung đội trưởng của tôi cụt cả 2 chân vẫn bò lên nóc hầm bắn điềm tĩnh chững chạc, miệng động viên chúng tôi: “Đừng bận tâm tới anh. Cứ bình tĩnh mà chiến đấu. Bằng mọi giá phải giữ lấy chốt. Còn 1 người thì chốt phải còn!” Hôm trước, anh là người phê bình tôi rát nhất. Hôm nay, tôi vừa bắn vừa lau nước mắt. Tôi nhận ra con người hèn hạ, ích kỷ & phù phiếm của mình, cái TÔI đáng khinh bỉ & giả dối mà tôi đeo gán lên mình bấy lâu.. Ý nghĩ đó vụt qua trong đầu nhanh như tia chớp nhưng mạnh mẽ vô ngần. Trong vô thức tôi nhảy lên khỏi hầm đứng bắn như 1 chiến binh dạn dày từng trải.

Sinh nhật tuổi 19, tôi được phong hạ sỹ. Trưa hôm đó hành quân qua 1 công xã mà bọn polpot vừa rút chạy (12/1978) thì chứng kiến cảnh kinh hoàng: Mấy chục đầu người còn ứa máu cắm trên hàng rào, phía dưới ghi bằng chữ Việt: Chào đón bộ đội Việt Nam! Mệnh lệnh: “2 trung đội đào huyệt sâu 1m. Trung đội 2 thu nhặt xác, cố gắng lắp đúng xác với đầu rồi tẩn liệm chôn cất. 30′ tất cả phải làm xong nhiệm vụ!” Như 1 cái máy, tôi nhổ khỏi cọc rào cái đầu 1 cô gái tóc cắt rất ngắn. Vừa ôm cái đầu trong tay bất giác tôi nôn thốc nôn tháo, tay chân bủn rủn, miệng lảm nhảm những gì ko ai nghe rõ.. Cứ thế đi 1 mạch vào rừng. Anh em chạy theo kéo lại. Tôi gần như hóa điên. Đã 31 năm nhưng ám ảnh đó ko buông tha. Lâu lâu lại bật dậy giữa đêm, toát mồ hôi lạnh.

Tham dự nhiều trận nhưng khi lần đầu tiên chính tay mình bắn hạ 1 thằng polpot (thằng này bắn chết 2 đồng đội của tôi rồi tử thủ sau gò mối. Tôi xin được chính tay mình trả thù) thì tôi ko dám nhìn mặt nó. Anh em bảo: “14 phát đạn ghim vào đầu & ngực nó. Mày bắn chuẩn lắm!” nhưng suốt cả tuần tôi bỏ cơm & hầu như ko ngủ được. Cái cảm giác ‘GIẾT NGƯỜI’ rất khủng khiếp, dù đó là giết giặc.

Đừng để những người trẻ tuổi phải chịu đựng những điều ghê rợn của chiến tranh. Nó tàn nhẫn, phi nhân tính & đau đớn vô cùng. Làm chai sạn tâm hồn, kết trong tim óc những cực đoan hằn học cay độc. Nhớ mãi 1 câu hát của cố nhạc sỹ Xuân Hồng: “Bởi chiến tranh đâu phải trò đùa”

Tổn thương về tinh thần, tình cảm đối với người lính sau chiến tranh mới là điều đáng nói nhất. Di chứng nó để lại cho con người rất khó để phân tích, thống kê, diễn đạt nhưng là người trong cuộc nên tôi cảm nhận khá rõ ràng, chính xác.

Nếu hô hào chiến tranh như 1 cách biểu thị lòng yêu nước thì có gì đó vừa khôi hài & nhẫn tâm. Khôi hài bởi người ta chưa biết như thế nào là chiến trận sa trường. Nhẫn tâm bởi vì chiến tranh luôn là thần hủy hoại (Sinh mạng, sự vui sống, của cải vật chất & những giá trị tinh thần cao đẹp khác).

Chiến tranh, nói như 1 nhà thơ:

“Nơi cao nhất thử lòng ta yêu đất nước”

Nhưng liệu mấy ai tự nguyện nhảy xuống bể acid để chứng minh giá trị vàng ròng của mình?

Chỉ những tên lính đánh thuê (lương lính ngụy bằng 4 cây vàng/tháng) lưu manh, vô học cùng lũ lái súng mới mong mỏi chiến tranh mà thôi.

Tất nhiên, khi đất nước lâm nguy thì cả nhà tôi sẽ hiên ngang ra trận. Nhưng đó là chuyện chẳng đặng đừng. Xin chớ cổ xúy bạo lực, xung đột. Làm người chiến sỹ khó hơn chơi game khá nhiều. Các bạn ạ.

Thân mến!

LÊ VŨ (OPERA)

Đừng yêu nước bằng máu của người khác!

Những người gác biển không cần những người “đứng” sau lưng bằng những bài viết răn dạy về tình yêu nước trên Facebook.

Bài vết của blogger Bao Anh Thai

Ông ngoại tôi từng cầm mác búp đa, lưng dắt lựu đạn, cắt rào rào kẽm gai công đồn Pháp cùng với những người lính Nhật Bản theo Việt Minh thời chín năm. Chiến thuật của đơn vị ông rất đơn giản: cắt rào, ném lựu đạn vô lô cốt và xung phong vào đánh giáp lá cà khi quân Pháp còn chưa hết choáng váng vì tiếng nổ. Ông tôi không kể về những tổn thất của đơn vị.

Khi tôi hỏi ông tôi là trong đơn vị có bao nhiêu lính Nhật, và sau chín năm, bao nhiêu người trong số họ trở về tổ quốc. Ông trả lời “có chín người, sau chín năm, chẳng có ai trong họ còn sống.” Tôi không biết ngoài chín người Nhật đó, bao nhiêu người khác trong đơn vị ông đã chết. Tôi hỏi ông: “đơn vị ông không phải là đặc công (mà thực ra trong thời chín năm, khái niệm đặc công chưa có), sao các ông không dùng bazooka hoặc ít nhất là súng máy áp chế khi công đồn?” Ông trả lời rất đơn giản là đơn vị ông không có bất kỳ vũ khí hỏa lực mạnh nào. Họ chỉ có 3 súng trường Nhật cho một tiểu đội và những người Nhật Bản tình nguyện chỉ dùng kiếm samurai của họ.

Thời kháng Mỹ, ông tôi động viên con cái đi ra trận. Hai dì tôi đi thanh niên xung phong khi mười sáu tuổi. Sau chiến dịch Đường 9 Nam Lào và Quảng Trị, lần lượt 2 dì về nhà vì mất sức. Cả hai dì đều trọc đầu như sư đến nhiều năm sau tóc mới mọc lại. Bác tôi, học ở Nga về làm cán bộ giảng dạy Bách Khoa nhưng rồi lại tình nguyện nhập ngũ. Tây Nguyên, Đường 9, Quảng Trị – giấy chứng nhận dũng sỹ diệt Mỹ và dũng sỹ diệt xe cơ giới gấp phồng túi ngực (theo đúng nghĩa đen). Khi từ miền Bắc vào Nam, bác tôi mang theo 90 viên đạn của cây súng bắn tỉa. Khi giải ngũ, bác đã bắn 52 viên, trong đó 4 viên trượt. Bác tôi và người em kết nghĩa đã bỏ cả ngày trời bò qua cả một cái trảng lớn nằm giữa vùng ranh giới giữa hai bên để bắn một phát đạn với tầm gần 900 m làm bị thương viên tướng chỉ huy một sư đoàn quân đội Sài Gòn trong cuộc họp bộ tham mưu của sư này hồi Quảng Trị năm 1972. Bác tôi là một trong 16 người cuối cùng rời thành Quảng Trị bơi vượt sông Thạch Hãn và tên của bác tôi có trong viện Bảo tàng Quân đội. Những người chỉ huy trận Quảng Trị nay đang lãnh đạo Bộ Quốc phòng đều nhớ đến bác tôi.

Ông ngoại tôi giờ đã 94 tuổi, bác và các dì tôi đều đã về hưu. Không một ai đại ngôn về lòng yêu nước. Thậm chí, tôi chưa bao giờ nghe từ đó trong các câu chuyện của họ. Đơn giản là họ làm những điều đó.

Khi tôi kể cho bác tôi về một cuốn nhật ký nổi tiếng của một người lính trẻ tuổi hai mươi và ngỏ ý muốn mua một cuốn tặng bác. Bác tôi từ chối và nói với tôi rằng: “con ạ, nếu mỗi người lính khi ra trận, thay vì viết mà chỉ cần bắn bị thương một kẻ thù thôi, thì miền Nam có thể giải phóng rất lâu trước 1975”. Khi tôi kể cho bác về những chuyện gần đây trên Biển Đông, bác lẩm nhẩm tính rồi nói “Ác liệt như hồi 72 mà người ta mới vét đến cán bộ tuổi 35. Giờ, nếu không phải đánh lớn trên bộ, chắc bọn con (tôi và các anh con bác) không bị động viên đâu!”

Tôi viết những dòng này vì tôi ngán đến tận cổ những người ngồi trong phòng máy lạnh mà mọi thứ họ viết ra chỉ là chỉ trích. Tôi ngán đến tận cổ việc họ tự cho mình là đang nói lên tiếng nói của nhân dân để viết về lòng yêu nước. Họ chỉ trích, họ mách nước cho Nhà nước làm việc A việc B dù họ biết rằng nếu có nổ súng thì họ sẽ không gửi email gọi con họ bỏ học ở nước ngoài để về nhập ngũ. Nghĩ đi nghĩ lại, tôi tự hỏi và mãi vẫn không tìm được chỗ nào cho thấy họ đang đại diện cho nhân dân (những người nông dân như ông ngoại tôi, những cán bộ về hưu như bác và các dì tôi) để nói những từ đại ngôn đó.

Những người đại ngôn đó đòi minh bạch về thông tin, đòi nhà nước để cho phải báo cáo này nọ nhưng họ quên mất một điều là từ năm 79 tới những năm 85-86, có ngày nào mà nhân dân không nghe đài thống kê về số lượng đạn pháo bắn sang lãnh thộ Việt Nam, ngày nào mà Thông Tấn Xã VN không dịch những bản tin đó sang tiếng Anh cho thế giới biết? Cả thế giới đều biết, nhưng chỉ có những thanh niên Việt Nam 17-18 phải bỏ trường học mà lên đường giữ nước, và cả nước phải đói ăn đến queo quắt để chiến sỹ tiền duyên có đạn mà bắn.

Năm 88, chiến sỹ hải quân hy sinh trên đá ngầm đảo Trường Sa vì tinh thần yêu nước và hy sinh họ có thừa nhưng họ không có vũ khí để chống lại tàu lớn của Trung Quốc.

Những người gác biển không cần nhân dân “đứng” sau lưng bằng viết bài răn dạy nhân dân và nhà nước về tình yêu nước trên Facebook. Những người gác biển cần vũ khí, cần máy bay, cần tên lửa, cần tàu chiến, tàu ngầm. Và những thứ đó chỉ có được khi có tiền. Nếu có viết, hãy kêu gọi nhà nước phát hành công trái mua vũ khí, và nếu có phát hành, thì hãy mua công trái. Đừng để con em nhân dân đổ máu để cho các vị thấy mình là yêu nước.

Nhân đây, để cho những người nào thích những thứ dân chủ và yêu nước lấp lánh phương Tây, tôi xin tặng các bạn một đoạn trong script của bộ phim “Gone with the wind” về lòng dũng cảm, yêu nước và suy nghĩ thực tế.

Chapter 2 Scarlett Meeting Butler

(Noon time, the gentlemen are gathering in the downstairs hall, talking about the war.)

Mr. O’HARA:We’ve borne enough insults from the “meddling Yankees. It’s time we made them understand we keep our slaves with or without their approval. Who’s to stop them right from the state of Georgia to secede from the Union.

MAN:That’s right.

Mr. O’HARA:The South must assert ourselves by force of arms. After we fired on the Yankee rascals at Fort Sumter, we’ve got to fight. There’s no other way.

MAN1:Fight, that’s right, fight!

MAN2:Let the Yankee’s be the ones to ask for peace.

Mr. O’HARA:The situation is very simple. The Yankees can’t fight and we can.

CHORUS:You’re right!

MANS:That’s what I’ll think! They’ll just turn and run every time.

MAN1:One Southerner can lick twenty Yankees.

MAN2:We’ll finish them in one battle. Gentlemen can always fight better than rattle.

MANS:Yes, gentlemen always fight better than rattle.

Mr. O’HARA:And what does the captain of our troop say?

ASHLEY:Well, gentlemen…if Georgia fights, I go with her. But like my father I hope that the Yankees let us leave the Union in peace.

MAN1:But Ashley…

MAN2Ashley, they’ve insulted us.

MANS:You can’t mean that you don’t want war.

ASHLEY:Most of the miseries of the world were caused by wars. And when the wars were over, no one ever knew what they were about.

Mr. O’HARA:Now gentlemen, Mr. Butler has been up North I hear. Don’t you agree with us, Mr. Butler?

RHETT BUTLER: I think it’s hard winning a war with words, gentlemen.

CHARLES:What do you mean, sir?

RHETT:I mean, Mr. Hamilton, there’s not a cannon factory in the whole South.

MAN:What difference does that make, sir, to a gentleman?

RHETT:I’m afraid it’s going to make a great deal of difference to a great many gentlemen, sir.

CHARLES:Are you hinting, Mr. Butler, that the Yankees can lick us?

RHETT:No, I’m not hinting. I’m saying very plainly that the Yankees are better equipped than we. They’ve got factories, shipyards, coal-mines… and a fleet to bottle up our harbors and starve us to death. All we’ve got is cotton, and slaves and …arrogance.

MAN:That’s treacherous!

CHARLES:I refuse to listen to any renegade talk!

RHETT:Well, I’m sorry if the truth offends you.

BẢO ANH THÁI