w3m의 단일 키에 "2M"을 바인딩할 수 있습니까?

w3m의 단일 키에 "2M"을 바인딩할 수 있습니까?

누르면 첫 번째 외부 브라우저가 실행되고 M두 번째 브라우저가 실행됩니다. 내장 명령을 다른 키에 바인딩하는 것은 쉽지만, 두 번째 명령을 다른 키에 바인딩하는 것이 가능합니까?w3m2MEXTERN

답변1

사용하는 대신외부 브라우저(~/.w3m/configs에서). 이상한 단축키를 사용해야 하고 각 단축키가 2M, 3M, 4M...etc 또는 2-Esc-Shift-M, 3-Esc-Shift-M, 4-Esc-Shift-M 등의 기능을 기억하기 어렵습니다. . 등. 합계도 9개로 제한됩니다.

키맵 파일($EDITOR ~/.w3m/keymap)

여기 몇 가지 예가 있어요.

# EXTERN_LINK = under cursor
# EXTERN      = current page

# yank url to clipboard
keymap  yy      EXTERN_LINK 'tmux set-buffer'
keymap  YY      EXTERN      'tmux set-buffer'
keymap  yx      EXTERN_LINK 'printf %s | xsel -b'
keymap  YX      EXTERN      'printf %s | xsel -b'

# open url in gui browser
keymap  xw      EXTERN_LINK '$BROWSER'
keymap  XW      EXTERN      '$BROWSER'
keymap  xn      EXTERN_LINK '$BROWSER_PRIVATE'
keymap  XN      EXTERN      '$BROWSER_PRIVATE'

# macros for smart search
keymap  sd      COMMAND "TAB_GOTO https://duckduckgo.com/lite/; NEXT_LINK; GOTO_LINK; SUBMIT"
keymap  sg      COMMAND "TAB_GOTO https://google.com; GOTO_LINE 6; NEXT_LINK; GOTO_LINK; SUBMIT"
keymap  sy      COMMAND "TAB_GOTO https://yewtu.be; NEXT_LINK; GOTO_LINK"
keymap  so      COMMAND "TAB_GOTO https://search.yahoo.com; GOTO_LINE 19; NEXT_LINK; GOTO_LINK"

매크로를 사용하여 설정을 전환하세요.\N줄 번호를 숨기거나 표시합니다. 더 많은 선택$w3m - 표시 옵션

keymap  \\\?    COMMAND "HELP; SEARCH ^User-Defined; CENTER_V"            # show user custom hotkeys binding
keymap  \\\f    COMMAND "HELP; SEARCH ^Input Line Editing Mode; CENTER_V" # show field hotkeys binding
keymap  \\\c    COMMAND "SET_OPTION color=toggle ; RESHAPE"
keymap  \\\u    COMMAND "SET_OPTION mark_all_pages=toggle ; RESHAPE" # Treat URL-like strings as links in all pages
keymap  \\\l    COMMAND "SET_OPTION display_link_number=toggle ; SET_OPTION show_lnum=toggle ; RESHAPE" # toggle hinting mode / line numbers
keymap  \\\h    COMMAND "SET_OPTION display_link_number=toggle ; RESHAPE" # toggle hinting mode
keymap  \\\n    COMMAND "SET_OPTION show_lnum=toggle ; RESHAPE"           # toggle line numbers
keymap  \\\b    COMMAND "SET_OPTION display_borders=toggle ; RESHAPE"     # toggle table borders
keymap  \\\i    COMMAND "SET_OPTION display_image=toggle ; RELOAD"        # toggle image display
keymap  \\\e    COMMAND "SET_OPTION user_agent='' ; RELOAD"               # empty user agent
keymap  \\\A    COMMAND "SET_OPTION user_agent='Opera/9.80 (S60; SymbOS; Opera Mobi/SYB-1107071606; U; en) Presto/2.8.149 Version/11.10' ; RELOAD"

단순한 한 줄보다 더 복잡하다면 스크립트를 작성할 수도 있습니다.

# yank page title
keymap  \\\y    EXTERN_LINK ~/.w3m/cgi-bin/yanktitle_cursorurl.cgi  # yank title (cursor url)

예를 들어:$Editor~/.w3m/cgi-bin/yanktitle_cursorurl.cgi

#!/usr/bin/env sh
# DESC:   yank page title to X11 clipboard and tmux clipboard
# DEPEND: w3m wget gawk (xsel or tmux)

# get url from w3m envoriment variables (e.g !env | less)
# URL="$W3M_URL"            # current page url
URL="$W3M_CURRENT_LINK"   # current link on cursor

# yank page title
TITLE=$(wget -qO- "$URL" | gawk -v IGNORECASE=1 -v RS='</title' 'RT{gsub(/.*<title[^>]*>/,"");print;exit}')
printf "%s" "$TITLE" | xsel -b
printf "%s" "$TITLE" | tmux load-buffer -

답변2

아니요, 불가능합니다. 앞의 숫자 인수를 기반으로 첫 번째, 두 번째 또는 세 번째 브라우저를 호출하는 EXTERN 명령은 하나만 있습니다. W3m에는 매크로 기능이 없습니다. 키 입력을 명령 시퀀스에 바인딩할 수 없습니다.

2M외부 매크로 도구를 사용할 수 있습니다. w3m에 있을 때 키를 보냅니다. 이를 위해서는 w3m에 있을 때 매크로 도구가 이를 알아야 합니다. 한 가지 방법은 항상 전용 화면이나 tmux 구성에서 w3m을 실행하는 것입니다.

관련 정보