Vim - dòng bình luận bao quanh với nhân vật bình luận


27

Hôm nay tôi nhận ra rằng tôi thường thích xác định các phần trong mã của mình như vậy:

####################
# Helper Functions #
####################

Nhưng đó là tẻ nhạt để làm. Giả sử tôi có một dòng như thế này:

# Helper Functions #

Bộ vimtổ hợp phím ngắn nhất để bọc nó là #gì? Shift không được tính là tổ hợp phím trong thử thách này.

Các trường hợp thử nghiệm:

Input: "#test test test#"
Output:
################
#test test test#
################

Input: "#this is a nice block comment#"
Output:
##############################
#this is a nice block comment#
##############################

Input: "# s p a c e s must be supported a l s o#"
Output:
########################################
# s p a c e s must be supported a l s o#
########################################

3
Tôi đang bỏ phiếu để đóng câu hỏi này ngoài chủ đề vì "vim tổ hợp phím" về cơ bản có nghĩa là chạy các lệnh của IDE, như Ctrl - C hoặc Ctrl - R trong ST2. Đây không phải là mã hóa dưới mọi hình thức.
Tối ưu hóa

3
@Optimizer Vim là một ngôn ngữ hoàn chỉnh (ví dụ: bằng cách sử dụng macro) với một số cấu trúc mã hóa khác nhau và phương pháp chính để chỉnh sửa dựa trên động từ (hành động) một đối tượng (chuyển động). Hiện đã có một trang web phổ biến để chơi golf vim: www.vimgolf.com. (Nhưng tôi đồng ý rằng câu hỏi đặc biệt này khá nhàm chán)
Hjulle 24/2/2015

1
@Optimizer: có trang web SE nào phù hợp hơn câu hỏi có thể được chuyển đến không? Với ngôn ngữ macro / script rộng rãi của vim, một số người có thể coi nó là ngôn ngữ.
shearn89

1
@ shearn89 thù địch? Bạn đang nói về cái gì vậy? PPCG là trang web này.
Tối ưu hóa

2
Tại sao các IDE khác cũng không được phép nếu bạn có thể viết chương trình trong hệ thống macro của họ? Điều gì làm cho nó "không lập trình"?
Hjulle 24/2/2015

Câu trả lời:


40

11 8 7 tổ hợp phím

YpVkr#p

Yp - duplicate current line, leaving the cursor at the lower of the two
V - enter visual line mode
k - go up and select both lines
r# - replace every selected character with #. Leaves visual mode and leaves cursor at the upper line.
p - put the yanked line (the original) on the next line.

(cảm ơn tay nắm cửa đã nhắc nhở Y = yy)


3
Thay thế yybằng Yđể lưu một nhân vật.
Doorknob

2
Ồ, rlệnh đó rất mạnh
ngay lúc

10

16 15 14 tổ hợp phím

Yp
:s/./#/g
<cr>
YkP

Cách tiếp cận đơn giản: sao chép dòng, thay thế tất cả các ký tự #, sao chép kết quả và dán nó ở trên.

Tôi đang đếm P:như một lần nhấn phím (thay vì hai lần cho Shift+ phoặc Shift+ ;). Điều đó đang được nói, câu hỏi chỉ định để đếm "lệnh", trong đó tôi không chắc làm thế nào để đếm thay thế.


Nhận xét tương tự như trên câu trả lời của @ RCrmn: Thay thế yybằng Yđể lưu một ký tự.
Doorknob

Tôi tin rằng đó thực sự là 14 lần nhấn phím, vì bạn phải nhấn Intro để thực thi lệnh thay thế
rorlork 23/2/2015

@rcrmn ơi, bắt tốt quá.
Martin Ender
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.